我建立了一个随机森林回归模型并计算了我自己的误差。我还想计算MAE、MSE和RMSE,以便将我的结果与类似的用例进行比较。我对结果感到困惑,因为结果要小得多。
我使用的随机森林回归器函数是默认的。所以我只是好奇有没有人能解释我的MAE,MSE,RMSE?还是我做错什么了?
# Random Forest Regressor trainieren
random_state = 42
rf.fit(X_train, y_train)这是我自己的错误的结果:
Testset size: 19688
mean error(AVG): 0.10146151388130142
median error (Median): 0.061079373768676316在我看来,这些结果令人困惑:
# predict the testset
y_pred = rf.predict(X_test)
# Random Forest Basline Model evaluation
print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred))
print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
#Mean Absolute Error: 0.027392195979941525
#Mean Squared Error: 0.00142917555312868
#Root Mean Squared Error: 0.03780443827288907发布于 2020-10-08 23:23:20
在仔细考虑之后,让我们回顾一下随机森林回归(RFR)的机制:

因此,这种平均模型的思想或过程是一种叫做Ensembling的技术。此外,随机森林是一种监督学习算法,它使用集成学习方法进行分类和回归。随机森林是一种套袋技术,而不是一种促进技术。它在训练时使用了大量的决策树,并输出了类的模式(分类)或平均预测(回归)。

如果您检查滑雪文献,评估的指标如下:
此外,建议通过此帖子对连续数据使用MSE。
您可以使用score(X, y)的方法:返回预测的决定系数R^2。
系数R^2定义为(1 - u/v),其中:
u是平方((y_true - y_pred) ** 2).sum()的残差和。v是平方((y_true - y_true.mean()) ** 2).sum()的总和。最好的分数是1.0,它可以是负的(因为模型可以任意恶化)。
一个常数模型总是预测y的期望值,而不考虑输入特性,则得到R^2分数为0.0。
这个问题的问题是OP没有分享关于在训练和测试数据集中评估使用过的度量的信息,除了他自己定义的度量公式和一些SKlearn度量,如下所示:
#OP's defined metric #MSE
average_mean_error = (SalesPrice - predPrice) / Salesprice
result_rfbl.insert(2, "predResidualValue", rf.predict(X_test), True)
result_rfbl.insert(2, "predPrice", round(result_rfbl["predResidualValue"] * result_rfbl["NEUPREIS"], 2), True)
result_rfbl.insert(2, "SalesPrice", round(result_rfbl["RESTWERT"] * result_rfbl["NEUPREIS"], 2), True)
# absolute prozentualer Fehler #MAPE
result_rfbl.insert(2, "ERROR", abs(result_rfbl["SalesPrice"] - result_rfbl["predPrice"])/result_rfbl["SalesPrice"], True)我假设他的模型似乎是过分合适的,如果验证MSE高于培训MSE,并得到一个非常不错的结果与培训MSE,但我不想判断的封面,这本书。如果是这样的话,RFR-模型需要应用特征工程或RFR-分析和正则化,例如脊(L2正则化)和Lasso (L1正则化)。
为了更好地理解手动定义的MSE和Sklearn之间的差异背后的原因,我提请您注意SalesPrice上的决策树第一次从这个来源拆分的最小加权最小均方误差计算。
https://datascience.stackexchange.com/questions/67053
复制相似问题