美文网首页
【自主学习】看懂朴素贝叶斯

【自主学习】看懂朴素贝叶斯

作者: Colleen_oh | 来源:发表于2019-03-27 18:31 被阅读0次

在机器学习领域中,朴素贝叶斯是一种基于贝叶斯定理的简单概率分类器。

朴素贝叶斯假设了样本的每个特征之间是互相独立、互不影响的。

比方说,如果有一个水果是红色的,形状为圆形,并且直径大约为70毫米,那么它就有可能被认为是苹果(具有最高概率的类将会被认为是最有可能的类,这被称为最大后验概率 Maximum A Posteriori),即使上述的这些特征可能会有依赖关系或有其他特征存在,朴素贝叶斯都会认为这些特征都独立地贡献了这个水果是一个苹果的概率,这种假设关系太过于理想,所以这也是朴素贝叶斯的”Naive”之处。

条件概率

条件概率(Conditional Probability)是指在事件B发生的情况下,事件A发生的概率,用P(A|B)表示,读作在B条件下A的概率

在上图中,中间是它们的交集,可以用P(B|A)或者是P(A|B)表示。

P(A|B)=\frac{P(A\cap B)}{P(B)} \Rightarrow P(A\cap B)=P(A|B)P(B)

同理:

P(B|A)=\frac{P(A\cap B)}{P(A)} \Rightarrow P(A\cap B)=P(B|A)P(A)

得:P(A|B)P(B)=P(B|A)P(A)

下面用例子来简单讲述一下:

假设有两个人在扔两个个六面的骰子D1与D2,我们来预测D1与D2的向上面的结果的概率。

上表Table1,把筛子会抛出的D1与D2的结果都呈现在上表中,标红处是D1抛出结果为2的6个结果,其概率为P(D1=2)=\frac{6}{36} =\frac{1}{6}

上表Table2把D1和D2抛出的结果和小于等于5的结果标红,一共10个结果,用条件概率公式表示为P(D1+D2\leq 5)=\frac{10}{36} =\frac{5}{18}

上表Table3把在D1和D2抛出的结果和小于等于5的情况下D1抛出2结果标红,其条件概率公式表示为P(D1=2|D1+D2\leq 5)=\frac{P(D1=2\cap D1+D2\leq 5)}{P(D1+D2\leq 5)} =\frac{3}{36} \div \frac{10}{36} =\frac{3}{10}

假如是从上表数格子也可以输出结果是0.3。

全概率公式

全概率公式是将边缘概率与条件概率关联起来的基本规则,它表示了一个结果的总概率,可以通过几个不同的事件来实现。

全概率公式将对一复杂事件的概率求解问题转化为了在不同情况下发生的简单事件的概率的求和问题,公式为P(B)=\sum\nolimits_{i=1}^nP(A_i)P(B|A_i)

假定一个样本空间S,它是两个事件A与C之和,同时事件B与它们两个都有交集,如下图所示:

那么事件B的概率可以表示为P(B)=P(B\cap A)+P(B\cap C)

通过条件概率,可以推断出P(B\cap A)=P(B|A)P(A),所以P(B)=P(B|A)P(A)+P(B|C)P(C)

这就是全概率公式,即事件B的概率等于事件A与事件C的概率分别乘以B对这两个事件的条件概率之和.

下面用一个例子来稍微说明一下:

假设有两家工厂生产并对外提供电灯泡,工厂X生产的电灯泡在99%的情况下能够工作超过5000小时,工厂Y生产的电灯泡在95%的情况下能够工作超过5000小时。工厂X在市场的占有率为60%,工厂Y为40%,如何推测出购买的灯泡的工作时间超过5000小时的概率是多少呢?

A事件为工厂制造的电灯泡工作时间超过5000小时,B_x为购买到工厂X制造的电灯泡,B_y为购买到工厂Y制造的电灯泡。

依题意可知:

P(B_x)=\frac{6}{10} :购买到工厂X制造的电灯泡的概率

P(B_y)=\frac{4}{10}:购买到工厂Y制造的电灯泡的概率

P(A|B_x)=\frac{99}{100} :工厂X制造的电灯泡工作时间超过5000小时的概率。

