【问题标题】:Feature scaling in Gradient descent with single feature具有单个特征的梯度下降中的特征缩放
【发布时间】:2019-03-25 21:23:52
【问题描述】:

我正在编写线性回归代码,其中我的模型将根据区域预测房屋价格。所以,我只有一个特征就是房子的面积,而我的输出就是价格。我的输入是在 1000 - 9000 范围内的区域,房屋的价格在 280000 - 800000 范围内。那么我应该如何执行特征缩放以及如何使用输出来管理它。我的意思是问,如果我将房屋面积置于 0 - 1 范围内,房价也在 0 - 1 范围内,然后找出 theta1 和 theta2 的值(因为我正在应用线性回归方程,如输出 = theta1 + theta2*输入)或者我应该将房价缩小到 1000 - 9000 的范围内。

我正在应用特征缩放,其中我将值输入和输出都置于 0 - 1 之间,我的模型没有给出正确的答案。我可以找出其中的错误,但我无法纠正它。请告诉我应该如何进行。

【问题讨论】:

  • 我正在使用 python。

标签: machine-learning linear-regression gradient-descent


【解决方案1】:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import normalize
import numpy as np
X=np.random.randint(1000,9000,(10,))
Y=np.random.randint(100,200,(10,))+100*X
reg = LinearRegression().fit(X.reshape(-1,1), Y)
print(reg.score(X.reshape(-1,1),Y))
print(reg.coef_)
0.9999999822251018
[100.00518473]

X1=normalize(X.reshape(-1,1),axis=0)
Y1=normalize(Y.reshape(-1,1),axis=0)
reg = LinearRegression().fit(X1.reshape(-1,1), Y1)
print(reg.score(X1.reshape(-1,1),Y1))
print(reg.coef_)

0.9999999822251019
[[0.99982554]]

这只是使用非归一化和归一化数据的普通线性回归。在这些情况下不会有任何区别。只有您问题的标题包含“梯度下降”所以如果您使用梯度下降法,权重将自动调整。

因为正常的 SGD 是: w=w-alpha*delta

其中 alpha 是学习率,权重会随着时间的推移自动调整。所以这两者没有区别。只有标准化的那个必须处理小于 1 的数字,所以计算会更容易。

【讨论】:

  • 是的,但是如何缩放输入和输出。例如,我的输入是 2000,相应的输出是 200000。所以,如果我将这两个值按比例缩小到 0 到 1 之间,它将如何工作。 theta1 和 theta2 的值将不正确。我的问题是输入值和输出值缩放之间的关系。
  • theta2 也可以是 100 所以 theta1+x*theta2=y theta1,thetha2 属于 (-inf,inf)
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 2020-05-31
  • 2018-07-21
  • 1970-01-01
  • 2018-01-02
  • 2020-12-22
  • 2020-04-21
  • 1970-01-01
相关资源
最近更新 更多