【发布时间】:2019-01-24 18:07:20
【问题描述】:
我已经尝试使用多变量回归的这段代码来查找系数,但找不到我犯错的地方或者我是否走在正确的道路上? 问题是 mse 值没有收敛。
这里 x1 , x2 , x3 是我拥有的 3 个特征变量(我已将每个特征列切成这些 x1 , x2 ,x3 变量)
def gradientDescent(x,y):
mCurrent1=mCurrent2=mCurrent3=bCurrent=0
iteration=1000
learningRate=0.0000001
n=len(x)
for i in range(0,iteration):
y_predict=mCurrent1*x1+mCurrent2*x2+mCurrent3*x3+bCurrent
mse=(1/n)*np.sum([val**2 for val in (y-y_predict)])
mPartDerivative1=-(2/n)*np.sum(x1*(y-y_predict))
mPartDerivative2=-(2/n)*np.sum(x2*(y-y_predict))
mPartDerivative3=-(2/n)*np.sum(x3*(y-y_predict))
bPartDerivative=-(2/n)*np.sum(y-y_predict)
mCurrent1=mCurrent1-(learningRate*mPartDerivative1)
mCurrent2=mCurrent2-(learningRate*mPartDerivative2)
mCurrent3=mCurrent3-(learningRate*mPartDerivative3)
bCurrent=bCurrent-(learningRate*bPartDerivative)
print('m1:{} m2:{} m3:{} b:{} iter:{} mse:{}'.format(mCurrent1,mCurrent2,mCurrent3,bCurrent,i,mse))
return(round(mCurrent1,3),round(mCurrent2,3),round(mCurrent3,3),round(bCurrent,3))
【问题讨论】:
-
因为 mse 正在减少。如果您以更大的学习率进行更多迭代,这将收敛。如果您的数据嘈杂,您可以拥有较高的 MSE,但这不是收敛问题。
标签: python machine-learning linear-regression gradient-descent