machine-learning - 梯度下降不会收敛于线性回归
问题描述
我在 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
谢谢。
解决方案
sqr_err = (hypo-y').*(hypo-y')
尝试删除“。”
推荐阅读
- go - 编辑 Google 日历“发件人”和“组织者”
- javascript - Angular Dragula:拖放后如何在保存按钮上获取更新排序列表
- html - 从前端到后端的日期时间本地发送时间自动更改,并减去 2 小时
- ruby-on-rails - 未找到 Rails 资产清单文件(或备份文件)
- linux - 在 Ubuntu 20.04.1 LTS 上安装 GCC 4.6.2
- java - Navigable Map - 已排序的地图但未排序
- c# - 为什么他们在 GetWindowRect 函数中使用它
- python - 在 PyCharm 中调试时,Pytest/Fabric 不使用 SSH 代理
- html - 如何适合轮播图像?(HTML/CSS/Bootstrap4)
- sql - Postgresql - 根据子查询更新表