基本原理
贝叶斯分类是基于贝叶斯公式的一种分类方法,它是通过先验知识和似然函数来估计后验概率。其公式如下:P(H | X) = P(X | H)*P(H) / P(X),其中H是假设,在分类中也就是判定的某种类别,X是证据向量,在分类中也就是n维的特征向量值,一般写作X=(x1, x2, ..., xn)。
因此对于一个给定的X,我们可以通过贝叶斯公式针对每种假设Hi,计算后验概率P(Hi | X),并将X归类为P(Hi | X)值最大的假设Hi。因此对于任意一个测试样本X,我们需要计算所有可能的假设Hi在X下的后验概率值。计算P(H | X),我们需要计算三个量:
似然函数P(X | H):在假设H成立的情况下,X出现的概率。X是一个多维向量,为了计算的简便性,我们假定X向量的n个特征之间是相互独立的,这样P((x1, x2, ..., xn) | H) = P(x1 | H) *P(x2 | H) * ... * P(xn | H),极大降低了似然函数的计算复杂度。我们将基于这种假设的贝叶斯分类称作朴素贝叶斯分类。同时,在计算每个特征xi的似然估计时,P(xi | H)很可能出现零,导致计算出来的后验概率值为0,这就是零频问题,解决零频问题的方法有很多,一个经典的方法是拉普拉斯变换。
先验概率P(H):先验概率P(H)是对每种假设分布的先验知识,在没有专家知识的情况下,我们一般采用训练样本来计算先验概率。
先验概率P(X):P(X)是特征向量X分布的先验概率,在没有更多专家知识的情况下,我们可以假设它为1。其实无论P(X)值为多少,都不会影响对最后结果的评判。因为P(X)是计算所有后验概率的共同分母,其值不影响后验概率大小的比较。
文本分类伪代码
void Bayes_classifier()
{
分词(以词为特征);
特征选择(假设选取2000个特征词);
foreach(c in C) { // C为类别的集合
计算P(c); // |S(c)| / |S|
foreach(f in F) { // F为选取的特征的集合
计算P(f | c); // Num(f in S(c)) / Num(f in S),注意零频问题
}
}
foreach(t in T) { // T为测试集
分词;
构造特征向量X;
foreach(c in C) {
计算P(X | c)*P(c);
}
将t归类为P(X|c)*P(c)值最大的类别c;
}
}
效能分析
贝叶斯分类理论上具有最低的分类错误率,但是其实际效果却不一定是最好的。主要是:1、特征属性相互独立性假设导致模型与实际的偏差;2、概率值的错误估计,似然函数和先验概率都是基于有限的训练样本计算而得,跟实际的概率分布存在误差。
本文详细介绍了贝叶斯分类的基本原理,包括先验知识、自然函数和后验概率的计算过程。讨论了朴素贝叶斯分类的概念,以及如何处理特征属性相互独立性假设导致的模型偏差和概率估计的准确性问题。此外,文章还提供了贝叶斯分类在文本分类中的伪代码实现,并分析了其效能。最后,阐述了贝叶斯分类在实际应用中的局限性和改进方向。
2689

被折叠的 条评论
为什么被折叠?



