【问题标题】:Why does scaling the features affect the prediction of a regression?为什么缩放特征会影响回归的预测?
【发布时间】:2017-06-27 00:03:54
【问题描述】:

我正在使用来自 sklearn 的支持向量回归模型并使用 MinMax 来缩放特征来解决回归问题,但是通过使用它我得到了不同的回归结果,这有意义吗?

import pandas as pd
import numpy as np
from sklearn import  svm
from sklearn.preprocessing import MinMaxScaler

np.random.seed(0)
X_training = np.random.rand(100,15)*10
Y_training = np.random.rand(100,1)*10
model = svm.SVR()

没有缩放:

model.fit(X_training,Y_training)
print model.predict(X_training)[0:10]

array([ 4.99980599,  6.99479293,  4.9784396 ,  5.03911175,  6.99557904,
        6.57214885,  6.99454049,  5.60940831,  6.99989978,  5.98628179])

使用 MinMax 缩放器:

scaler = MinMaxScaler()
X_scaled  = scaler.fit_transform(X_training)
model.fit(X_scaled,Y_training)
model.predict(X_scaled)[0:10]

array([ 5.63521939,  6.70378514,  5.83393228,  5.33274858,  6.47539108,
        5.61135278,  5.7890052 ,  5.74425789,  6.15799404,  6.1980326 ])

虽然预测的数量级相同,但两种情况之间存在显着差异。

【问题讨论】:

    标签: python machine-learning regression svm


    【解决方案1】:

    对于正常的线性回归,缩放特征值应该没有效果是正确的。这里的区别在于 sklearn 的默认 SVM 内核不是线性的。

    基于 svm.SVR 的 docs

    • kernel参数:如果没有给出,将使用'rbf'。

    • gamma 参数:“rbf”、“poly”和“sigmoid”的核系数。如果 gamma 为“auto”,则将使用 1/n_features。

    RBF 内核看起来很复杂,但事实并非如此。如果特征向量与基向量匹配,它基本上只产生 1.0,并产生一个随着距离越远越接近 0 的数字。 gamma 参数控制它如何随距离下降。 sklearn 默认 gamma 参数显然是一个固定值,具体取决于您拥有的功能数量。因此,如果您放大和缩小特征向量,您会期望得到稍微不同的结果。

    我希望如果您更改为 kernel=‘linear’,您将得到完全相同的预测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2014-02-05
      • 2019-10-15
      • 2018-01-02
      • 2021-10-15
      • 2018-09-27
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多