RandomForestClassifier

RandomForestClassifier

我正在尝试针对nlp问题使用RandomForestClassifier,但是当我使用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的默认参数值。

最佳答案

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

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

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

希望能有所帮助。

08-25 08:41