对于支持向量机回归,我应该缩放结果变量吗?结果变量缩放在SVM回归中的影响有多大?
发布于 2021-02-25 16:36:56
这是一个来自CrossValidated的交叉张贴:
在支持向量回归(线性损失)中,我们将目标函数最小化:
从条件中可以看出,\varepsilon和松弛变量\xi_i, \hat \xi_i与输出变量y_i具有相同的规模。因此,当您缩放y时,您需要缩放\varepsilon。另一方面,在目标函数中,\mathbf{w}以二次型方式进入,而松弛变量则是线性的。为了保持平衡不变,还需要缩放乘数因子C。
假设您相应地调整了超参数,则缩放不会产生任何影响:
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)则生成:

https://datascience.stackexchange.com/questions/89673
复制相似问题