朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布,然后基于此模型,对给定的输入 x x x,利用贝叶斯定理求出后验概率最大的输出 y y y。
朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。
从数学角度,定义分类问题如下:
已知集合 C = y 1 , y 2 , . . . , y n C = {y_1,y_2,...,y_n} C=y1,y2,...,yn和 I = x 1 , x 2 , . . . , x n I = {x_1,x_2,...,x_n} I=x1,x2,...,xn,确定一个函数映射 y = f ( x ) y = f(x) y=f(x),使得任意 x i ∈ I x_i∈I xi∈I有且仅有一个 y i ∈ C y_i∈C yi∈C,使得 y i ∈ f ( x i ) y_i∈f(x_i) yi∈f(xi)成立。
其中, C C C叫做类别集合,其中每一个元素都是一个类别,而 I I I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) / P ( A ) P(B|A) = P(A|B)P(B) / P(A) P(B∣A)=P(A∣B)P(B)/P(A)
我们将B看作类别,A看作特征。即:
P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) / P ( 特征 ) P(类别|特征) = P(特征|类别)P(类别) / P(特征) P(类别∣特征)=P(特征∣类别)P(类别)/P(特征)
求得 P(类别|特征),我们就可以通过贝叶斯公式进行分类!
贝叶斯公式主要是描述了两种条件概率之间的关系,即P(AIB)与P(BIA)的关系。
P(A) 指事件A的先验概率,即在没有任何条件的情况下吗,对事件的基本判断。
P(AIB) 指后验概率,是在条件B之下事件A发生的概率。
P(BIA)/P(B) 相当于一个调整因子,使得先验概率经过调整得到后验概率,当这部分等于1,说明事件B的加入对于判断A的可能性没有帮助,先验等于后验。当它大于1,说明A发生的概率由于B的加入增大了。
已知数据:
长毛/短毛 | 粘人/不粘人 | 攻击性强/弱 | 胆子大/小 | 是否纯种 | 是否好养 |
---|---|---|---|---|---|
长毛 | 粘人 | 强 | 大 | 纯种 | 不好养 |
短毛 | 粘人 | 强 | 大 | 纯种 | 不好养 |
长毛 | 不粘人 | 强 | 大 | 纯种 | 不好养 |
长毛 | 粘人 | 弱 | 小 | 纯种 | 不好养 |
长毛 | 粘人 | 强 | 大 | 非纯种 | 不好养 |
短毛 | 不粘人 | 强 | 大 | 纯种 | 好养 |
短毛 | 粘人 | 弱 | 小 | 纯种 | 好养 |
长毛 | 不粘人 | 弱 | 大 | 非纯种 | 好养 |
短毛 | 粘人 | 弱 | 大 | 纯种 | 好养 |
长毛 | 粘人 | 弱 | 小 | 非纯种 | 好养 |
根据已知数据,判断 短毛、粘人、攻击性弱、胆子大的非纯种猫是否好养。
P(好养|短毛、粘人、攻击性弱、胆子大、非纯种) = P(短毛、粘人、攻击性弱、胆子大、非纯种|好养)*P(好养) / P(短毛、粘人、攻击性弱、胆子大、非纯种)
P(短毛|好养) = 3 / 5
P(粘人|好养) = 3 / 5
P(攻击性弱|好养) = 4 / 5
P(胆子大|好养) = 3 / 5
P(非纯种|好养) = 2 / 5
P(好养) = 1 / 2
P(短毛) = 4 / 10 = 2 / 5
P(粘人) = 7 / 10
P(攻击性弱) = 5 / 10 = 1 / 2
P(胆子大) = 7 / 10
P(非纯种) = 3 / 10
同理:
P(短毛|不好养) = 1 / 5
P(粘人|不好养) = 4 / 5
P(攻击性弱|不好养) = 1 / 5
P(胆子大|不好养) = 4 / 5
P(非纯种|不好养) = 1 / 5
P(不好养) = 1 / 2
P(短毛) = 4 / 10 = 2 / 5
P(粘人) = 7 / 10
P(攻击性弱) = 5 / 10 = 1 / 2
P(胆子大) = 7 / 10
P(非纯种) = 3 / 10
可得:P(好养|短毛、粘人、攻击性弱、胆子大、非纯种) > P(不好养|短毛、粘人、攻击性弱、胆子大、非纯种)【只比较分子即可】
因此,可得 短毛、粘人、攻击性弱、胆子大的非纯种猫 好养。
其实朴素贝叶斯算法假设每个特征之间是相互独立的,这是算法的使用前提。朴素指的就是这一前提。
优点:算法逻辑简单,易于实现;分类时,消耗时间空间资源少。
缺点:朴素贝叶斯算法的前提条件是特征相互独立,但是在实际情况中,特征之间往往不会那么理想,特征数较多或者特征之间相关性较大时,分类效果不会很好。
因此,**当特征之间的相关性较小是,我们可以忽略其相关性而使用朴素贝叶斯算法进行分类,分类效果会好很多。**当然,也有后续算法会对其改进。
垃圾邮件分类:参考https://zhuanlan.zhihu.com/p/155632712
文本分类:参考https://blog.csdn.net/qiaowu898/article/details/107634195
。。。