P(A|B_x)=\frac{95}{100} :工厂Y制造的电灯泡工作时间超过5000小时的概率。

运用全概率公式,可以得出:

P(A)=P(A|B_x)P(B_x)+P(A|B_y)P(B_y)=\frac{99}{100} \times \frac{6}{10} +\frac{95}{100} \times \frac{4}{10} =\frac{974}{1000}

因此,可以得知购买一个工作时间超过5000小时的电灯泡的概率为97.4%。

贝叶斯定理

贝叶斯定理是关于随机事件A和B的条件概率的一则定理。通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A(发生)的条件下的概率是不一样的,但它们两者之间是有确定的关系的,贝叶斯定理陈述了这个关系。

贝叶斯公式:

P(A|B)=\frac{P(B|A)P(A)}{P(B)}

其中\frac{P(B|A)}{P(B)} 被称为标准相似度,它是一个调整因子,主要是为了保证预测概率更接近真实概率。

根据这些术语,贝叶斯定理表述为: 后验概率 = 标准相似度 * 先验概率。

下面用一个例子来说明:

假设某种疾病的发病率为0.001(1000个人中会有一个人得病),现有一种试剂在患者确实得病的情况下,有99%的几率呈现为阳性,而在患者没有得病的情况下,它有5%的几率呈现为阳性(也就是假阳性),如有一位病人的检验成果为阳性,那么他的得病概率是多少呢

设:事件A为得病,事件B为试剂结果为阳性,事件C为未得病。

已知P(A)=0.001,这是我们的先验概率(根据以往经验和分析得到的概率),是在病人在实际注射试剂(缺乏实验的结果)之前预计的发病率。

现在我们需要计算的是条件概率P(A|B),即在事件B条件下的发生事件A的概率,这就是后验概率,也就是病人在注射试剂之后(得到实验结果)得出的发病率。

由于还有未得病的概率,所以还需要假设事件C为未得病的先验概率P(C)=1-0.001=0.999,那么P(B|C)后验概率表示的是未得病条件下的试剂结果为阳性的概率,之后再代入全概率公式就可得出最终结果。

P(A|B)=\frac{P(B|A)P(A)}{P(B)}=\frac{P(B|A)P(A)}{P(B|A)P(A)+P(B|C)P(C)}=\frac{0.99\times 0.001}{0.99\times 0.001+0.05\times 0.999}   \approx 0.0019

最终结果约等于2%,即使一个病人的试剂结果为阳性,他的患病几率也只有2%而已。

朴素贝叶斯

我们设一个待分类项X=f_1,f_2,...f_n,其中每个fx的一个特征属性,然后设一个类别集合C_1,C_2,...C_m。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值:

然后需要计算P(C_1|X),P(C_2|X),...,P(C_m|X),然后找出其中最大的那一个。

统计可得到在各类别下各个特征属性的条件概率:P(f_1|C_1),P(f_2|C_1),...,P(f_n|C_1),...,P(f_1|C_2),P(f_2|C_2),..

朴素贝叶斯会假设每个特征都是独立的,根据贝叶斯定理可推得:P(C_i|X)=\frac{P(X|C_i)P(C_i)}{P(X)},由于分母对于所有类别为常数,因此只需要将分子最大化即可,又因为各特征是互相独立的,所以最终推得:

P(X|C_i)P(C_i)=P(f_1|C_i)P(f_2|C_i),...,P(f_n|C_i)P(C_i)=P(C_i)\prod_{j=1}^n P(f_j|C_i)

根据上诉的公式推导,朴素贝叶斯的流程可如下图所示:

朴素贝叶斯算法小结

朴素贝叶斯的主要优点有:

1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。

3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

朴素贝叶斯的主要缺点有:

1)理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。

4)对输入数据的表达形式很敏感。

参考:

朴素贝叶斯的那点事儿 | SylvanasSun's Blog

朴素贝叶斯算法原理小结 - 刘建平Pinard - 博客园

相关文章

网友评论

      本文标题:【自主学习】看懂朴素贝叶斯

      本文链接:https://www.haomeiwen.com/subject/hldavqtx.html