贝叶斯定理
我们知道:
P(A∩B)=P(A|B)×P(B)=P(B|A)×P(A)
所以有:
P(A|B)=P(B|A)×P(A)P(B)
这就是贝叶斯定理。
贝叶斯分类器的原理
假如我们要为一个疾病诊断系统构建一个贝叶斯分类器。首先,我们有如下训练集:
职业 | 症状 | 疾病 |
---|---|---|
矿工 | 咳嗽 | 肺炎 |
矿工 | 头痛 | 感冒 |
护士 | 咳嗽 | 肺结核 |
护士 | 头痛 | 肺炎 |
矿工 | 咽痛 | 肺炎 |
护士 | 咽痛 | 感冒 |
下面来了一个咽痛的护士,我们要确定她患了什么疾病,这里就要用到贝叶斯定理。
该护士感冒的概率为:
P(感冒|护士,咽痛)=P(护士,咽痛|感冒)×P(感冒)P(咽痛,护士)=P(护士|感冒)×P(咽痛|感冒)×P(感冒)P(咽痛)×P(护士)=0.5×0.5×0.330.33×0.5=0.5
同理,该护士 肺炎的概率为:
P(肺炎|护士,咽痛)=P(护士,咽痛|肺炎)×P(肺炎)P(咽痛,护士)=P(护士|肺炎)×P(咽痛|肺炎)×P(肺炎)P(咽痛)×P(护士)=0.33×0.33×0.50.33×0.5=0.33
该护士 肺结核的概率为:
P(肺结核|护士,咽痛)=P(护士,咽痛|肺结核)×P(肺结核)P(咽痛,护士)=P(护士|肺结核)×P(咽痛|肺结核)×P(肺结核)P(咽痛)×P(护士)=1×0×1/60.33×0.5=0
所以,由上可知, 咽痛的护士,最可能是 感冒了。虽然上面的例子是瞎掰的,训练集数量太少,但是也能说明贝叶斯分类器的工作原理,即 可能性最大的那个分类就作为输入特征向量的分类。
朴素贝叶斯
朴素(naive)贝叶斯有两个假设:
- 各个特征之间是相互独立的,即一个特征出现与否,不影响另一个特征是否出现。例如自然语言中 “ I am a student. ”,I 的出现肯定会影响 am 的出现,即主语的出现肯定会影响谓语的出现。但是朴素贝叶斯假设它们之间都没有联系,即在统计意义上是独立的。
- 各个特征同等重要,其实这个假设也有问题,在文档分类中,很多情况下,某些词比其他词更加重要。
虽然上面两个假设都不太符合实际,但是在实际情况中朴素贝叶斯分类器的效果却还是非常不错的,而且这两个假设使得程序代码逻辑清晰且简单。