使用朴素贝叶斯分类器算法计算概率时如何防止下溢?
How to prevent underflow when calculating probabilities with the Naïve Bayes Classifier algorithm?
我正在为我的数据挖掘课程研究朴素贝叶斯分类器算法,但是在计算概率时我遇到了下溢问题。特定数据集有~305个属性,所以你可以想象,最终的概率会很低。我怎样才能避免这个问题?
一种方法是处理概率的对数而不是概率本身。这个想法是你永远不要用概率计算,因为害怕你会得到 0.0,而是用对数概率计算。
大多数更改都很简单:例如,不是乘以概率,而是添加对数,对于许多分布(例如高斯),计算对数概率而不是概率很容易。
唯一有点棘手的地方是您是否需要将概率相加。但这是一个众所周知的问题,搜索 logsumexp 会得到很多结果,例如 here。我相信有一个 logsumexp 函数 int scipy.
我正在为我的数据挖掘课程研究朴素贝叶斯分类器算法,但是在计算概率时我遇到了下溢问题。特定数据集有~305个属性,所以你可以想象,最终的概率会很低。我怎样才能避免这个问题?
一种方法是处理概率的对数而不是概率本身。这个想法是你永远不要用概率计算,因为害怕你会得到 0.0,而是用对数概率计算。
大多数更改都很简单:例如,不是乘以概率,而是添加对数,对于许多分布(例如高斯),计算对数概率而不是概率很容易。
唯一有点棘手的地方是您是否需要将概率相加。但这是一个众所周知的问题,搜索 logsumexp 会得到很多结果,例如 here。我相信有一个 logsumexp 函数 int scipy.