我有两组预测相同输出的特征。但我不想一次训练所有的东西,而是想单独训练它们,并融合决策。在SVM分类中,我们可以取类的概率值,这些概率值可以用来训练另一个SVM。但在SVR中,我们如何做到这一点?
有什么想法吗?
感谢:)
这里有几个选择。最受欢迎的两个是:
一)
建立这两个模型并简单地对结果求平均值。
它在实践中往往很有效。
二)
当你有概率的时候,你可以用一种非常相似的方式来做。问题是,你需要控制过度拟合。我的意思是,用一组特征生成分数并应用于另一组标签与以前完全相同的特征(即使新特征不同)是"危险的"。这是因为新应用的分数是在这些标签上训练的,因此过于适合(超表现)。
通常使用交叉验证
在您的情况下,您有
- 具有X1特征和标签Y的train_set_1
- 具有X2特征和相同标签Y的train_set_2
一些psedo代码:
randomly split 50-50 both train_set_1 and train_set_2 at exactly the same points along with the Y (output array)
所以现在你有了:
a.train_set_1 (50% of training_set_1)
b.train_set_1 (the rest of 50% of training_set_1)
a.train_set_2 (50% of training_set_2)
b.train_set_2 (the rest of 50% of training_set_2)
a.Y (50% of the output array that corresponds to the same sets as a.train_set_1 and a.train_set_2)
b.Y (50% of the output array that corresponds to the same sets as b.train_set_1 and b.train_set_2)
这是的关键部分
Build a svr with a.train_set_1 (that contains X1 features) and output a.Y and
Apply that model's prediction as a feature to b.train_set_2 .
By this I mean, you score the b.train_set_2 base on your first model. Then you take this score and paste it next to your a.train_set_2 .So now this set will have X2 features + 1 more feature, the score produced by the first model.
Then build your final model on b.train_set_2 and b.Y
新模型虽然使用了training_set_1产生的分数,但它仍然以一种公正的方式进行,因为后来的模型从未在这些标签上进行过训练!
你可能还会发现这篇论文非常有用