当特征和类别有明显的因果关系时,看贝叶斯公式的时候我还能理解,对上号,但是当特征与类别没有明显的因果关系的时,用贝叶斯公式时经常对不上号,条件概率和后验概率傻傻分不清楚,所以特地花时间整理了一番。
1.条件概率的推导:
由上图可知:
可得:
同理可得:
所以有:
可得条件概率公式(贝叶斯公式):
2.换个容易理解的表达形式:
上式中条件概率为:P(类别|特征),先验概率为P(类别),后验概率为P(特征|类别),先验概率和后验概率可有训练数据集计算得来。
3.这里的类别和特征都可能有多种,即特征A(,
,
,……,
),类别B(
,
,
,……,
)。则
因为朴素贝叶斯算法是假设各个特征之间相互独立,那么
则:
计算每个类别,
,
,……,
的条件概率
、
、
、
,分类结果为条件概率最大的类别。因为计算条件概率时,分母都是一样的,所以可以不计算,直接计算分子比较结果即可。
编写代码实现贝叶斯算法,怎么计算不同类别对应的特征的后验概率:
#类别j
pjNum += trainMatrix[i]
pjDenom += sum(trainMatrix[i])
pjVect = pjNum/pjDenom #类别j每个特征对应的后验概率数组
预测的时候怎么运用通过测试数据集计算好的后验概率数组?
将测试数据的特征与特征对应的后验概率相乘。
解释得比较详细的博客:贝叶斯原理和实战