<<统计学习方法>>:朴素贝叶斯
这几个概念一直弄的糊里糊涂的~~~
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法!
贝叶斯定理:P(A|B) = P(B|A) * P(A) / P(B)
特征条件独立是指对于一个样本点X,表示成特征向量<x1, x2, x3..., xn>。
说明样本空间是n维的,每个样本点有n个特征。
下面说怎么用朴素贝叶斯法进行分类:
朴素贝叶斯法是生成模型,就是说它是通过给定的样本集合,学习样本点的分布函数。
然后给一个测试样本,我通过之前学习得到的分布函数来判断这个测试样本是属于那个类别。
给你一堆的样本点,怎么来学习这个分布函数呢?假设这个分布表示成P(X, Y),这里X是样本点,Y是所属的类别。
那么根据公式P(X, Y) = P(X|Y) * P(Y),可以通过学习类别Y的先验概率分布函数P(Y)和条件概率分布函数P(X|Y)得到样本分布P(X, Y)。
再进一步,由于之前有特征独立这一假设,所以条件概率可以表示成各个特征的条件概率之积:
P(X|Y) = P(x1|Y) * P(x2|Y) * ...... * P(xn|Y)
那么我们怎么求先验概率P(Y)和条件概率P(X|Y),有两种方法:
1.极大似然估计
2.贝叶斯估计
先说极大似然估计,就是说估计出来的分布函数要满足当前样本出现的概率最大,其实就是直接做统计:
P(Y) = 类别Y中包含的样本个数 / 总样本数 (这里要计算得到各个类别的先验概率)
P(x1|Y) = 类别Y中第一个特征值为x1的样本个数 / 类别Y中总的样本个数 (这里要计算第一个特征所有可能的取值,这里就有一个缺点,就是可能在某个类别Y中,第一个特征没有取到某个值,也就是说这个值没有在类别Y中出现过,那么这样得到的类别Y中第一个特征等于该值的条件概率就成了0,这就有问题了,这会影响其他的特征的,因为一旦有一个特征对应的条件概率为0,那么其他特征不管条件概率多大都白费,所以这就引出了一中平滑方法)
鉴于极大似然估计中有条件概率等于0的可能,所以引入了拉普拉斯平滑,这样可以保证所有特征值的条件概率不为0,这就是贝叶斯估计法
平滑的具体公式为:P(x1|Y) = (类别Y中第一个特征值为x1的样本个数 + 平滑因子c) / (类别Y中总的样本数 + T*c)
注意,这里的T为第一个特征所能取到的值的个数,因为只有分母上加了T个c,才能保证对第一个特征所有可能 的取值,总的概率加起来等于1。
那么接下来说一个给一个测试样本X,怎么来判断它的类别呢?
方法是arg max{P(Y) * P(X|Y)}
就是取那个在分布P(X, Y)中概率最大的那个Y,但是其实不是这样的,
它是取那个让后验概率P(Y|X)最大的那个Y,虽然这两个公式真正用起来的时候是一样的,但是本质上还是不太一样的。
P(Y|X) = P(X, Y) / P(X) = P(X|Y) * P(Y) / P(X)
主要是对于类别Y所有可能的取值,就是全部的类别,P(X) 都是 SUM{P(X|Y) * P(Y)} ;是个定值。
所以真正进行分类的时候,用的还是上面的分子:P(X, Y)