线性回归成本函数和梯度下降

时间:2019-04-04 03:46:51

标签: linear-regression

我研究数据科学和ML主题已有一段时间了,我总是一度陷入困境,这使我感到非常困惑。

在类似Andrew Ng的课程中,定义为预测值和真实值之间的误差,例如线性回归表示为:

错误=预测值-y

在其他一些教程/课程中,错误表示为:

错误= y-预测值

例如,在Udacity的数据科学Nanodegree上,梯度下降权重更新由以下公式给出:

错误= y-预测值
W_new = W +学习率* np.matmul(错误,X)

同时,在其他几本书籍/课程中,相同的过程由给出:

错误=预测值-y
W_new = W-学习率* np.matmul(错误,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

运行第一和第二种情况,我得到: enter image description here

第三种情况:

# 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

运行第三种情况,我得到:

enter image description here

这正是我想要实现的直觉。 使用 error = y-y_pred 和必须将步长计算用作正数 W_new = W + learning_rate * np.matmul(error,X)之间的关系是什么? W_new = W-学习率* np.matmul(错误,X)吗?



谢谢您的支持!!!!

1 个答案:

答案 0 :(得分:1)

error = predicted_value - y
error' = y - predicted_value = -error
W = W + lr * matmul(error, X) = W + lr * matmul(-error', X) = W - lr * matmul(-error', X)

这两个表达式是看同一件事的两种方式。您向后传播错误。

说实话,第二个更清楚地说明了幕后发生的事情-误差只是相对于地面真实情况所预测的模型之间的差异(所预测的解释-y)。梯度下降步骤是关于沿与梯度相反的方向改变权重(解释负号)。