【问题标题】:Decision Boundary from sklearnsklearn 的决策边界
【发布时间】:2013-10-04 01:03:46
【问题描述】:

假设我们有一个简单的 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】:

    对于像带有 RBF 内核的 SVM 模型这样的复杂对象,没有“决策边界方程”这样的东西。至少不是直接的。

    首先,SVM 构造一个超平面w,然后通过计算内积<w,x> 并检查<w,x>+b 的符号(其中b 是经过训练的阈值)来分离数据。虽然在线性情况下,我们可以通过采用SUM y_i alpha_i x_i 来简单地重构w,其中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 以更简单的方式进行回归),但是您的回归没有很好的“封闭形式”方程。它仍然是由这些支持向量和内核定义的内积来定义的。

    【讨论】:

    • +1。至于绘图,scikit-learn 带有一个example,它为二维输入绘制 SVM 分类器的决策函数。可以轻松更改它以绘制 SVR 的预测。
    猜你喜欢
    • 2019-01-18
    • 2018-12-20
    • 2019-05-18
    • 2018-12-31
    • 2015-11-11
    • 2019-11-03
    • 2017-10-11
    • 2014-03-01
    • 2021-06-03
    相关资源
    最近更新 更多