【发布时间】:2012-04-25 06:14:31
【问题描述】:
如何找到向量 w 是什么,即垂直于分离平面?
【问题讨论】:
-
请给出解决方案,如何在JAVA中找到向量w?
如何找到向量 w 是什么,即垂直于分离平面?
【问题讨论】:
这就是我的做法here。如果我没记错的话,这是基于 SVM 优化的dual form 的结果。
model = svmtrain(...);
w = (model.sv_coef' * full(model.SVs));
而且偏见是(我真的不记得为什么它是负面的):
bias = -model.rho;
然后进行分类(对于线性 SVM),对于具有 N 个实例和 M 个特征的 N×M 数据集“特征”,
predictions = sign(features * w' + bias);
如果内核不是线性的,那么这不会给你正确的答案。
有关更多信息,请参阅 libsvm 手册中的How could I generate the primal variable w of linear SVM? 。
【讨论】:
[guess, acc, probs] = svmpredict(...);中的probs完全相同的结果。
w 和 bias 看起来是否合理?您将哪些选项传递给svmtrain?
arrayfun(@(i)a.svm.sv_coef' * exp(-a.svm.Parameters(4) .* sum((repmat(features(i, :), size(a.svm.SVs, 1), 1) - a.svm.SVs).^2, 2)) - a.svm.rho, 1:numel(labels))' 思路是我们在每个特征+支持向量上运行核函数,然后乘以SV系数,最后加上偏差。 Parameters(4) 是伽马参数。