Как избежать перегрузки случайным лесом - PullRequest
0 голосов
/ 12 марта 2020

Я впервые тренирую модель случайного леса и нахожу эту ситуацию.

  1. Моя точность на тренировочном наборе с параметрами по умолчанию (как в https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) очень высокий, 0,95 или более, что очень похоже на переоснащение. На тестовом наборе точность достигает 0,66. Моя цель состояла бы в том, чтобы сделать модель менее подходящей, в надежде улучшить производительность тестового набора.

  2. Я попытался выполнить 5-кратную перекрестную проверку, используя случайный поиск по сетке, как здесь (https://towardsdatascience.com/hyperparameter-tuning-the-random-forest-in-python-using-scikit-learn-28d2aa77dd74) со следующей сеткой:

n_estimators = [16,32,64,128]
max_features = ['auto', 'sqrt']
max_depth = [int(x) for x in np.linspace(10, 110, num = 11)]
max_depth.append(None)
min_samples_split = [2, 5, 10]
min_samples_leaf = [1, 2, 4]
bootstrap = [True, False]
random_grid = {'n_estimators': n_estimators,
               'max_features': max_features,
               'max_depth': max_depth,
               'min_samples_split': min_samples_split,
               'min_samples_leaf': min_samples_leaf,
               'bootstrap': bootstrap}

Лучшая модель имела точность 0,7 по всем сгибам.

Я использовал лучшие выбранные параметры в шаге 2 для тренировочного набора и тестового набора, но опять-таки точность на тренировочном наборе была 0,95, а тестовый набор 0,66.

Любое предложение? Как вы думаете, что здесь происходит? Как я могу достичь результата, чтобы избежать переоснащения (и, возможно, улучшить производительность модели)?

1 Ответ

1 голос
/ 12 марта 2020

Здесь кто-то задал тот же вопрос и получил несколько полезных ответов: https://stats.stackexchange.com/questions/111968/random-forest-how-to-handle-overfitting

Ваш подход к использованию 5-кратной перекрестной проверки уже очень хорош и, возможно, может быть улучшен путем использования 10-кратная перекрестная проверка вместо.

Другой вопрос, который вы можете себе задать, касается качества вашего набора данных. Ваши классы сбалансированы? Если это не так, вы можете попытаться решить проблему дисбаланса класса, потому что с дисбалансом обычно происходит смещение в сторону класса большинства.

Возможно также, что набор данных, возможно, недостаточно велик, и его увеличение может увеличить Ваше выступление также.

Надеюсь, это немного поможет.

...