我使用Sklearn和Caffe从大量训练和测试图像中提取了特征。为了进行特征提取,我使用了Caffe Model Zoo中的3个不同的预训练卷积网络。
使用这3组特征中的任何一组,我都可以训练一个在测试数据上准确率约为80%的SVM。但是,如何最好地利用所有3组特征的优势呢?
我尝试过简单地将3个独立SVM的结果平均(平均每个标签的概率预测),但这并没有比单一模型带来任何改进。
将特征集连接成一个大的集合,然后用它来训练SVM(或其他模型)会有所帮助吗?
请注意,数据集是多类多标签的。谢谢。
回答:
这种组合特征的方法并不好。在机器学习中,我们使用集成技术。集成技术包括:装袋(bagging)、提升(boosting)、堆叠(stacking)和层次(hierarchy)。根据我的经验,我喜欢使用提升或堆叠。提升是一种贪婪的学习策略,它不断改变数据的分布以及用于训练每个基础学习器的特征,使得后续的基础学习器能够专注于难处理的样本。了解一下Viola-Jones Adaboost分类器。如果你有严重的数据不平衡问题,可以了解一下SMOTEBoost算法。