朴素贝叶斯分类器就是根据贝叶斯公式计算结果进行分类的模型,“朴素”指事件之间相互独立无影响. 例 如:有如下数据集:
Text | Category |
A great game(一个伟大的比赛) | Sports(体育运动) |
The election was over(选举结束 | Not sports(不是体育运动) |
Very clean match(没内幕的比赛) | Sports(体育运动) |
A clean but forgettable game(一场难以忘记的比赛) | Sports(体育运动) |
It was a close election(这是一场势均力敌的选举) | Not sports(不是体育运动) |
求:“A very close game” 是体育运动的概率?数学上表示为 P(Sports | a very close game). 根据贝叶斯 定理,是运动的概率可以表示为:
不是运动概率可以表示为:
概率更大者即为分类结果. 由于分母相同,即比较分子谁更大即可.
我们只需统计”A very close game“ 多 少次出现在Sports类别中,就可以计算出上述两个概率. 但是”A very close game“ 并没有出现在数据集 中,所以这个概率为0,要解决这个问题,就假设每个句子的单词出现都与其它单词无关(事件独立即朴 素的含义),所以,P(a very close game)可以写成
统计出“a", "very", "close", "game"出现在"Sports"类别中的概率,就能算出其所属的类别. 具体计算过程 如下:
第一步:计算总词频:Sports类别词语总数11,Not Sports类别词语总数9,词语总数14(去重之后的单词数量)
第二步:计算每个类别的先验概率
# Sports和Not Sports概率
P(Sports) = 3 / 5 = 0.6
P(Not Sports) = 2 / 5 = 0.4
# Sports条件下各个词语概率
P(a | Sports) = (2 + 1) / (11 + 14) = 0.12
P(very | Sports) = (1 + 1) / (11 + 14) = 0.08
P(close | Sports) = (0 + 1) / (11 + 14) = 0.04
P(game | Sports) = (2 + 1) / (11 + 14) = 0.12
# Not Sports条件下各个词语概率
P(a | Not Sports) = (1 + 1) / (9 + 14) = 0.087
P(very | Not Sports) = (0 + 1) / (9 + 14) = 0.043
P(close | Not Sports) = (1 + 1) / (9 + 14) = = 0.087
P(game | Not Sports) = (0 + 1) / (9 + 14) = 0.043
其中,分子部分加1,是为了避免分子为0的情况;分母部分都加了词语总数14,是为了避免分子增 大的情况下计算结果超过1的可能.
第三步:将先验概率带入贝叶斯定理,计算概率: 是体育运动的概率:
不是体育运动的概率:
分类结果:P(Sports) = 0.000027648 , P(Not Sports) = 0.0000055984, 是体育运动