[英]Gradient descent and normal equation method for solving linear regression gives different solutions
[英]Gradient Descent and Normal Equation give different theta values for multivariate linear regression.Why?
for iter = 1:num_iters
theta = theta - (alpha / m) * X' * (X * theta - y);
J_history(iter) = computeCostMulti(X, y, theta);
end
function J = computeCostMulti(X, y, theta)
m = length(y);
J = 0;
J = 1 / (2 * m) * (X * theta - y)' * (X * theta - y);
theta = pinv(X' * X) * X' * y;
对于相同的 X 和 y 值,这两种实现会收敛到不同的 theta 值。 正态方程给出了正确的答案,但梯度下降给出了错误的答案。
梯度下降的实现有什么问题吗?
我想当你使用梯度下降时,你首先使用特征缩放来处理你的输入。 这不是用正常方程方法完成的(因为不需要特征缩放),这应该导致不同的 theta。 如果您使用模型进行预测,它们应该得出相同的结果。
没关系。 由于您没有进行特征缩放以使用正规方程,您会发现预测是相同的
没有人向你保证固定步长的梯度下降会通过num_iters
次迭代收敛到局部最优值。 您需要迭代直到满足一些明确定义的收敛标准(例如梯度接近于零)。
如果您在梯度下降之前对训练数据进行了归一化处理,那么您还应该使用输入数据进行预测。 具体来说,你的新输入数据应该是这样的:
[1, (x-mu)/sigma]
其中:
- 1
是偏置项
- mu
是训练数据的平均值
- sigma
是训练数据的标准差
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.