1

我正在使用 scikit-learn 的 LinearSVC SVM 实现,并且正在尝试理解多类预测。查看 coef_ 和 intercept_ 我可以得到超平面权重。例如,在我的两个特征和四个标签的学习问题上,我得到

f0 =  1.99861379*x1 - 0.09489263*x2 + 0.89433196
f1 = -2.04309715*x1 - 3.51285420*x2 - 3.1206355
f2 =  0.73536996*x1 + 2.52111207*x2 - 3.04176149
f3 = -0.56607817*x1 - 0.16981337*x2 - 0.92804815

当我使用 decision_function 方法时,我得到与上述函数相对应的值。但文件

样本的置信度分数是该样本到超平面的有符号距离。

但是decision_function 不返回有符号距离,它只返回f()。

更具体地说,我假设 LinearSVC 使用具有常数 1 特征的标准技巧来表示阈值。(这可能是错误的。)对于我的示例问题,这给出了一个三维特征空间,其中实例始终采用 (1,x1,x2) 形式。假设没有其他阈值项,该算法将学习一个超平面 w=(w0, w1, w2),该超平面通过该三维空间中的原点。现在我得到一个预测点,称之为 z=(1,a,b)。该点到超平面的有符号距离(边距)是多少。它只是点(w,z)/2norm(w)。LinearSVC 代码返回 dot(w,z)

谢谢,克里斯

4

0 回答 0