1 python machine-learning svm scikit-learn
假设我们有一个简单的培训案例和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])
Run Code Online (Sandbox Code Playgroud)
我们怎么能用无线性'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轻松地使用内核来计算内部产品,因此我们可以在不计算实际情况的情况下进行分类w.那是什么w究竟?它是以支持向量为中心的高斯的线性组合(其中一些具有负系数).您可以再次计算SUM y_i alpha_i f(x_i),在哪里f是特征投影(在这种情况下,它将是一个函数,返回以给定点为中心的高斯分布,方差等于1/(2gamma).实际决策边界现在被描述为此函数的内积和高斯中心在这一点上等于-b.
如果您的问题仅涉及绘制决策边界,您可以通过创建网格网格,计算SVM决策函数和绘制等高线图来实现
您的问题询问决策边界,但您的代码实际上是回归,而不是分类.在这种情况下,更可能的是你实际上在寻找回归线,而不是决策边界,但问题非常类似于分类案例 - "取出"关于该分类的信息仍然非常微不足道.因为它实际上只是无限维空间中的超平面.您仍然可以绘制它(如果以更简单的方式回归,然后使用SVC),但是没有漂亮的,"封闭形式"的回归方程.它仍然由这些支持向量和内核定义的内部产品定义.
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |