我正在尝试为梯度下降算法中的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之前的值与我从正态方程法得到的值相去甚远。
答案 0 :(得分:0)
我找到了。由于我没有对数据进行归一化,因此我获得了theta的巨大价值,并且很快就运往了Inf和NaN。将数据标准化后,该算法就可以正常工作。