朴素贝叶斯模型中的平滑


13

朴素贝叶斯预测器使用以下公式进行预测:

P(Y=y|X=x)=αP(Y=y)iP(Xi=xi|Y=y)

其中是归一化因子。这需要从数据中估计参数。如果我们使用平滑进行此操作,则可以得到估计值αP(Xi=xi|Y=y)k

P^(Xi=xi|Y=y)=#{Xi=xi,Y=y}+k#{Y=y}+nik

可能有值。我对此很好。但是,以前,我们有niXi

P^(Y=y)=#{Y=y}N

数据集中有示例。为什么我们也不能简化先验?或者说,我们顺利前?如果是这样,我们选择什么平滑参数?也选择似乎有点愚蠢,因为我们正在做不同的计算。有共识吗?还是没有太大关系?Nk

Answers:


5

首先进行平滑的典型原因是要处理。如果不这样做,只要是这种情况,我们总是会得到。#{Xi=xi|Y=y}=0P(Y=y|X=x)=0

例如,在对文本文档进行分类时,如果您遇到的单词不在训练数据中,或者只是没有出现在某个特定班级中,就会发生这种情况。

另一方面,在类别先验概率情况下,这种情况不应发生。如果这样做,则意味着您正在尝试将对象分配给甚至没有出现在训练数据中的类。P(Y=y)

另外,我从未遇到过术语平滑。拉普拉斯(Laplace)或加性平滑Additive smoothing)更为常见。k


1
通常,进行平滑处理的原因是避免过度拟合数据。某个类的计数为零的情况只是过拟合的一种特殊情况(碰巧特别糟糕)。观察每个班级时,您仍然可能希望简化概率。我想我对明显的不对称感到困扰-拉普拉斯平滑对应于假设您的数据集中存在额外的观察结果。为什么在拟合先验条件时会忽略这些观察?
克里斯·泰勒

我可能会争辩说,平滑类的先验意义不大,因为的MLE 可能比的估计要好得多。如果我有理由相信我的课堂估计有偏见,我将搁置一个验证集,并自己对课堂进行调整。以我的经验,过度拟合往往对朴素的贝叶斯问题不大(相对于判别法,逻辑回归)。也许您会更喜欢贝叶斯治疗P(Y=y)P(Xi=xi|Y=y)
中音

“这种情况不应该发生。如果这样做,则意味着您试图将对象分配给甚至没有出现在训练数据中的类”。呃...分类器如何将对象分配给以前从未见过的类(即,不在训练数据中)?
Jemenake

@Jemenake通常被称为零次学习中的问题,例如见零射门学习与语义输出码
中音

当我们使用训练数据集训练模型时,我们可以使用训练数据集中出现的单词来构建词汇,那么在对测试集进行预测时,为什么不仅仅删除词汇中没有的新单词呢?
鳄梨
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.