我有一个问题,当调优RandomForestRegressor参数时,平均绝对误差会增加。我已经将得分设置为neg_mean_absolute_error,但由于某种原因,它还在增加吗?
我的数据集包含了300个变量中的100.000个观测结果,其中我使用了一个与test_size=0.2分离的火车/测试。
我已经尝试了200个组合的随机网格搜索set,其中我设置了scoring=neg_mean_absolute_error。在测试数据上测量MAE时,我得到了一个mae=6500 (默认RFR模型),而在调优模型上,我得到了一个mae=9000。它不是应该减少或者至少保持不变吗?在调整模型时,它似乎与模型不符。
我用来优化模型的代码如下所示:
max_features=['auto','sqrt']
min_samples_split = [2,5,10,20,30,40]
min_samples_leaf = [5,10,20,50,60,80]
max_depth = [int(x) for x in np.linspace(5, 200, num = 20)]
random_grid = {'max_features': max_features,
'max_depth': max_depth,
'min_samples_split': min_samples_split,
'min_samples_leaf': min_samples_leaf
}
kf = KFold(n_splits=3, random_state=1)
rfr=RandomForestRegressor(n_estimators=100)
rfr_random=RandomizedSearchCV(estimator = rfr,
param_distributions=random_grid,
n_iter=200,
cv=kf,
n_jobs=-1,
random_state=53,
scoring='neg_mean_absolute_error')
rfr_random.fit(x_train,y_train)
RF=RandomForestRegressor(**rfr_random.best_params_)
RF.fit(x_train,y_train)
y_pred=RF.predict(x_test)
print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, y_pred)) 有人能解释为什么在优化初始模型时MAE会增加吗?
发布于 2019-08-12 12:10:02
这是可能发生的。
您正在培训培训集,这并不意味着它适合测试集。你在训练场上预测过吗?
y_pred_train=RF.predict(x_train)
print('Mean Absolute Error (Train):', metrics.mean_absolute_error(y_train, y_pred_train)) 如果这个错误很小,你已经做了一个过火!这意味着你对你的火车数据有一个“完美”的预测,但对你的测试数据不起作用。
在您的情况下,您可以尝试a:k-折叠交叉验证。这基本上将尝试几个火车/测试分裂,以找到最好的预测。
对你也有好处,你可以在火车、开发和测试集中分离你的数据集。(例如,test和dev size = 0.2 )。然后进行训练,在dev集上尝试,再调一次,在dev集上尝试,在有了好的结果之后,在测试集上滚出来,然后看看它是否真的很好!
https://stackoverflow.com/questions/57460779
复制相似问题