请用简单易懂的语言描述朴素贝叶斯分类器?

关注者
222
被浏览
70,574

26 个回答

在这里,我想借用垃圾邮件分类这个例子来简单描述朴素贝叶斯分类器。

首先根据已经标记好的邮件,即垃圾邮件与正常邮件,选择邮件中的一部分作为训练集,提取邮件中大多数重要的词语,建立词库。并统计每一个词语在垃圾邮件中出现的频率和在正常邮件中出现的频率,做好有关记录。

在这里,我们用S(Spam)表示垃圾邮件,H(Healthy)表示正常邮件。对于某个词语W(Word),P(W|S)即表示垃圾邮件中出现词语W的概率,在已经建立的词库中已知。P(W|H)即表示正常邮件中出现词语W的概率,在已经建立的词库中已知。

由Bayes公式易知出现词语W的邮件为垃圾邮件的概率为:


对于一封需要判别的邮件,我们提取其中的词语,并计算其中的每个词语的P(W|S)与P(W|H)。对于多个词语,选取P(W|S)最高的N个词语(N数值可以调整)。计算联合概率。令P_i=P(W_i |S),则有计算公式:


设定一个阈值P,若P_test>P,则判定为垃圾邮件。反之,判定为正常邮件。

那么,朴素贝叶斯分类器中的”朴素“从何而来呢?

原来,我们在训练模型的时候,由于训练集有限而垃圾邮件文本内容无限,不可能找到覆盖所有可能情况的训练集。所以将对文本的分析转换为对词或词的组合进行分析,也就是说不用句子作特征,而用句子中的词作特征。此时,我们就引入了简单粗暴可以说很“朴素”的条件独立假设来简化问题,即认为项与项之间独立,其对最终结果的贡献互不影响(注意这里指的是项与项之间互相独立,每一项可能代表一个词,即一元语言模型;也可能代表多个词,即n元语言模型)。