为啥与 MSE 相比,使用 MAE 标准训练随机森林回归器如此缓慢?

Posted

技术标签:

【中文标题】为啥与 MSE 相比,使用 MAE 标准训练随机森林回归器如此缓慢?【英文标题】:Why is training a random forest regressor with MAE criterion so slow compared to MSE?为什么与 MSE 相比,使用 MAE 标准训练随机森林回归器如此缓慢? 【发布时间】:2019-12-06 04:04:30 【问题描述】:

使用 sklearn 的 RandomForestRegress 的平均绝对误差标准在即使是小型应用程序(

import time
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_boston

X, y = load_boston(return_X_y=True)

def fit_rf_criteria(criterion, X=X, y=y):
    reg = RandomForestRegressor(n_estimators=100,
                                criterion=criterion,
                                n_jobs=-1,
                                random_state=1)
    start = time.time()
    reg.fit(X, y)
    end = time.time()
    print(end - start)

fit_rf_criteria('mse')  # 0.13266682624816895
fit_rf_criteria('mae')  # 1.26043701171875

为什么使用“mae”标准来训练 RandomForestRegressor 需要这么长时间?我想针对更大的应用程序优化 MAE,但发现调整到此标准的 RandomForestRegressor 的速度非常慢。

【问题讨论】:

你看过这个github.com/scikit-learn/scikit-learn/issues/9626 【参考方案1】:

感谢@hellpanderr 分享a reference to the project issue。总而言之——当随机森林回归器针对 MSE 进行优化时,它针对 L2 范数和基于均值的杂质指标进行了优化。但是当回归器使用 MAE 标准时,它会针对 L1 范数进行优化,这相当于计算中位数。不幸的是,sklearn 的 MAE 的回归器实现目前似乎需要 O(N^2)。

【讨论】:

有趣。我对 sklearn 的基于树的模型了解得越多,我就越发现它们实际上有多少缺点。例如,他们对分类特征的处理也是不理想的。是使用 H2O 的替代方法,还是您会推荐其他方法?

以上是关于为啥与 MSE 相比,使用 MAE 标准训练随机森林回归器如此缓慢?的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 中使用标准 MAE 而不是 MSE 的随机森林回归慢约 150 倍 [重复]

均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)

与标准卷积相比,为啥在训练网络时瓶颈结构更慢且占用更多内存?

在 Python 中使用 sklearn 使用 MAE 训练线性模型

回归任务中的评价指标之MSE,RMSE,MAE,R-Squared,MAPE

为啥使用 XGBoost 的 rmse 和 mse 如此之大?