朴素贝叶斯

朴素贝叶斯算法是一种基于概率统计的分类方法,它主要利用贝叶斯公式对样本事件求概率,通过概率进行分类。以下先对贝叶斯公式做个了解。


贝叶斯公式

条件概率:

对于事件A、B,若P(B)>0,则事件A在事件B发生的条件下发生的概率为:

P(A|B)=P(AB)P(B)

贝叶斯公式:

将条件概率稍作转化即可得到贝叶斯公式如下:

P(A|B)=P(B|A)P(A)P(B)


实例

先看看如何使用朴素贝叶斯进行预测吧。如下给出一个weather数据集,使用朴素贝叶斯算法预测样本 X={rainy,hot,normal,weak,?} 中属性play为yes还是no
这里写图片描述

思路:我们可以求出在{rainy,hot,normal,weak}发生的条件下,事件play=yes和事件play=no的概率,谁的概率大,最终答案就选谁。
解:根据贝叶斯公式,有:
P(play=yes|X)=P(X|play=yes)×P(play=yes)P(X)
P(play=no|X)=P(X|play=no)×P(play=no)P(X)
我们要比较这两个概率的大小,由于分母相同且大于0,所以我们只需要比较分子的大小即可。

P(X|play=yes)×P(play=yes)=P(x1|play=yes)×P(x2|play=yes)×P(x3|play=yes)×P(x4|play=yes)×P(play=yes)

其中,
P(x1|play=yes)=P(outlook=rainy|play=yes)=3/9
P(x2|play=yes)=P(temperature=hot|play=yes)=2/9
P(x3|play=yes)=P(humidity=normal|play=yes)=6/9
P(x4|play=yes)=P(wind=weak|play=yes)=6/9
P(play=yes)=9/14

P(play=yes|X)3/9×2/9×6/9×6/9×9/14=0.0211

同理可得:
P(x1|play=no)=P(outlook=rainy|play=no)=2/5
P(x2|play=no)=P(temperature=hot|play=no)=2/5
P(x3|play=no)=P(humidity=normal|play=no)=1/5
P(x4|play=no)=P(wind=weak|play=no)=2/5
P(play=no)=9/14
P(play=no|X)2/5×2/5×1/5×2/5×9/14=0.0082

根据结果,P(play=yes|X)>P(play=no|X)
所以,样本 X={rainy,hot,normal,weak,?} 的play类标号值为yes

朴素贝叶斯

相信大部分朋友都能看懂上面这个例子,也对朴素贝叶斯有了一定的认识。下面作一些补充介绍:

名词解释:

  • P(H) 表示假设H先验概率,即假设H会发生的概率。
  • P(H|X)表示在条件X下,假设H后验概率。即在事件X发生的条件下,假设H会发生的概率。
  • 在数据集D中,假设其属性集为:U={A1,A2,,An,C} ,其中A1,A2,,An属性变量C叫做类标号属性变量

算法描述:

函数名:NaiveBayes
输入:类标号未知的样本X={x1,x2,…,xn}
输出:未知样本 X 所属类别号
(1for j=1 to m
(2) 计算 X 属于每个类别 Cj 的概率 P(X|Cj) = P(x1|Cj) × P(x2|Cj) × … × P(xn|Cj);
(3) 计算训练集中每个类别 Cj 的概率 P(Cj);
(4) 计算概率值 μ = P(X|Cj) × P(Cj);
(5end for6)选择概率值 μ 最大的 Ci(1i≤m) 作为类别输出。


优缺点

优点:

  • 朴素贝叶斯的优点是容易实现,给出公式让计算机运算就行了,而且预测的结果还比较准确。
  • 运行时间比较快,而且占用内存不会太大。
  • 健壮性好。

缺点:

  • 朴素贝叶斯比较适合于属性间相互独立的情况,如果属性间的独立性不高,准确性会下降。
  • 当样本数据比较少的时候,可能无法进行正确分类。
posted @ 2015-06-05 18:49  九茶  阅读(597)  评论(0编辑  收藏  举报