sklearn的决策边界

问题描述 投票:1回答:1

假设我们有一个简单的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_获得支持向量但是,支持向量和决策边界方程之间的对应关系是什么?

python machine-learning svm scikit-learn
1个回答
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,因此我们可以对without进行分类,从而计算出实际的w。那么w到底是什么?它是以支持向量为中心的高斯线性组合(其中一些具有负系数)。您可以再次计算SUM y_i alpha_i f(x_i),其中f是特征投影(在这种情况下,它将是一个函数,返回以给定点为中心的高斯分布,方差等于1/(2gamma)。现在将实际决策边界描述为点该函数的内积和以该点为中心的高斯等于-b

如果您的问题仅涉及决策边界,您可以通过创建网格,计算SVM决策函数并绘制contour plot来做到这一点>您的问题询问决策边界,但您的代码实际上运行

回归

,而不是分类。在这种情况下,更有可能的是您实际上是在寻找回归线,而不是决策边界,但问题与分类情况非常相似-“取出”有关分类的信息仍然非常不简单。方程,因为它实际上只是无限维空间中的超平面。您仍然可以绘制它(在使用SVC进行回归的情况下,更简单的方法),但是您的回归没有很好的“封闭形式”方程式。这些支持向量仍然定义了它,内核定义了内部积。

© www.soinside.com 2019 - 2024. All rights reserved.