【发布时间】:2015-05-27 03:48:35
【问题描述】:
目前我的 SGD 收敛标准检查 MSE 错误率是否在特定边界内。
def compute_mse(data, labels, weights):
m = len(labels)
hypothesis = np.dot(data,weights)
sq_errors = (hypothesis - labels) ** 2
mse = np.sum(sq_errors)/(2.0*m)
return mse
cur_mse = 1.0
prev_mse = 100.0
m = len(labels)
while cur_mse/prev_mse < 0.99999:
prev_mse = cur_mse
for i in range(m):
d = np.array(data[i])
hypothesis = np.dot(d, weights)
gradient = np.dot((labels[i] - hypothesis), d)/m
weights = weights + (alpha * gradient)
cur_mse = compute_mse(data, labels, weights)
if cur_mse > prev_mse:
return
权重是更新的 w.r.t。到训练集中的单个数据点。
alpha 为 0.001,模型应该在几次迭代内收敛,但我没有收敛。这个收敛标准是不是太严格了?
【问题讨论】:
-
可能是您没有正确计算梯度。我在任何地方都看不到梯度计算。
-
@iluengo 我已经添加了我用来执行此操作的代码。
标签: python linear-regression gradient-descent