如何处理朴素贝叶斯分类器中看不见的特征?

机器算法验证 可能性 自然语言 朴素贝叶斯 拉普拉斯平滑
2022-04-13 17:06:22

我正在为文本分类问题编写一个朴素的贝叶斯分类器。我有一堆单词和一个相关的标签:

[short,snippet,text], label1
[slightly,different,snippet,text], label2
...

我能够很好地训练朴素贝叶斯。但是,当我对看不见的数据进行分类时,有时会有看不见的特征(单词)。在这种情况下,朴素贝叶斯公式在给定特征的概率会发生什么?CF1,F2,...

P(C|F1,F2,...)=P(F1,F2,...|C)P(C)P(F1,F2,...)=P(C)iP(Fi|C)P(F1,F2,...)

假设特征从未出现在训练数据中,那么不是吗?FkP(Fk|C)=00

这在分类问题中通常如何处理?

一种选择是简单地忽略看不见的功能。但是,我不想这样做,因为我正在尝试计算与类相关的实际概率分数。当有看不见的特征时,概率应该会受到影响,但我不确定如何在数学上做到这一点。

任何见解、研究文章的链接等都会有帮助!提前致谢。

1个回答

通常人们会使用拉普拉斯平滑,本质上是为每个类添加对每个特征的人工观察。这样做是为了避免从未观察到一个类中的特征导致传播为零的问题。这也称为统一先验。

对于在任何训练数据中从未见过的特征,“统一先验”意味着一切都将具有相同的概率(因此统一没有数据),因此它不会影响您选择的类别。

在为您的分类器做出决定方面,这将产生与丢弃新特征相同的结果!所以这就是你应该做的。从技术上讲,保留它会稍微改变概率,但朴素贝叶斯并没有给出好的概率,所以它不值得担心。

但是,我不想这样做,因为我正在尝试计算与类相关的实际概率分数。当有看不见的特征时,概率应该会受到影响,但我不确定如何在数学上做到这一点。

这是一个很好的直觉和正确的。但总的来说,当我们遇到未观察到的特征时,我们无能为力,因为我们本质上对它们一无所知!你真正能做的就是选择一个先前的信念,并在你没有数据时使用它。

如果您真的想要好的概率,请开始查看逻辑回归。它也不完美,但概率比朴素贝叶斯给你的要合理得多。