朴素贝叶斯

发布在 Python, 机器学习

朴素贝叶斯是贝叶斯决策理论的一部分,贝叶斯概率引入先验知识和逻辑推理来处理不确定命题。又可以称为“条件概率”(Conditional probability),与之相对的则是“频数概率”(frequency probability)。

强烈推荐看阮一峰大牛的这篇文章,看完基本贝叶斯就明白了。

我们把\(P(A|B)\)称为在B条件下A的概率,若只有A、B两个事件那么\(P(A|B)= {P(AB) \over P(B)} \) 。

全概率 公式:
$$P(B)=P(B|A)P(A) + P(B|\overline A)P(\overline A) $$

贝叶斯 公式:

$$P(A|B)={P(B|A) × P(A) \over P(B)}$$

对公式进行变形:

$$P(A|B)={P(A){P(B|A) \over P(B)}}$$

这里称P(A)为先验概率(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为后验概率(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A) / P(B) 称为可能性函数(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

这里以贝叶斯界的”Hello World”为例,判断某种疾病患病概率问题:

已知某种疾病的发病率是0.001,即1000人中会有1个人得病。现有一种试剂可以检验患者是否得病,它的准确率是0.99,即在患者确实得病的情况下,它有99%的可能呈现阳性。它的误报率是5%,即在患者没有得病的情况下,它有5%的可能呈现阳性。现有一个病人的检验结果为阳性,请问他确实得病的可能性有多大?

我们假定阳性概率为P(B),发病的概率为P(A)=0.001,则没得病的概率\(P(\overline A)\)=0.999,确实得病且阳性概率为P(B|A)=0.99,没患病但阳性\(P(B|\overline A)\)=0.05,那么我们要求的问题就是P(A|B)了。

结合上面提到的全概率公式和贝叶斯公式,可以计算出他确实得病的概率仅为0.019,即“假阳性”。

如果把问题改成检验结果为阴性,问其患病的可能性。

我们假定阴性概率为P(B),发病的概率为P(A)=0.001,没得病的概率\(P(\overline A)\)=0.999,确实得病但阴性概率为P(B|A)=0.01,没患病且阴性\(P(B|\overline A)\)=0.95,那么检查为阴性但患病的概率就是:

$$P(A|B)={0.001×0.01 \over {0.01×0.001 + 0.95×0.999}} \approx 0.000011 $$

即便阴性也是有患病几率的,但概率十分低。

还有一个重要的公式叫做 联合概率 ,作用就是在已知多个事件发生的情况下,另一个事件发生的概率:

$$P ={ {P_1P_2…P_n } \over { {P_1P_2…P_n}+{(1-P_1)(1-P_2)…(1-P_n)} } } $$

阅读全文

决策树

发布在 Python, 机器学习

决策树是机器学习中一种简单明了的分类算法,用程序语言描述就是if...elif...else...,关键问题则是如何选择合适的特征对数据集进行切割,常见算法有: ID3、C4.5、CART等。

今天主要记录一下ID3这个算法,想使用这个算法首先要了解信息增益,想了解信息增益则要先明白什么是”熵”。熵描述了一个系统的混乱复杂程度,有一个理论叫做”熵增加”,含义就是一个没有外力干涉的系统混乱程度总是增加的,比如一个房间如果没人打扫的话只会越来越混乱,而不会自己变得整洁。

计算熵的公式如下:

$$H=-\sum_{i=i}^{n}P(x_i)log_2P(x_i)$$

其中\(P(x_i)\) 表示P发生的概率。

阅读全文
  • 第 1 页 共 1 页
作者的图片

Roy

微信公众号:hi-roy


野生程序猿


China