首页 > 解决方案 > 梯度下降不会收敛于线性回归

问题描述

我在 Octave 中编写了一个简单的线性回归算法,但无论我选择什么样的学习率和迭代次数,甚至在纸上画出矩阵,theta 的值都不会收敛。任何人都可以看到我的代码中的任何错误吗?

data = load('ex1data2.txt');
X = data(:,1:2);
y = data(:,3);          
m = rows(X);        
X = [ones(m,1), data(:,1:2)];   

alpha = 0.01;

iterations = 5000;          

n = columns(X);                 

theta = zeros(n,1);

for count = 1:iterations

    hypo = zeros(1,m);
    hypo = theta'*X';
    sqr_err = (hypo-y').*(hypo-y');
    sum_sqr_err = sum(sqr_err);
    J = 1/(2*m)*sum_sqr_err;

    for i = 1:n
        theta(i) = theta(i)-(alpha/m)*((hypo-y')*X(:,i));
    end

end

J
theta

谢谢。

标签: machine-learningoctavelinear-regressiongradient-descent

解决方案


sqr_err = (hypo-y').*(hypo-y')

尝试删除“。”


推荐阅读