【发布时间】:2014-06-10 13:17:34
【问题描述】:
我有两组预测相同输出的特征。但不是一次训练所有东西,我想分别训练它们并融合决策。在 SVM 分类中,我们可以获取可用于训练另一个 SVM 的类的概率值。但是在 SVR 中,我们怎么能做到这一点呢?
有什么想法吗?
谢谢:)
【问题讨论】:
标签: matlab regression svm post-processing liblinear
我有两组预测相同输出的特征。但不是一次训练所有东西,我想分别训练它们并融合决策。在 SVM 分类中,我们可以获取可用于训练另一个 SVM 的类的概率值。但是在 SVR 中,我们怎么能做到这一点呢?
有什么想法吗?
谢谢:)
【问题讨论】:
标签: matlab regression svm post-processing liblinear
这里有几个选择。最受欢迎的两个是:
一个)
构建两个模型并简单地平均结果。
它在实践中往往效果很好。
两个)
你可以用与你有概率时非常相似的方式来做这件事。问题是,您需要控制过度拟合。我的意思是,用一组特征产生分数并应用于标签与以前完全相同的另一组特征是“危险的”(即使新特征是不同的)。这是因为新应用的分数是在这些标签上训练的,因此过度拟合(超表现)。
通常你使用Cross-validation
在你的情况下,你有
一些伪代码:
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 产生的分数,但它仍然以一种不偏不倚的方式这样做,因为后者从未在这些标签上进行过训练!
您可能还会发现这个paper 非常有用
【讨论】: