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