我正在使用以下數(shù)據(jù)集進行 Kaggle 比賽:https : //www.kaggle.com/c/home-data-for-ml-course/download/train.csv根據(jù)該理論,通過增加隨機森林模型中估計量的數(shù)量,平均絕對誤差只會下降到某個數(shù)字(最佳點),進一步增加會導(dǎo)致過度擬合。通過繪制估計量的數(shù)量和平均絕對誤差,我們應(yīng)該得到這個紅色圖表,最低點標志著估計量的最佳數(shù)量。我嘗試使用以下代碼找到最佳估計器數(shù)量,但數(shù)據(jù)圖顯示 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條經(jīng)驗 獲得超8個贊
你不一定做錯了什么。
更仔細地觀察您顯示的理論曲線,您會注意到水平軸不包含應(yīng)該發(fā)生這種最小值的實際樹/迭代數(shù)量的最輕微指示。這是這種理論預(yù)測的一個相當(dāng)普遍的特征——它們告訴你一些是預(yù)期的,但沒有關(guān)于你應(yīng)該期待它的確切位置(甚至粗略地)。
記住這一點,我可以從您的第二個圖中得出的唯一結(jié)論是,在您嘗試過的 ~ 800 棵樹的特定范圍內(nèi),您實際上仍處于預(yù)期最小值的“左側(cè)”。
同樣,沒有理論預(yù)測在達到該最小值之前應(yīng)該添加多少棵樹(800 或 8,000 或...)。
為了在討論中加入一些實證證據(jù):在我自己的第一次 Kaggle 比賽中,我們不斷添加樹,直到我們達到約24,000棵樹,然后我們的驗證錯誤開始出現(xiàn)分歧(我們使用的是 GBM 而不是 RF,但基本原理是相同的) .
添加回答
舉報
0/150
提交
取消