Как оценить частоту ошибок OOB из оценки OOB для проблемы регрессии - PullRequest
1 голос
/ 03 апреля 2019

Я использую пакет случайной лесной регрессии в sklearn, python.Мой набор данных содержит 146 образцов для обучения и 38 образцов для тестирования.Я обучил модель, но я хочу построить график ошибок OOB с количеством деревьев, варьируя num_features.Кривая, которая дает наименьшую ошибку OOB для определенного числа деревьев, будет выбрана для оптимальных параметров модели для тестового набора.

Я рассчитал частоту ошибок OOB как (1-OOB оценка).Но частота ошибок OOB уменьшается с 0,8 до 0,625 для лучшей кривой.Это означает, что мой показатель OOB не сильно улучшается даже при большом количестве деревьев (300).Я хочу знать, следую ли я правильной процедуре, чтобы построить график ошибок OOB или нет.И как я могу улучшить производительность моей модели случайного леса

ensemble_clfs = [

    ("max_features=1",
        RandomForestRegressor(n_estimators=125,max_depth=5,min_samples_split=6,
                               warm_start=True,max_features=1,min_samples_leaf=3,
                               oob_score=True,random_state=42)),
    ("max_features=2",
        RandomForestRegressor(n_estimators=125,max_depth = 5,min_samples_split=8,
                               warm_start=True, max_features=2,min_samples_leaf=3,
                               oob_score=True,
                               random_state=42)),
     ("max_features=3",
        RandomForestRegressor(n_estimators=125,max_depth 
 =5,min_samples_split=8,
                               warm_start=True, max_features=3,min_samples_leaf=3,
                               oob_score=True,
                               random_state=42))
]

error_rate = OrderedDict((label, []) for label, _ in ensemble_clfs)

min_estimators = 10
max_estimators = 300

for label, clf in ensemble_clfs:
    for i in range(min_estimators, max_estimators + 1):
        clf.set_params(n_estimators=i)
        clf.fit(X, Y)

        # Record the OOB error for each `n_estimators=i` setting.
        ''''''
        oob_error = 1 - clf.oob_score_
        error_rate[label].append((i, oob_error))
        ''''''

Я ожидаю, что частота ошибок OOB снизится настолько низко, насколько это возможно, может быть до 0,1, что говорит о том, что моя проверка точна.Так что я могу применить его к тестовому набору Коэффициент ошибок OOB с количеством деревьев

...