朴素贝叶斯(一)

原创
2017/05/05 21:56
阅读数 78

一、概述与实例

    贝叶斯定理被应用于各种各样的场景下,例如疾病预测、垃圾邮件分类、新闻分类、自动驾驶……

    当然我不是搞数学的,我这里只是就应用的角度来谈谈朴素贝叶斯的使用,朴素贝叶斯中一个重要的假设:各个因素相互独立。

    贝叶斯定理就一句话:P(B|A)=P(A|B)P(B)/P(A),它描述了在A条件发生的情况下B发生的概率,或许直接看公式有点懵圈,下面请看这样一个例子:

有一组统计数据是描述小明上班是否会迟到:

天晴

交通良好

不迟到

下雨

交通良好

不迟到

下雨

交通良好

迟到

天晴

交通堵塞

迟到

下雨

交通堵塞

不迟到

今天,下雨、交通堵塞,我们来预测一下小明上班是否会迟到。这里我们假设各个因素之间相互独立。

1、在下雨、交通堵塞的情况下迟到的概率:

P(迟到|下雨×交通堵塞)=P(下雨×交通堵塞|迟到)×P(迟到)/P(下雨×交通堵塞)

=P(下雨|迟到)×p(交通堵塞|迟到)×P(迟到)/P(下雨)p(交通堵塞)

=(1/2×1/2×2/5)/(3/5×2/5)=5/12

2、在下雨、交通堵塞的情况下不迟到的概率:

P(不迟到|下雨×交通堵塞)=P(下雨×交通堵塞|不迟到)×P(不迟到)/P(下雨×交通堵塞)

=P(下雨|不迟到)×p(交通堵塞|不迟到)×P(不迟到)/P(下雨)p(交通堵塞)

=(2/3×1/3×3/5)/(3/5×2/5)=5/9

那么我基于这组数据,更倾向于小明今天不会迟到。

如果样本足够大,那么结果更趋近于真相。这就是朴素贝叶斯。

二、简化

1、假设一组数据有因子集合{P1,P2,……Pn}可以确定该数据属于分类C,那么

p(C|P1P2……Pn)=p(P1P2...Pn|C)P(C) / p(P1P1...Pn)

2、由于p(P1P1...Pn)对于所有类别C都是相同的,那么就等价于求

p(P1P1...Pn|C)P(C) 的最大值

3、假设条件相互独立

p(P1P1...Pn|C)P(C) =p(P1|C)*p(P2|C)*p(Pn|C)*p(C)

4、最终问题简化为求p(P1|C)*p(P2|C)*p(Pn|C)*p(C)的最大值

三、问题

    问题简化之后,单机版的朴素贝叶斯很好实现,但是处理大规模数据,还是显得心有余而力不足。

    大数据技术发展,给了我们运算全量数据的能力,那么基于Hadoop MapReduce模型的朴素贝叶斯算法该如何实现呢?请关注下一篇《朴素贝叶斯(二)》。

快乐源于分享。

   此博客乃作者原创, 转载请注明出处   

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部