我同意@Falcon wrt的数据集大小。主要问题可能在于数据集的大小。如果可能的话,您能做的最好的事情就是获取更多的数据,更多的数据(通常)越不可能拟合得越好,因为随着数据集大小的增加,出现预测性的随机模式开始被淹没。
也就是说,我将查看以下参数:
- n_estimators:@Falcon是错误的,通常树越多,算法过拟合的可能性就越小 。因此,请尝试增加此值 。该数字越小,模型越接近具有受限功能集的决策树。
- max_features:尝试减少此数量(尝试使用30-50%的功能)。这确定了每棵树被随机分配多少个特征。尺寸越小,过度拟合的可能性越小,但是过小的尺寸会开始引入拟合不足。
- max_depth:尝试一下。这将降低学习模型的复杂性,降低拟合风险。尝试从5-10开始,从小开始,增加您可获得最佳结果。
- min_samples_leaf:尝试将其设置为大于1的值。这与max_depth参数具有相似的效果,这意味着一旦叶子每个具有相同数量的样本,分支将停止分裂。
做这项工作时要注意科学。使用3个数据集,一个训练集,一个单独的“开发”数据集来调整参数,以及使用最佳参数测试最终模型的测试集。一次只更改一个参数并评估结果。或尝试使用sklearn网格搜索算法一次搜索所有这些参数。
0
我正在使用在python sklearn包中实现的RandomForestClassifier构建二进制分类模型。以下是交叉验证的结果:
我正在使用“价格”功能来预测“质量”,这是一个序数值。在每个交叉验证中,都有163个训练示例和41个测试示例。
显然,过度拟合在这里发生。那么,sklearn提供的任何参数都可以用来克服此问题吗?我在这里找到了一些参数,例如min_samples_split和min_sample_leaf,但我不太了解如何调整它们。
提前致谢!