假设我们有一个简单的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_获得支持向量但是,支持向量和决策边界方程之间的对应关系是什么?
在具有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
,因此我们可以对without进行分类,从而计算出实际的w
。那么w
到底是什么?它是以支持向量为中心的高斯线性组合(其中一些具有负系数)。您可以再次计算SUM y_i alpha_i f(x_i)
,其中f
是特征投影(在这种情况下,它将是一个函数,返回以给定点为中心的高斯分布,方差等于1/(2gamma)
。现在将实际决策边界描述为点该函数的内积和以该点为中心的高斯等于-b
。
如果您的问题仅涉及决策边界,您可以通过创建网格,计算SVM决策函数并绘制contour plot来做到这一点>您的问题询问决策边界,但您的代码实际上运行 回归