【发布时间】:2013-12-26 03:05:41
【问题描述】:
我正在使用 python sklearn 包中实现的 RandomForestClassifier 来构建二进制分类模型。下面是交叉验证的结果:
Fold 1 : Train: 164 Test: 40
Train Accuracy: 0.914634146341
Test Accuracy: 0.55
Fold 2 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.707317073171
Fold 3 : Train: 163 Test: 41
Train Accuracy: 0.889570552147
Test Accuracy: 0.585365853659
Fold 4 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.756097560976
Fold 5 : Train: 163 Test: 41
Train Accuracy: 0.883435582822
Test Accuracy: 0.512195121951
我正在使用“价格”功能来预测“质量”,这是一个序数值。在每个交叉验证中,有 163 个训练样例和 41 个测试样例。
显然,这里发生了过拟合。那么有没有sklearn提供的参数可以用来克服这个问题呢?我找到了一些参数here,例如min_samples_split 和 min_sample_leaf,但我不太明白如何调整它们。
提前致谢!
【问题讨论】:
-
您是否尝试过使用 ExtraTreesClassifier?如果您有多个预测变量,这将有所帮助。如果你只训练一个预测器并且你只有 200 个样本,我认为你总是会有某种程度的过拟合。
-
您的测试准确度差异很大,但您的样本集非常小。如果您打算建议 overfitting 作为训练/测试准确性的最大差异,即 not 过拟合:考虑使用最近邻,训练错误总是会得到 0。 (所以训练精度在这里没有意义。)
-
您是说您试图仅使用“价格”来预测“质量”吗?如果是这样,那么随机森林不是最好的方法。尝试逻辑回归分类器。
-
如果您实际上有多个 X 变量用于预测“质量”并且您的类别不平衡(class= 0 多于 class= 1,反之亦然)然后尝试在交叉验证期间使用 StratifiedShuffleSplit .
标签: python machine-learning scikit-learn decision-tree random-forest