【发布时间】:2020-02-01 21:13:20
【问题描述】:
我正在使用 RBF 内核 libsvm 进行分类任务。 我的数据集大约有 700 个向量,非常不平衡,大约 20% 正:80% 负。
我使用了几种特征评级算法,例如 libsvm 中的 boruta 或 fselect.py 来构建范围特征评级列表,然后从该列表中选择一些顶级特征。
我使用重复(大约 20 次)10 倍 CV 进行 SVM 参数 C 和 G 搜索。 ROC曲线的曲线下面积(AUC)值估计的误差。
问题是,当我获取更多特征时,AUC 值变得相当高(特征越多,AUC 值越大,超过 0.95),但测试误差在某些时候会增加,即它与大量特征过拟合!
特征的最佳数量位于中间的某个位置(在我的例子中大约是 30 个)。
增加 CV 中的重复或折叠数并没有多大帮助
我怎样才能避免这种情况? 我希望正确实现的 CV 总能在特征数量方面给出良好的正则化结果,即它应该给出具有大量特征的小 AUC 值。
【问题讨论】:
标签: machine-learning svm