机器学习之朴素贝叶斯分类

简介: 朴素贝叶斯分类所有贝叶斯分类都是基于贝叶斯定理,朴素贝叶斯分类是贝叶斯分类中运用广泛简单的一种,另外,它还基于特征条件独立假设。

朴素贝叶斯分类

所有贝叶斯分类都是基于贝叶斯定理,朴素贝叶斯分类是贝叶斯分类中运用广泛简单的一种,另外,它还基于特征条件独立假设。

贝叶斯定理

贝叶斯定理是计算条件概率的公式,条件概率即是事件B发生的前提下事件A发生的概率,记作 P(A|B) ,叫做事件B发生的情况下A的条件概率。

公式为: P(B|A)=P(A|B)P(B)P(A)

公式大致推导:
这里写图片描述

如图,有 P(A|B)=P(AB)P(B)

同样,也有 P(B|A)=P(AB)P(A)

于是, P(A|B)P(B)=P(B|A)P(A)

得到, P(B|A)=P(A|B)P(B)P(A)

另外,根据全概率公式还有 P(A)=ni=1P(Bi)P(A|Bi)

所以公式还可以写成:
P(B|A)=P(A|B)P(B)ni=1P(Bi)P(A|Bi)

特征条件独立假设

样本集(X,Y),每个样本x有n维特征,即 x=(x1,x2,...,xn) ,类标记集合 y=(y1,y2,...,yn)

此时为求最大的后验概率,根据贝叶斯定理和全概率公式有,

P(yk|x)=P(x|yk)P(yk)kP(yk)P(x|yk)

对于 P(x|yk)=P(x1,x2,...,xn|yk) ,假如 xi 可取的值个数为 Si 个,则参数个数为 kni=1Si

为降低参数规模,提出特征条件独立假设,它假设了n维特征 (x1,x2,...,xn) 互相独立,于是

P(x|yk)=P(x1,x2,...,xn|yk)=ni=1P(xi|yk) ,这时参数个数为 ni=1Sik

核心思想

基于特征条件独立假设,对给定的训练样本集来学习输入输出的联合概率分布,得到一个模型,然后给定一个输入x,利用贝叶斯定理求出后验概率最大的输出y。

即对于一个输入x,根据概率角度就是求x属于哪个类别的概率最大,也就是说 P(y1|x) P(y2|x) 、… P(yk|x) 中哪个后验概率最大就属于哪个类。

在特征条件独立假设下,有
P(yk|x)=ni=1P(xi|yk)P(yk)kP(yk)ni=1P(xi|yk)

其中分母对于所有分类 yk 都是相同的,所以其实就是求分子最大值对应的分类。即 ni=1P(xi|yk)P(yk) 值最大对应的分类。

期望风险

反应到期望风险上就是:将输入实例分配到后验概率最大的类中就是期望风险最小化。

极大似然估计&贝叶斯估计

对于训练样本,朴素贝叶斯法的学习其实就是估计先验概率和条件概率。极大似然估计是一种参数估计的方法,根据训练样本推算出参数的大概值,因为在极大似然估计的思想看来,某个参数能使样本出现的概率最大,那就把这个参数作为真实值。

由于极大似然估计可能会出现概率值为0的情况,这会影响到后验概率的计算结果,为解决这个问题引入贝叶斯估计,即在计算先验概率时在分子加一个 λ ,分母加一个 λ * 类别数,而计算条件概率时在分子加一个 λ ,分母加一个 λ * Si (其中 Si xi 可取的值个数)。当 λ 取1时称为拉普拉斯平滑。而当 λ 为0时即是极大似然估计。

大概流程

  1. 待分类项 x=(x1,x2,...,xn)
  2. 类别集合 y=(y1,y2,...,yn)
  3. 分别求 P(y1|x) P(y2|x) 、… P(yk|x) ,取最大的值对应的分类 yk
  4. 要求3就需要训练样本集(X,Y),再根据样本集完成下面5到7的操作。
  5. 根据极大似然估计或贝叶斯估计计算先验概率和条件概率,即 P(xi|yk) P(yk)
  6. 由特征条件独立假设后对应公式 ni=1P(xi|yk)P(yk) 求得最大值。
  7. 得到最大值对应的分类。

实现代码

from numpy import *

dataSet = [[0,0],[0,0],[0,0],[0,0],[1,0],[0,0],[1,0],[0,0],[1,0],[1,0],[1,1],[1,0],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]]
ySet = [0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1]


def train():
    dataNum = len(dataSet)
    featureNum = len(dataSet[0])
    p0Num = ones(featureNum)
    p1Num = ones(featureNum)
    p0Denom = 2.0
    p1Denom = 2.0
    p0 = 0
    for i in range(dataNum):
        if ySet[i] == 1:
            p1Num += dataSet[i]
            p1Denom += sum(dataSet[i])
        else:
            p0 += 1
            p0Num += dataSet[i]
            p0Denom += sum(dataSet[i])
    p0Rate = p0 / dataNum
    p0Vec = log(p0Num / p0Denom)
    p1Vec = log(p1Num / p1Denom)
    return p0Rate, p0Vec, p1Vec

p0Rate, p0Vec, p1Vec = train()
test = [1,0]
p1 = sum(test * p1Vec) + log(1.0 - p0Rate)
p0 = sum(test * p0Vec) + log(p0Rate)
if p1 > p0:
    print(1)
else:
    print(0)

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================
欢迎关注:

这里写图片描述

目录
相关文章
|
5月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
【10月更文挑战第5天】如何用贝叶斯方法来解决机器学习中的分类问题?
|
机器学习/深度学习 存储 自然语言处理
【机器学习】基于逻辑回归的分类预测
【机器学习】基于逻辑回归的分类预测
|
机器学习/深度学习 传感器 算法
机器学习入门(一):机器学习分类 | 监督学习 强化学习概念
机器学习入门(一):机器学习分类 | 监督学习 强化学习概念
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
919 0
|
机器学习/深度学习 程序员
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
【机器学习】朴素贝叶斯原理------迅速了解常见概率的计算
|
机器学习/深度学习 人工智能 算法
【人工智能】机器学习、分类问题和逻辑回归的基本概念、步骤、特点以及多分类问题的处理方法
机器学习是人工智能的一个核心分支,它专注于开发算法,使计算机系统能够自动地从数据中学习并改进其性能,而无需进行明确的编程。这些算法能够识别数据中的模式,并利用这些模式来做出预测或决策。机器学习的主要应用领域包括自然语言处理、计算机视觉、推荐系统、金融预测、医疗诊断等。
399 1
|
机器学习/深度学习 算法
【机器学习】简单解释贝叶斯公式和朴素贝叶斯分类?(面试回答)
简要解释了贝叶斯公式及其在朴素贝叶斯分类算法中的应用,包括算法的基本原理和步骤。
195 1
|
机器学习/深度学习
如何用贝叶斯方法来解决机器学习中的分类问题?
如何用贝叶斯方法来解决机器学习中的分类问题?
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案
在讯飞英文学术论文分类挑战赛中使用LightGBM模型进行文本分类的方案,包括数据预处理、特征提取、模型训练及多折交叉验证等步骤,并提供了相关的代码实现。
155 0

热门文章

最新文章