首页 > 解决方案 > 如何从回归问题的 OOB 分数估计 OOB 错误率

问题描述

我在 sklearn,python 中使用随机森林回归包。我的数据集包含 146 个训练样本和 38 个测试样本。我已经训练了模型,但我想通过改变 num_features 来绘制带有树数的 OOB 错误率。将选择对特定数量的树给出最小 OOB 误差的曲线作为测试集的最佳模型参数。

我将OOB错误率计算为(1-OOB分数)。但最佳曲线的 OOB 错误率从 0.8 下降到 0.625。这意味着即使有大量树木(300),我的 OOB 分数也没有太大提高。我想知道我是否遵循正确的程序来绘制 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 错误率与树的数量

标签: python-3.xregressionrandom-forest

解决方案


推荐阅读