【发布时间】:2021-04-07 13:02:17
【问题描述】:
我对分类算法比较有疑问。
我正在做一个关于数据集的超参数调整和分类模型比较的项目。 目标是为我的数据集找出具有最佳超参数的最佳拟合模型。
例如:我有 2 个分类模型(SVM 和随机森林),我的数据集有 1000 行和 10 列(9 列是特征),最后一列是 lable。
首先,我将数据集分成 2 部分 (80-10) 用于相应的训练(800 行)和测试(200 行)。之后,我使用 CV = 10 的网格搜索来调整具有这 2 个模型(SVM 和随机森林)的训练集的超参数。当为每个模型确定超参数后,我使用这两个模型的这些超参数再次测试训练集和测试集上的 Accuracy_score,以找出最适合我的数据的模型(条件:训练集上的 Accuracy_score
但是,SVM 显示训练集的 accuracy_score 为 100,测试集的 accuracy_score 为 83.56,这意味着调整超参数的 SVM 过度拟合。另一方面,随机森林显示训练集的accuracy_score为72.36,测试集的accuracy_score为81.23。很明显,SVM测试集的accuracy_score要高于Random Forest测试集的accuracy_score,但是SVM是过拟合的。
我有一些问题如下:
_ 当我对上述训练和测试集的accuracy_score 进行比较而不是使用交叉验证时,我的方法是否正确? (如果使用交叉验证,怎么做?
_ 很明显上面的SVM是过拟合的,但是它的测试集accuracy_score高于Random Forest测试集的accuracy_score,我可以断定在这种情况下SVM是最好的模型吗?
谢谢!
【问题讨论】:
-
您不想在训练集上再次使用调整后的超参数。您应该报告 10 次 CV 运行的平均 CV 分数。另一件需要注意的事情是,如果您想有效地比较两个模型,您的 CV 样本必须相同。如果您还没有这样做,请考虑使用相同的随机数种子生成器。
标签: python machine-learning model comparison hyperparameters