使用朴素贝叶斯分类器算法计算概率时如何防止下溢?

问题描述

我正在为我的数据挖掘课程研究朴素贝叶斯分类器算法,但是在计算概率时遇到了下溢问题。特定的数据集有~305 个属性,所以你可以想象,最终的概率会非常低。我怎样才能避免这个问题?

解决方法

一种方法是处理概率的对数而不是概率本身。这个想法是你永远不要用概率计算,因为担心你会得到 0.0,而是用对数概率计算。

大多数更改都很容易:例如,不是将概率相乘,而是添加对数,并且对于许多分布(例如高斯分布),计算对数概率而不是概率很容易。

唯一稍微棘手的一点是如果您需要将概率相加。但这是一个众所周知的问题,搜索logsumexp 会得到很多命中,例如here。我相信有一个 logsumexp 函数 int scipy。