机器学习——贝叶斯算法

一、贝叶斯公式

1.1 概率:

这里写图片描述

1.2 拉普拉斯平滑
拉普拉斯平滑为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计 
没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。 

假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计, 
但可以方便有效的避免零概率问题。 

公式 P ( y k | x ) = P ( y k ) P ( x i | y k )

上述是一个多项乘法公式,其中有一项数值为0,则整个公式就为0,显然不合理,
避免每一项为零的做法:  在分子+1、分母上加N样本种类(分子加k,分母加kN)

P ( y ) = ( | D y | + 1 ) ( | D | + N )

例如:一个班级: 男生(短头发)= 20 个
                男生(长头发)= 0 个
                女生(短头发)= 15 个
                女生(长头发)= 20 个

拉普拉斯平滑概率后 :
    男生(短头发)概率 = (20+1)/(55+4)  = 21/59
    男生(长头发)概率 = (0+1)/(55+4)   = 1/59
    女生(短头发)概率 = (15+1)/(55+4)  = 16/59
    女生(长头发)概率 = (20+1)/(55+4)  = 21/59

二、朴树贝叶斯分类原理

2.1朴树贝叶斯
基本流程:
确定特征属性--> 获取训练样本--> 对每个样本计算P(Ci)
--> 对每个特征属性 计算所有划分的条件概率P(X1,X1,,,Xn|Ci)
--> 对每个类别计算P(X|Ci)*P(Ci)--> 以P(x|yi)P(yi)最大项作为x所属类别
2.2 半朴素基贝本叶流斯程分类器
在朴素的分类中,我们假定了各个属性之间的独立,这是为了计算方便。 
虽然朴素贝叶斯的分类效果不错,但是属性之间毕竟是有关联的,某个属性依赖于另外的属性, 
于是就有了半朴素贝叶斯分类器: 

P ( c | x ) P ( c ) i = 1 d P ( x i | c , p a i )

在正式进行计算的时候,将另外一个依赖的属性加进去,计算量不会复杂太多, 
由于是基于“计数”,所以基本和朴素的计算方式类似。

训练数据集

# 大小 颜色 形状 标签
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 红色 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 红色 圆形

这里写图片描述

属性的依赖关系定义如下:
大小的依赖属性为:形状,且属性取值为大时依赖形状为圆形;
颜色不存在依赖属性;
形状的依赖属性为大小,且属性取值为圆形时依赖大小为大;
则先验概率 P(c) :
    P(c = 好果)= (4+1) / (10+2) = 5/12
    P(c = 一般) = (6+1) / (10+2) = 7/12 

带有依赖属性的类条件概率:
    P(大小=大 | c=好果,形状=圆形) = (2+1)/(3+2) = 3/5
    P(颜色=青色 | c=好果) = (0+1)/(4+2) = 1/6
    P(形状=圆形 | c=好果,大小=大) = (2+1) / (3+2) = 3/5
    P(大小=大 | c=一般,形状=圆形) = (1+1) /( 2+2) = 2/4
    P(颜色=青色 | c=一般) = (5+1)/(6+2) = 6/8
    P(形状=圆形 | c=一般,大小=大) = (1+1)/(3+2) = 2/5 

P(c=好果) * P(大小=大 | c=好果,形状=圆形) * P(颜色=青色 | c=好果) * P(形状=圆形 | c=好果,大小=大) 
    = 5/12 * 3/5 * 1/6 * 3/5 = 0.025

P(c=一般) * P(大小=大 | c=一般,形状=圆形) * P(颜色=红色 | c=一般) * P(形状=圆形 | c=一般,大小=大) 
    = 7/12 * 2/4 * 6/8 * 2/5= 0.0875

三、代码演示

sklearn.naive_bayes 提供了3个不同朴树贝叶斯算法

P ( C i | X 1 , X 2 , . . . X n ) = P ( X 1 , X 2 , . . . X n | C i ) P ( C i ) P ( X 1 , X 2 , . . . X n )

扫描二维码关注公众号,回复: 1891380 查看本文章
sklearn.naive_bayes.GaussianNB 高斯分布     #连续性
sklearn.naive_bayes.MutinomialNB 多项分布   #多项分布-发生频次
sklearn.naive_bayes.BernoulliNB 伯努利分布  #伯努利分布-(0,1)分布

四、总结

应用场景:
    文本分析(朴树贝叶斯应用最广泛的领域)
        文本分类
        垃圾邮件识别
        文本情感判别
    多分类场景

猜你喜欢

转载自blog.csdn.net/wsp_1138886114/article/details/80471061