假设我们有一个简单的培训案例和SVM的培训目标
from sklearn import svm
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = svm.SVR()
>>> clf.fit(X, y)
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3,
epsilon=0.1, gamma=0.0, kernel='rbf', max_iter=-1, probability=False,
random_state=None, shrinking=True, tol=0.001, verbose=False)
>>> clf.predict([[1, 1]])
array([ 1.5])
我们如何才能获得无线性'rbf'内核的决策边界? 我们可以通过clf.suppport_vectors_获得支持向量 但是,支持向量和决策边界方程之间的对应关系是什么?
谢谢,
答案 0 :(得分:8)
在具有RBF内核的SVM模型这样的复杂对象的情况下,没有“决策边界方程”这样的东西。至少不是直接的。
首先,SVM构造一个超平面w
,然后通过计算内积<w,x>
并检查<w,x>+b
的符号(其中b
是训练有素的门槛)。在线性情况下,我们可以通过w
,其中SUM y_i alpha_i x_i
是支持向量,x_i
他们的类和y_i
找到的双重系数来简单地重建alpha_i
在优化过程中,当我们处理由RBF内核引起的无限维空间时,它要复杂得多。所谓的内核技巧表明,我们可以轻松地使用内核计算内积<w,x>+b
,因此我们可以将分类,而不用来计算实际的w
。那么w
究竟是什么?它是以支持向量为中心的高斯的线性组合(其中一些具有负系数)。您可以再次计算SUM y_i alpha_i f(x_i)
,其中f
是一个要素投影(在这种情况下,它将是一个函数,返回以给定点为中心的高斯分布,方差等于1/(2gamma)
。实际决策现在将边界描述为这个函数的内积与此点居中的高斯等于-b
的点。
如果您的问题仅涉及绘图决策边界,您可以通过创建网格网格,计算SVM决策函数并绘制contour plot
来实现您的问题询问决策边界,但您的代码实际上运行回归,而不是分类。在这种情况下,更可能的是你实际上在寻找回归线,而不是决策边界,但问题非常类似于分类案例 - “取出”关于该分类的信息仍然非常微不足道。因为它实际上只是无限维空间中的超平面。您仍然可以绘制它(如果以更简单的方式回归,然后使用SVC),但是没有漂亮的,“封闭形式”的回归方程。它仍然由这些支持向量和内核定义的内部产品定义。