我正在处理一个有监督的学习问题,并试图预测一个二进制标签,并使用随机森林进行预测。
我试着调整我的超参数,根据我的数据给我一个最好的模型。我可以用GridSearchCV()来做这件事,但是对于随机森林来说,这是正确的吗?如果我使用的是GridSearchCV(),那么训练集和测试集就会随每个折叠而变化。根据我的理解,我们可以在oob_true = True中设置RandomForestClassifier(),我们已经在评估外包装样品(所以简历已经在射频中建立了)。
使用随机森林获得最佳OOB成绩的规则是什么?我能不能只循环一组参数,并适合同一训练和测试集?我可以使用GridSearchCV()吗,或者这对RF没有意义吗?
发布于 2020-06-19 19:06:33
您绝对可以在随机森林中使用GridSearchCV。实际上,您应该使用GridSearchCV来找到使您的oob_score非常高的最佳参数。
需要调优的一些参数如下:
n_estimators:你的随机森林应该有多少棵树。n_estimators越多,越位越少。你应该尝试从100到5000范围。
max_depth:每棵树的max_depth。您应该指定特定的max_depth,这样您的模型就不会记住训练示例。
min_sample_split:分裂成新节点之前的最小样本数。
还有更多..。
但是,这些是我们调优的主要超参数,以获得一个工作为well.And的林中,以获得这些应该使用GridSeachCV的超参数。
发布于 2020-06-20 07:23:37
您可以很好地使用GridSearchCV来微调RandomForest。
我不明白您所说的“如果我使用GridSearchCV(),训练集和测试集随每个折叠而改变”。
通常,在进行列车测试拆分之后,我们将GridSearchCV应用于test_data集。交叉验证将培训数据拆分为多个培训,并根据您提供的K折叠值进行测试拆分。例如,如果k值为10,则将训练数据分割成10倍,其中1用于测试,9一起用于培训。这会发生,直到所有的10倍被用来测试,所以你将得到10个准确性评分。此外,在gridsearchcv中,我们根据我们使用的模型传递一组超参数。这有助于为模型找到最佳的超参数,以获得最佳的精度分数,并避免过度拟合。
另一方面,oob是随机森林模型中一些看不见的数据。
如果你需要更详细的信息,请告诉我。
希望这是有帮助的
发布于 2020-06-21 01:41:38
我可以用
GridSearchCV()来做这件事,但是对于随机森林来说,这是正确的吗?
是的,这是完全正确的。它忽略了随机森林的oob得分特性,但这并不一定是一件坏事。参见例如https://stats.stackexchange.com/a/462720/232706
使用随机森林获得最佳OOB成绩的规则是什么?我能不能只循环一组参数,并适合同一训练和测试集?
我相信这将是使用oob评分进行调优的标准方法,只是在这种情况下没有测试集。(您可能希望为最终选择的模型的未来性能评估设置一个测试集:根据这些oob分数选择超参数意味着它们不再是对未来性能的无偏估计,就像k倍交叉验证中的那样!)你的超参数候选模型不应该看到那个测试集。)
为了利用sklearn中超参数搜索的各种便利(并行化、保存的结果、重新配置的最佳模型等),您可以像我在回答另一个问题时一样黑它:
https://datascience.stackexchange.com/a/66238/55122
您不能在GridSearchCV中直接使用oob评分,因为这是为了将评分功能应用于每个拆分中的测试折叠。
https://datascience.stackexchange.com/questions/76304
复制相似问题