【发布时间】: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 进行缩放,那么我应该使用哪些值?
【问题讨论】:
-
我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 stackoverflow.com/tags/machine-learning/info 中的介绍和注意事项跨度>
标签: python machine-learning scikit-learn svm