基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入,利用贝叶斯定理求出后验概率最大的输出(y)。
朴素贝叶斯法通过训练数据集学习联合概率分布(P(X,Y))。具体地,学习以下先验概率分布及条件概率分布。先验概率分布:
[P(Y=c_k),quad k=1,2,cdots,K
]
条件概率分布:
[P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},cdots,X^{(n)}=x^{(n)}|Y=c_k),quad k=1,2,cdots, K
]
于是基于上面两个概率就学到了联合概率分布。但条件概率分布有指数级数量的参数,其估计实际上是不可行。
朴素贝叶斯法对条件概率分布做了条件独立性假设:
[egin{aligned}
P(X=x|Y=c_k) & =P(X^{(1)}=x^{(1)},cdots,X^{(n)}=x^{(n)}|Y=c_k) \
& = prod limits_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)
end{aligned}]
朴素贝叶斯法实际上学习到生成数据的机制,属于生成模型。条件独立假设等于说用于分类的特征在类确定的条件下都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
对于输入(x),后验概率最大的类作为(x)的输出:
[egin{aligned}
P(Y=c_k|X=x) & = frac{P(X=x|Y=c_k)P(Y=c_k)}{sum_kP(X=x|Y=c_k)P(Y=c_k)} \
& = frac{P(Y=c_k)prod_jP(X^{(j)}=x^{(j)})}{sum_kP(Y=c_k)prod_jP(X^{(j)}=x^{(j)})}
end{aligned}]
朴素贝叶斯分类器可表示为:
[y=f(x)=mathop{argmax}limits_{c_k}P(Y=c_k|X=x)
]
注意到上述后验概率的计算中,分母对所有(c_k)都是相同的,所以
[y=f(x)=mathop{argmax}limits_{c_k}P(Y=c_k)prod_jP(X^{(j)}=x^{(j)})
]
参数估计
极大似然估计
先验概率(P(Y=c_k))的极大似然估计是
[p(Y=c_k)=frac{sum_{i=1}^NI(y_i=c_k)}{N},quad k=1,2,cdots,N
]
设第(j)个特征(x^{(j)})可能取值集合为({a_{j1},cdots,a_{jS_j}})。条件概率(P(X^{(j)}=a_{jl}|Y=c_k))的极大似然估计为:
[P(X^{(j)}=a_{jl}|Y=c_k)=frac{sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)}{sum_{i=1}^NI(y_i=c_k)}
]
贝叶斯估计
用极大似然估计可能会出现所要估计的概率为0的情况,这会影响后验概率的计算。可以使用贝叶斯估计。条件概率的贝叶斯估计为:
[P_{lambda}(X^{(j)}=a_{jl}|Y=c_k)=frac{sum_{i=1}^NI(x_i^{(j)}=a_{jl},y_i=c_k)+lambda}{sum_{i=1}^NI(y_i=c_k)+S_jlambda}
]
式中(lambda geq 0)。等价于在随机变量各个取值的频数上赋予一个正数(lambda > 0)。当(lambda=0)时,就是极大似然估计。常取(lambda=1),这时成为拉普拉斯平滑(Laplace smoothing)。同样,对于先验概率的贝叶斯估计是:
[p_lambda(Y=c_k)=frac{sum_{i=1}^NI(y_i=c_k)+lambda}{N+Klambda}
]
朴素贝叶斯法的优缺点
- 优点
- 有稳定的分类效率
- 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
- 对缺失数据不太敏感,算法也比较简单,常用于文本分类
- 缺点
- 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
- 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳
- 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率
- 对输入数据的表达形式很敏感