【发布时间】:2019-04-04 03:46:50
【问题描述】:
我研究数据科学和机器学习主题已经有一段时间了,但我总是有一个让我很困惑的地方。
在像吴恩达这样的课程中,它定义了预测值与真实值之间的误差,例如线性回归表示为:
误差 = 预测值 - y
在其他一些教程/课程中,错误显示为:
误差 = y - 预测值
另外,例如,在 Udacity 的数据科学纳米学位中,梯度下降权重更新由下式给出:
误差 = y - 预测值
W_new = W + learn_rate * np.matmul(error, X)
同时,在其他几本书/课程中,相同的程序由:
误差 = 预测值 - y
W_new = W - learn_rate * np.matmul(error, X)
有人可以帮我解决这些不同的符号吗?
谢谢!
编辑
按照@bottaio 的回答,我得到了以下信息:
第一种情况:
# compute errors
y_pred = np.matmul(X, W) + b
error = y_pred - y
# compute steps
W_new = W - learn_rate * np.matmul(error, X)
b_new = b - learn_rate * error.sum()
return W_new, b_new
第二种情况:
# compute errors
y_pred = np.matmul(X, W) + b
error = y - y_pred
# compute steps
W_new = W + learn_rate * np.matmul(error, X)
b_new = b + learn_rate * error.sum()
return W_new, b_new
第三种情况:
# compute errors
y_pred = np.matmul(X, W) + b
error = y_pred - y
# compute steps
W_new = W + learn_rate * np.matmul(error, X)
b_new = b + learn_rate * error.sum()
return W_new, b_new
运行第三种情况,我得到:
这正是我想要实现的直觉。 使用 error = y - y_pred 和必须将步骤计算用作正 W_new = W + learn_rate * np.matmul(error, X) 之间的关系是什么? W_new = W - learn_rate * np.matmul(error, X) ?
谢谢大家的支持!!!!!!
【问题讨论】: