使用朴素贝叶斯分类很长的文本时避免获得无意义的值(例如-0.0)

问题描述 投票:0回答:1

我已经实现了多项朴素的朴素贝叶斯分类器的相当有效的实现,它的工作就像一个魅力。直到分类器遇到很长的消息(大约1万个单词),预测结果就变得毫无意义(例如-0.0),并且在使用Python的math domain error函数时得到了math.log。我使用log的原因是,当使用非常小的浮点数时,将它们相乘所得的结果就是非常小的浮点数,并且该对数有助于避免无限小的数字会导致预测失败。

某些上下文

我使用的词袋方法没有任何形式的向量化(例如TF-IDF,因为我无法弄清楚如何正确实现它并平衡出现0的词。对此,您也应该感谢摘录; )),而我使用的是频率计数和拉普拉斯加性平滑处理(基本上为每个频率计数加1,所以永远不会为0)。

我可以直接注销,但这意味着在消息如此长的情况下,引擎无论如何都无法正确检测到它们,所以这不是重点。

我已经实现了多项朴素的朴素贝叶斯分类器的相当有效的实现,它的工作就像一个魅力。直到分类器遇到非常长的消息(大约10k ...

python machine-learning naivebayes
1个回答
0
投票

如果您应用log-sum-exp,则朴素贝叶斯不存在乘法运算,只有加法运算,因此下溢的可能性很小。而且,如果您使用平滑处理(就像您说的那样),您将永远不会获得log的不确定行为。

© www.soinside.com 2019 - 2024. All rights reserved.