萌新的机器学习笔记之二:Gradient Descent Demo(回归Demo HYLee课程)
利用Gradient Descent找出Regression的参数
(部分代码)
- 数据录入
x_data = [338.,333.,328.,207.,226.,25.,179.,60.,208.,606.]
y_data = [640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.]
- 利用如下代码,求b,w的最合理的值
x = np.arange(-200,-100,1)
y = np.arange(-5,5,0.1)
z = np.zeros((len(x),len(y)))
x,y = np.meshgrid(x,y)
for i in range(len(x)):
for j in range(len(y)):
b = x[i]
w = y[j]
z[j][i] = 0
for n in range(len(x_data)):
z[j][i] = z[j][i]+(y_data[n]-b-w*x_data[n])**2
z[j][i]=z[j][i]/len(x_data)
- **对b和w关于loss y求偏导,不断 update b和w 的值,调整learning rate的值(放大或缩小),使图像不断逼近最优解
**
b=-120
w=-4
lr=0.0000001
iteration=100000
b_history=[b]
w_history=[w]
for n in range(len(x_data)):
b_grad=b_grad-2.0*(y_data[n]-b-w*x_data[n])*1.0
w_grad=w_grad-2.0*(y_data[n]-b-w*x_data[n])*x_data[n]
b=b-lr*b_grad
w=w-lr*w_grad
得到图像(不理想的)
4. 客制化learning rate
在10万次update内找到合理的参数值