为啥与 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 训练线性模型