梯度下降和正规方程给出了多元线性回归的不同θ值。为什么?

时间:2017-06-03 18:23:48

标签: machine-learning octave linear-regression gradient-descent

梯度下降的矢量化实现

for iter = 1:num_iters

 theta = theta - (alpha / m) * X' * (X * theta - y);   
 J_history(iter) = computeCostMulti(X, y, theta);

end

computeCostMulti()

的实现
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的不同值。法线方程给出了正确的答案,但梯度下降给出了错误的答案。

Gradient Descent的实施有什么问题吗?

4 个答案:

答案 0 :(得分:3)

我认为当您使用渐变下降时,首先使用特征缩放处理输入。这不是用正规方程方法完成的(因为不需要特征缩放),这应该导致不同的θ。如果您使用模型进行预测,则应该得出相同的结果。

答案 1 :(得分:1)

没关系。由于您没有进行特征缩放以使用正态方程,因此您会发现预测是相同的

答案 2 :(得分:0)

没有人向你保证,固定步长的梯度下降会在num_iters次迭代时收敛,甚至达到局部最优。您需要迭代直到满足一些定义良好的convergency criteria(例如渐变接近于零)。

答案 3 :(得分:0)

如果在梯度下降之前对训练数据进行了归一化,则还应该使用输入数据进行预测。具体来说,您的新输入数据应类似于:

[1, (x-mu)/sigma]

其中:
-1是偏差项
-mu是训练数据的平均值
-sigma是训练数据的标准偏差