【问题标题】:Sklearn RandomForestClassifier predict_log_proba divide by zero errorSklearn RandomForestClassifier predict_log_proba 除以零错误
【发布时间】:2018-02-13 01:11:45
【问题描述】:

我正在尝试使用 RandomForestClassifier 来解决 nlp 问题,但是当我使用 predict_log_proba 方法时,我得到了除以零的错误。我查看了 predict_proba 方法的结果,发现原因是因为某些类(总共有 6 个类)的某些概率为 0。所以当 predict_log_proba 尝试将 np.log 应用于 0 时,它得到一个错误。有没有一个参数可以避免这个问题?

我知道 predict_log_proba 可以在随机森林分类器上正确使用,因为我看到这个示例代码使用它并且效果很好:http://scikit-learn.org/stable/auto_examples/calibration/plot_calibration_multiclass.html

我使用的是 sklearn 0.19 版和 RandomForestClassifier 的默认参数值。

【问题讨论】:

    标签: machine-learning scikit-learn


    【解决方案1】:

    如果您的模型输出给定类的概率为零,则该类的对数概率为负无穷大。因此,如果您要对日志空间中的概率求和(或者需要此值),那么显然您无法使用它。

    要在随机森林中发生这种情况,这意味着所有树都同意该特定数据点的该特定类别的概率为零。您可以通过增加树的数量来缓解这种情况(这将增加至少其中一棵树表示此示例属于该类的机会)。或者您可以将max_depth 参数减少到可能类似的效果。

    或者,您可以在应用对数之前软化模型的输出,例如将输出概率设置为 min(max(p, 0.001), 0.999)。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2019-08-18
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      相关资源
      最近更新 更多