20150824朴素贝叶斯
核心就是贝叶斯公式:
p(x|y) = p(x,y)/p(y) = p(y|x)p(x)/p(y)
分类原则:在给定的条件下,在哪种分类的概率大,就是哪种分类。
举个小例子:
两个信封:A1.2个红球,2个黑球,A2.1个红球,2个黑球。
(1)已知从一个信封里面摸到一个红球,则这个信封是A1信封的概率。
(2)已知从一个信封里面摸到一个黑球,则这个信封是A1信封的概率。
P(R)红球的概率,P(B)黑球的概率,A1,A2为两个信封。
P(A1|R)=P(A1,R)/P(R)=P(R|A1)*P(A1)/(P(R|A1)*P(A1)+P(R|A2)*P(A2)) = 0.5*0.5/(0.5*0.5+1/30.5) = 0.6
P(A1|B)=P(A1,B)/P(B)=P(B|A1)*P(A1)/(P(B|A1)*P(A1)+P(B|A2)*P(A2)) = 0.5*0.5/(0.5*0.5+2/30.5) = 3/7
朴素贝叶斯最重要的假设就是,特征相互独立,每个特征同等重要。
常常以文本分类为例子:
样本:1000封邮件,已经标记哪些为垃圾邮件,哪些为非垃圾邮件。
分类目标:给定第1001封邮件,判断是否为垃圾邮件。
方法:朴素贝叶斯。
类别:垃圾邮件A1,非垃圾邮件A2。
将每个邮件的词汇组成词汇表,形成词汇向量,记所有单词数目为N。
每个邮件m将映射成一个向量(x1,x2,x3.....),如果某个单词xi在m中出现过,则xi为1。
利用贝叶斯公式:
P(A1|x) = P(A1,x)/P(x) = P(x|A1)P(A1)/(p(x|A1)*P(A1)+P(x|A2)*P(A2)) (其中x为单词组成的向量)
其中P(x|A1)表示在垃圾邮件中x出现的概率,P(A1)表示垃圾邮件的概率,P(x)表示该向量出现的概率。
其中P(x|A1)=P(x1|A1)*P(x2|A1)*P(x3|A1).....
由此可求出P(A1|x),但是在使用中往往会出现几个问题:
- 遇到新词需要对P(x1|A1)拉普拉斯平滑。
- 由于有众多小数相乘,因此我们需要取对数计算。
- 由于每个单词出现次数不同,我们需要将xi从01变为计数。
- 我们需要对分类器进行验证,交叉验证。
- 如果对象特征不独立,这个使用将从朴素贝叶斯变为贝叶斯网络。