当使用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的速度调整到此标准的速度过慢。
答案 0 :(得分:1)
@@ hellpanderr,谢谢您分享a reference to the project issue。总而言之-当随机森林回归器针对MSE优化时,它针对L2-范数和基于均值的杂质度量进行优化。但是,当回归变量使用MAE准则时,它会针对L1范数进行优化,这相当于计算中位数。不幸的是,sklearn的MAE的回归器实现当前似乎采用O(N ^ 2)。