首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结果变量缩放在支持向量机回归中有多重要?

结果变量缩放在支持向量机回归中有多重要?
EN

Data Science用户
提问于 2021-02-20 20:29:28
回答 1查看 84关注 0票数 0

对于支持向量机回归,我应该缩放结果变量吗?结果变量缩放在SVM回归中的影响有多大?

EN

回答 1

Data Science用户

发布于 2021-02-25 16:36:56

这是一个来自CrossValidated的交叉张贴:

在支持向量回归(线性损失)中,我们将目标函数最小化:

\begin{align} \min_{\mathbf{w}, b, \mathbf{\xi}} \quad & \frac{1}{2}\| \mathbf{w}\|^2 + C\sum_i \mathbf{\xi}_i + \mathbf{\hat \xi}_i \\ \text{s.t.} \quad & (\mathbf{w} \cdot \mathbf{x}_i + b) - y_i \leq \varepsilon + \xi_i \\ \quad & y_i - (\mathbf{w} \cdot \mathbf{x}_i + b) \leq \varepsilon + \hat \xi_i \\ \quad & \xi_i, \hat \xi_i \geq 0 \end{align}

从条件中可以看出,\varepsilon和松弛变量\xi_i, \hat \xi_i与输出变量y_i具有相同的规模。因此,当您缩放y时,您需要缩放\varepsilon。另一方面,在目标函数中,\mathbf{w}以二次型方式进入,而松弛变量则是线性的。为了保持平衡不变,还需要缩放乘数因子C

假设您相应地调整了超参数,则缩放不会产生任何影响:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm


def svmTest(x, y1, sc=1):
  N = x.shape[0]
  x = x.reshape([-1, 1])
  regr = svm.SVR(C=sc*N/100, epsilon=sc*.2)
  y2 = sc*y1
  regr.fit(x, y2)
  y2p = regr.predict(x)
  
  plt.plot(x, y2, '.', )
  plt.scatter(x[regr.support_], y2[regr.support_], s=80, facecolors='none', edgecolors='r')
  plt.plot(x, y2p, '-')
  plt.gca().set_title(f'Outcome variable scaled by {sc}')


x = np.arange(-1, 1, .01)
y = np.cos(2*np.pi*x)*np.exp(-np.abs(x)) + np.random.normal(0, .1, x.shape[0])
x = x.reshape([-1, 1])

svmTest(x, y, 1)生产:

svmTest(x, y, 1e6)则生成:

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/89673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档