Scikit learn 为什么在GaussianNB[scikit learn]中使用对数概率估计?

Scikit learn 为什么在GaussianNB[scikit learn]中使用对数概率估计?,scikit-learn,gaussian,Scikit Learn,Gaussian,我目前正在使用scikit learn的软件包 我注意到我可以选择几种不同的方式返回分类结果。返回分类的一种方法是使用predict_log_proba方法 为什么我会选择使用predict\u log\u proba与predict\u proba与predict? predict只为您提供每个示例的课程 predict\u proba给出每个类的概率,而predict只取概率最大的类 predict\u log\u probability提供概率的对数,这通常更方便,因为概率可能变得非常非常

我目前正在使用scikit learn的软件包

我注意到我可以选择几种不同的方式返回分类结果。返回分类的一种方法是使用predict_log_proba方法

为什么我会选择使用predict\u log\u proba与predict\u proba与predict?

  • predict只为您提供每个示例的课程
  • predict\u proba给出每个类的概率,而predict只取概率最大的类
  • predict\u log\u probability提供概率的对数,这通常更方便,因为概率可能变得非常非常小

当使用概率进行计算时,通常在对数空间而不是线性空间中进行计算,因为概率通常需要相乘,导致它们变得非常小,并且会出现舍入误差。此外,一些类似的量可以根据对数概率定义或容易地计算(注意,log(P/Q)=log(P)-log(Q))


最后,出于稳定性和速度的原因,朴素贝叶斯分类器通常在日志空间中工作,因此首先计算
exp(logP)
然后返回
logP
是浪费的。

如果您只关心两个元素之间的相对概率,例如排序,您也可以通过根本不计算
exp
来节省时间。