Почему я не могу найти самую низкую среднюю абсолютную ошибку, используя Random Forest? - PullRequest
0 голосов
/ 26 декабря 2018

Я участвую в конкурсе Kaggle со следующим набором данных: https://www.kaggle.com/c/home-data-for-ml-course/download/train.csv

В соответствии с теорией, при увеличении количества оценщиков в модели Random Forest средняя абсолютная ошибка будет снижаться только до некоторого числа (сладкое пятно)и дальнейшее увеличение приведет к переоснащению.Построив график числа оценок и средних абсолютных ошибок, мы должны получить этот красный график, где наименьшая точка обозначает лучшее число оценок.enter image description here

Я пытаюсь найти лучшее количество оценок с помощью следующего кода, но график данных показывает, что MAE постоянно уменьшается.Что я делаю не так?

train_data = pd.read_csv('train.csv')
y = train_data['SalePrice']
#for simplicity dropping all columns with missing values and non-numerical values
X = 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 results
plt.plot([item['n_est'] for item in mae_list], [item['mae'] for item in mae_list])

enter image description here

1 Ответ

0 голосов
/ 26 декабря 2018

Вы не обязательно делаете что-то не так.

Если присмотреться к теоретическим кривым, которые вы показываете, вы заметите, что горизонтальная ось не содержит ни малейшего указания на фактическое количество деревьев / итераций, гдетакой минимум должен случиться.И это довольно общая черта таких теоретических предсказаний - они говорят вам, что чего-то ожидают, но ничего о том, где именно (или даже приблизительно) вы должны этого ожидать.

Имея это в виду, единственное, что я могуИсходя из вашего второго сюжета, можно сделать вывод, что в конкретном диапазоне ~ 800 деревьев, которые вы пробовали, вы все еще находитесь в «левом» от ожидаемого минимума.

Опять же, нет теоретического предсказания того, сколькодеревья (800 или 8000 или ...), которые вы должны добавить до достижения этого минимума.

Чтобы внести эмпирическое подтверждение в обсуждение: в моем первом первом конкурсе Kaggle мы продолжали добавлять деревья, пока не достигли ряда~ 24,000 , до того как наша ошибка проверки начала расходиться (мы использовали GBM, а не RF, но обоснование идентично).

...