Sklearn RandomForestClassifier predict_log_proba 除零错误

我在尝试使用RandomForestClassifier处理一个自然语言处理问题时,使用predict_log_proba方法时遇到了除零错误。我检查了predict_proba方法的结果,发现原因是一些类别的概率(共有6个类别)为0。当predict_log_proba尝试对0应用np.log时就会出错。有没有可以避免这个问题的参数?

我知道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)。

希望这对你有帮助。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注