【问题标题】:Should epsilon in Support Vector Regression be scaled? [closed]支持向量回归中的 epsilon 是否应该缩放? [关闭]
【发布时间】:2021-12-22 00:47:24
【问题描述】:

当使用来自 Scikit-learn 的支持向量回归 (SVR) 时,建议对数据进行缩放,因为支持向量机算法不是缩放不变的(请参阅 user guide)。这可以通过standardScaler()MinMaxScaler() 完成。

但是,我是否也应该缩放参数 Epsilon 的可能值?

Epsilon 指定 epsilon-tube,在该 epsilon-tube 中,训练损失函数中没有与预测点在距离实际值 epsilon 内的点相关联。如果我理解正确,这意味着如果我想建立一个模型来预测房价并且我允许我的预测是 5000 欧元(即更高或更低),那么我的 epsilon 可能是“5000”。

由于 SVR 算法不知道原始房价,只知道缩放后的价格,因此使用相同的过程也可以缩放 epsilon 值。这是正确的吗?

例如,如果我在 0 和 1 之间调整房价。

prices = np.array([[0], [100000], [150000], [200000], [180000]])
scaler_x = MinMaxScaler(feature_range=(0, 1))
prices_scaled = scaler_x.fit_transform(prices) 
print(prices_scaled )
>>> [[0.  ]
 [0.5 ]
 [0.75]
 [1.  ]
 [0.9 ]]

我应该在 epsilon 上使用相同的缩放比例(即 5000 --> 0.025)吗?

cv = ShuffleSplit(n_splits = 10, test_size = 0.25, random_state = 0)
grd = GridSearchCV(estimator=SVR(kernel='linear'),
                        param_grid={'C': c_list,
                                    'epsilon': [0.025]}, #scaled epsilon instead of 5000?
                        cv=cv, scoring='r2')

grid_result = grd.fit(predictors_scaled, prices_scaled )

请注意,预测变量也被缩放,但使用了另一种缩放。

在这个example 中,预测变量和响应都被缩放了,但是没有提到 epsilon 也应该被缩放。

如果不必对 epsilon 进行缩放,那么我应该使用哪些值?

【问题讨论】:

标签: python machine-learning scikit-learn svm


【解决方案1】:

由于epsilon 决定了实际与预测的灵活性,我们也需要重新调整它。现在,您是否需要完全相同级别的缩放,这是我不确定的。虽然理论上听起来是这样(查看tutorial 的 eq. 4),但我的直觉说它会给出一个粗略(仍然足够好)的 epsilon 范围测量值(实际上)。

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 2010-09-17
    • 2019-11-25
    • 2019-06-07
    • 2019-05-11
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多