随机森林回归 - 如何分析其性能? - 蟒蛇,sklearn
Posted
技术标签:
【中文标题】随机森林回归 - 如何分析其性能? - 蟒蛇,sklearn【英文标题】:Random Forest Regression - How do I analyse its performance? - python, sklearn 【发布时间】:2018-11-20 05:14:59 【问题描述】:我正在努力评估我的随机森林的性能 - 我查看了平均相对误差,但我不确定它是否是一个好的指标。有哪些需要检查的地方?
另外,我应该如何优化我的超参数?
我用过 rf.score(X_test,y_test)
R2,但这真的是我做回归时唯一应该依赖的东西吗?我查看了现成的分数,但我不确定如何解释它们。
愿你的最优值是全局的,你的超参数得到优化:)
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators = 1000,max_depth=5,random_state = 0)
rf.fit(X_train, y_train);
predictions = rf.predict(X_test)
errors = abs((predictions - y_test)/y_test)
print('Mean Relative Error:', round(np.mean(errors), 2))
【问题讨论】:
请read here 了解随机森林背后的理论,以及可用于评估森林准确性的方法。我根本不知道你的 Python API,但应该有一些可用的东西,比如 OOB 错误和 Gini 重要性。 谢谢,这是一个很好的参考!我之前读过有关基尼指数等的信息,但我不确定如何在 sklearn 中实现它。你会使用 sklearn 吗?@TimBiegeleisen 很多数据人使用 Python。是的,如果您需要在生产中进行随机森林,那么您的软件包似乎是一个不错的选择。一些数据科学家主要是离线的,他们可能会在 R 中执行此操作。 您能说明您正在解决的问题吗?这将有助于选择合适的指标。但是,我认为要研究算法的性能,您应该尝试cross validation 【参考方案1】:您还可以再添加这两个指标:
from sklearn.metrics import accuracy_score, confusion_matrix
accuracy_score(my_class_column, my_forest_train_prediction) 混淆矩阵(my_test_data,my_prediction_test_forest)
还可以添加每个预测的概率:
my_classifier_forest.predict_proba(variable 1, variable n)
【讨论】:
请注意,答案是关于分类的性能指标,而问题是关于回归。【参考方案2】:对于回归模型(不要与分类器模型混淆),您可以从sklearn
评估 MAE、MSE、MAPE 和 RMSE:
import numpy as np
from sklearn import metrics
print('Mean Absolute Error (MAE):', metrics.mean_absolute_error(gt, pred))
print('Mean Squared Error (MSE):', metrics.mean_squared_error(gt, pred))
print('Root Mean Squared Error (RMSE):', np.sqrt(metrics.mean_squared_error(gt, pred)))
mape = np.mean(np.abs((gt - pred) / np.abs(gt)))
print('Mean Absolute Percentage Error (MAPE):', round(mape * 100, 2))
print('Accuracy:', round(100*(1 - mape), 2))
【讨论】:
今天,RMSE 和 MAPE 可以用 scikit learn 库函数(版本 >= 0.24)计算。它们对零偏差等错误更加稳健。我刚刚根据您的回答为最新版本创建了一个扩展:***.com/a/66209358/2056125【参考方案3】:为了从 Igor Ezersky 扩展 answer,在 scikit learn 中实现了更多用于模型和性能评估的功能。 documentation 中提供了所有评分参数的完整列表。此外,RMSE 和 MAPE 等一些指标不再需要手动计算(scikit learn version >= 0.24),因为它们是作为库函数实现的。此外,它们更能防止错误(如零偏差)。
包含所有当前可用的回归指标的上述答案的扩展版本可能如下所示:
from sklearn import metrics
y_true = [...] # Your real values / test labels
y_pred = [...] # The predictions from your ML / RF model
print('Mean Absolute Error (MAE):', metrics.mean_absolute_error(y_true, y_pred))
print('Mean Squared Error (MSE):', metrics.mean_squared_error(y_true, y_pred))
print('Root Mean Squared Error (RMSE):', metrics.mean_squared_error(y_true, y_pred, squared=False))
print('Mean Absolute Percentage Error (MAPE):', metrics.mean_absolute_percentage_error(y_true, y_pred))
print('Explained Variance Score:', metrics.explained_variance_score(y_true, y_pred))
print('Max Error:', metrics.max_error(y_true, y_pred))
print('Mean Squared Log Error:', metrics.mean_squared_log_error(y_true, y_pred))
print('Median Absolute Error:', metrics.median_absolute_error(y_true, y_pred))
print('R^2:', metrics.r2_score(y_true, y_pred))
print('Mean Poisson Deviance:', metrics.mean_poisson_deviance(y_true, y_pred))
print('Mean Gamma Deviance:', metrics.mean_gamma_deviance(y_true, y_pred))
如果您需要有关各个指标的更多信息,请查看scikit learn User Guide。
【讨论】:
以上是关于随机森林回归 - 如何分析其性能? - 蟒蛇,sklearn的主要内容,如果未能解决你的问题,请参考以下文章
Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)
基于回归分析的广告投入销售额预测——K邻近,决策树,随机森林,线性回归,岭回归