为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我无法使用随机森林找到最低平均绝对误差?

为什么我无法使用随机森林找到最低平均绝对误差?

尚方宝剑之说 2021-09-25 21:47:57
我正在使用以下数据集进行 Kaggle 比赛:https : //www.kaggle.com/c/home-data-for-ml-course/download/train.csv根据该理论,通过增加随机森林模型中估计量的数量,平均绝对误差只会下降到某个数字(最佳点),进一步增加会导致过度拟合。通过绘制估计量的数量和平均绝对误差,我们应该得到这个红色图表,最低点标志着估计量的最佳数量。我尝试使用以下代码找到最佳估计器数量,但数据图显示 MAE 不断下降。我做错了什么?train_data = pd.read_csv('train.csv')y = train_data['SalePrice']#for simplicity dropping all columns with missing values and non-numerical valuesX = train_data.drop('SalePrice', axis=1).dropna(axis=1).select_dtypes(['number'])X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)mae_list = []for n_estimators in range(10, 800, 10):    rf_model = RandomForestRegressor(n_estimators=n_estimators, random_state=0, n_jobs=8)    rf_model.fit(X_train, y_train)    preds = rf_model.predict(X_test)    mae = mean_absolute_error(y_test, preds)    mae_list.append({'n_est': n_estimators, 'mae': mae})#plotting the resultsplt.plot([item['n_est'] for item in mae_list], [item['mae'] for item in mae_list])
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

你不一定做错了什么。

更仔细地观察您显示的理论曲线,您会注意到水平轴不包含应该发生这种最小值的实际树/迭代数量的最轻微指示。这是这种理论预测的一个相当普遍的特征——它们告诉你一些是预期的,但没有关于你应该期待它的确切位置(甚至粗略地)。

记住这一点,我可以从您的第二个图中得出的唯一结论是,在您尝试过的 ~ 800 棵树的特定范围内,您实际上仍处于预期最小值的“左侧”。

同样,没有理论预测在达到该最小值之前应该添加多少棵树(800 或 8,000 或...)。

为了在讨论中加入一些实证证据:在我自己的第一次 Kaggle 比赛中,我们不断添加树,直到我们达到约24,000棵树,然后我们的验证错误开始出现分歧(我们使用的是 GBM 而不是 RF,但基本原理是相同的) .


查看完整回答
反对 回复 2021-09-25
  • 1 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号