试图为梯度下降算法编写矢量化矩阵符号时遇到问题

时间:2019-05-11 17:37:22

标签: octave gradient-descent

我正在尝试为梯度下降算法中的theta值收敛的迭代过程编写矢量化表示法。我找到了矢量符号,但是由于某种原因,这些值没有收敛。我已经尝试了很多不同的alpha值,但是似乎没有一个起作用。任何帮助表示赞赏。谢谢!

X=[1,2104,5,1,45;1,1416,3,2,40;1,1534,3,2,30;1,852,2,1,36]
y=[460;232;315;178]
m=size(X,1)
alpha=0.01
n+1=size(X,2)
theta=zeros(n+1,1)
for it=1:100,
    theta=theta-((alpha/m)*(X'*((X*theta)-y)))
end;
disp(theta)

应该产生theta值的结果,但是它会抛出一些值进行几次迭代,然后转到Nan。同样,Nan之前的值与我从正态方程法得到的值相去甚远。

1 个答案:

答案 0 :(得分:0)

我找到了。由于我没有对数据进行归一化,因此我获得了theta的巨大价值,并且很快就运往了Inf和NaN。将数据标准化后,该算法就可以正常工作。