与MSE相比,为什么用MAE准则训练随机森林回归器这么慢?

时间:2019-07-28 17:18:08

标签: python scikit-learn random-forest

当使用sklearn的RandomForestRegress的平均绝对误差准则在甚至较小的应用程序(<50K行<50列)上进行训练时,其速度比使用均方误差慢近10倍。为了说明一个小的数据集:

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的速度调整到此标准的速度过慢。

1 个答案:

答案 0 :(得分:1)

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