如何为ANN特征提取+SVM分类的混合模型执行交叉验证?
ANN+SVM混合模型的交叉验证正确做法
绝对不要先全量用ANN提取特征再对SVM做交叉验证
这种做法会导致严重的数据泄露:你的ANN在训练时接触到了所有样本(包括后续交叉验证里的测试集数据),提取的特征已经隐含了测试集的信息,最终SVM的交叉验证结果会大幅高估模型实际性能,完全不能反映模型在真实未知数据上的表现。正确方式:对整个ANN+SVM组合模型执行交叉验证
具体流程如下:- 将所有数据集划分为K份(常用K=5或10)
- 循环K次:
- 取其中K-1份作为本轮训练集,剩余1份作为测试集
- 仅用本轮训练集训练ANN(全程不能碰测试集数据)
- 用训练好的ANN对本轮训练集提取特征,再用这些特征训练SVM
- 用同一ANN对本轮测试集提取特征,再用训练好的SVM完成预测并计算性能指标
- 最终取K次循环的性能指标平均值,作为模型的评估结果
特殊情况:如果你的ANN是预训练完成的独立模型(比如用公开通用数据集训练,而非基于当前项目数据集训练),那么可以先全量提取特征再对SVM做交叉验证——因为此时ANN的训练过程和当前任务的测试集完全无关,不会产生数据泄露。
内容的提问来源于stack exchange,提问作者Mutyala Venkata Sai Subhash Na
相关产品推荐
相关产品推荐

