为什么要有m-估计?
当我们通过在全部事件的基础上观察某事件出现的比例来估计概率时,例如:P=nc/n.,其中nc为该类别中的样本数量,n为总样本数量。若n=5,当P=0.6时,则nc为3。多数情况下该比例是对概率的一个良好的估计。但当nc很小时估计会较差,例如:P=0.08,样本中同样有5个样例,那么对于nc最可能的取值只有0,。这会导致两个问题:
1、nc/n产生了一个有偏的过低估计概率。
2、当此概率估计为0时,将来的查询此概率项将会在贝叶斯分类器中占统治地位。原因是贝叶斯公式中计算得量其他所有概率项都将乘以此0值。
为了避免此问题,所以需要采用一种估计概率,即如下定义的m-估计:
其中nc为该类别中的样本数量,n为总样本数量,p为将要确定的概率的先验估计,m为等效样本大小的常量。
为什么m-估计的公式是这样的?
首先,请思考问题出现的根本原因,问题出现的根本原因是样本数量过小。所以为了避免此问题,最好的方法是等效的扩大样本的数量,即在为观察样本添加m个等效的样本,所以要在该类别中增加的等效的类别的数量就是等效样本数m乘以先验估计p。
为什么在贝叶斯应用(如mahout)中使用的公式如下呢?
其中nk为单词W出现的次数,n为所有单词出现的次数。
m 估计的推导公式:
设 文本由一个属性向量x=(x1,x2,x3,...xn)表示,给定分类集合Y={yj|yj 属于Y}
求 文本向量的一个属性xi 对于分类yj的类条件概率P(xi|yj)。
首先假设Nyj 是分类yj的样本总数,Nxi是包含属性xi且属于分类yj的样本数。
由概率知识得到:
P(xi|yj) = Nxi / Nyj ------公式1
如果采用M-Estimate,得到的公式是
P(xi|yj) = (Nxi + mp) / (Nyj + m) ------公式2
其中p是 P(xi|yj) 的近似值,即有 Nxi / Nyj ~= p
由公式1和p逐步推导出公式2的过程如下:
为简化起见,设 a = Nyj, b = Nxi, 则 p ~= b / a, 可得:
P(xi | yj) = b / a
= b(a+m) / a(a+m)
= (ba + bm) / a(a+m)
= (b + m*(b/a)) / (a+m)
~= (b + mp) / (a+m) -------- 用 p ~= b / a 代入。
= (Nxi + mp) / (Nyj + m)
得证。
M估计的实际应用:
1. 多项式模型:
m = |V|,p = 1/|V|, 这里|V|为样本空间V的词库大小。
2. 伯努利模型:
m = 2, p = 1/2