matlab封闭传递包求解,梯度下降和封闭形式的解决方案 - MATLAB中不同的假设线...
我正在编写我正在从Coursera机器学习课程(MATLAB)中学习线性回归的过程。有一个类似的帖子,我找到了here,但我似乎无法理解所有内容。也许是因为我在机器学习方面的基础知识有点弱。
我面临的问题是,对于某些数据...梯度下降(GD)和封闭形式解决方案(CFS)都给出相同的假设线。但是,在一个特定的数据集中,结果是不同的。我读过一些关于如果数据是单数的话,结果应该是一样的。但是,我不知道如何检查我的数据是否是单数。
我会尽力说明我能做到的最好:
1)首先,这是从here改编的MATLAB代码。对于给定的数据集,GD和CFS都给出了类似的结果,结果都很好。
数据集
X Y
2.06587460000000 0.779189260000000
2.36840870000000 0.915967570000000
2.53999290000000 0.905383540000000
2.54208040000000 0.905661380000000
2.54907900000000 0.938988900000000
2.78668820000000 0.966847400000000
2.91168250000000 0.964368240000000
3.03562700000000 0.914459390000000
3.11466960000000 0.939339440000000
3.15823890000000 0.960749710000000
3.32759440000000 0.898370940000000
3.37931650000000 0.912097390000000
3.41220060000000 0.942384990000000
3.42158230000000 0.966245780000000
3.53157320000000 1.05265000000000
3.63930020000000 1.01437910000000
3.67325370000000 0.959694260000000
3.92564620000000 0.968537160000000
4.04986460000000 1.07660650000000
4.24833480000000 1.14549780000000
4.34400520000000 1.03406250000000
4.38265310000000 1.00700090000000
4.42306020000000 0.966836480000000
4.61024430000000 1.08959190000000
4.68811830000000 1.06344620000000
4.97773330000000 1.12372390000000
5.03599670000000 1.03233740000000
5.06845360000000 1.08744520000000
5.41614910000000 1.07029880000000
5.43956230000000 1.16064930000000
5.45632070000000 1.07780370000000
5.56984580000000 1.10697580000000
5.60157290000000 1.09718750000000
5.68776170000000 1.16486030000000
5.72156020000000 1.14117960000000
5.85389140000000 1.08441560000000
6.19780260000000 1.12524930000000
6.35109410000000 1.11683410000000
6.47970330000000 1.19707890000000
6.73837910000000 1.20694620000000
6.86376860000000 1.12510460000000
7.02233870000000 1.12356720000000
7.07823730000000 1.21328290000000
7.15142320000000 1.25226520000000
7.46640230000000 1.24970650000000
7.59738740000000 1.17997060000000
7.74407170000000 1.18972990000000
7.77296620000000 1.30299340000000
7.82645140000000 1.26011340000000
7.93063560000000 1.25622670000000我的MATLAB代码:
clear all; close all; clc;
x = load('ex2x.dat');
y = load('ex2y.dat');
m = length(y); % number of training examples
% Plot the training data
figure; % open a new figure window
plot(x, y, '*r');
ylabel('Height in meters')
xlabel('Age in years')
% Gradient descent
x = [ones(m, 1) x]; % Add a column of ones to x
theta = zeros(size(x(1,:)))'; % initialize fitting parameters
MAX_ITR = 1500;
alpha = 0.07;
for num_iterations = 1:MAX_ITR
thetax = x * theta;
% for theta_0 and x_0
grad0 = (1/m) .* sum( x(:,1)' * (thetax - y));
% for theta_0 and x_0
grad1 = (1/m) .* sum( x(:,2)' * (thetax - y));
% Here is the actual update
theta(1) = theta(1) - alpha .* grad0;
theta(2) = theta(2) - alpha .* grad1;
end
% print theta to screen
theta
% Plot the hypothesis (a.k.a. linear fit)
hold on
plot(x(:,2), x*theta, 'ob')
% Plot using the Closed Form Solution
plot(x(:,2), x*((x' * x)\x' * y), '--r')
legend('Training data', 'Linear regression', 'Closed Form')
hold off % don't overlay any more plots on this figure''[编辑:对不起,标签错误...这不是正常的方程式,而是封闭的形式解决方案。我的错]
该代码的结果如下所示(这是桃色:D对于GD和CFS都有同样的结果) -
现在,我正在用另一个数据集测试我的代码。数据集的URL是here - GRAY KANGAROOS。我将它转换为CSV并将其读入MATLAB。请注意,我做了缩放(除以最大值,因为如果我没有这样做,根本不会出现假设线,并且在MATLAB中出现的不是数字(NaN))。
灰色袋鼠数据集:
X Y
609 241
629 222
620 233
564 207
645 247
493 189
606 226
660 240
630 215
672 231
778 263
616 220
727 271
810 284
778 279
823 272
755 268
710 278
701 238
803 255
855 308
838 281
830 288
864 306
635 236
565 204
562 216
580 225
596 220
597 219
636 201
559 213
615 228
740 234
677 237
675 217
629 211
692 238
710 221
730 281
763 292
686 251
717 231
737 275
816 275我对代码读取的数据集所做的更改
dataset = load('kangaroo.csv');
% scale?
x = dataset(:,1)/max(dataset(:,1));
y = dataset(:,2)/max(dataset(:,2));出来的结果是这样的:[编辑:对不起,错误的标签......这不是正常的方程,但封闭的形式解决方案。我的错]
我想知道这个差异是否有任何解释?任何帮助将非常感激。先谢谢你!
matlab封闭传递包求解,梯度下降和封闭形式的解决方案 - MATLAB中不同的假设线...相关推荐
- 车辆路径优化matlab代码,5个求解车辆路径问题(VRP)的MATLAB算法
5个求解车辆路径问题(VRP)的MATLAB算法 matlab 2020-10-22 下载地址 https://www.codedown123.com/45041.html 5个求解车辆路径问题(VR ...
- 【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
文章目录 近端梯度下降的背景 常见线性回归问题 近端算子(Proximal Operator) 近端梯度下降迭代递推方法 以Lasso线性回归问题为例 参考资料 近端梯度下降的背景 近端梯度下降(Pr ...
- Lesson 6.动态计算图与梯度下降入门
在<Lesson 5.基本优化思想与最小二乘法>的结尾,我们提到PyTorch中的AutoGrad(自动微分)模块,并简单尝试使用该模块中的autograd.grad进行函数的微分运算,我 ...
- 梯度下降法和最速下降法区别
1. 前言: 细微之处,彰显本质:不求甚解,难以理解. 一直以来,我都认为,梯度下降法就是最速下降法,反之亦然,老师是这么叫的,百度百科上是这么写的,wiki百科也是这么说的,这么说,必然会导致大家认 ...
- 梯度下降法和Sklearn实现线性回归
1.线性回归模型 线性回归 (linear regression)是-种线性模型, 它假设输入变量 x和单个输出变量 y 之间存在线性关系.具体来说,利用线性回归模型,可以从-组输入变量 x 的线性组 ...
- 梯度下降详解(3)机器学习
1 无约束最优化问题 为什么要学习梯度下降?,在我们日常生活中,并不是所有的预测曲线都符合正规方程,所以为了对各种各样的数据进行预测的话,需要使用其他的方法.这就是用梯度下降的方法来拟合原来的数 ...
- 吴恩达机器学习之逻辑回归:逻辑回归的假说表示、判定边界、代价函数、简化的成本函数和梯度下降、高级悠哈、多类别分类之一对多(详细笔记,建议收藏,已有专栏)
吴恩达机器学习栏目清单 专栏直达:https://blog.csdn.net/qq_35456045/category_9762715.html 文章目录 6.逻辑回归(Logistic Regres ...
- 最优化方法:梯度下降(批梯度下降和随机梯度下降)
http://blog.csdn.net/pipisorry/article/details/23692455 梯度下降法(Gradient Descent) 梯度下降法是一个一阶最优化算法,通常也称 ...
- 梯度下降概念及推导过程
1.梯度 我们对一个多元函数求偏导,会得到多个偏导函数.这些导函数组成的向量,就是梯度.一元函数的梯度可以理解为就是它的导数.梯度就是对一个多元函数的未知数求偏导,得到的偏导函数构成的向量就叫梯度. ...
最新文章
- LeetCode刷题-8
- EntityFramework:状态变化与方法的关系
- ASP.NET Core开发者成长路线图
- 调用反射类的指定方法
- LeetCode 931. 下降路径最小和(动态规划)
- C语言 int** 二重指针的理解
- MySQL对字符集_对MySQL字符集的认识
- matlab与vc混合编程指导书.doc,vc与matlab混合编程—基于com.doc
- shell ## %% 使用说明
- 搜索引擎网页排序算法
- file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
- 探秘中国网购的数据迷城
- unity 彩带粒子_Unity 粒子特效—FX Maker
- win10解除usb禁用_Windows10系统禁用usb存储设备的方法
- 处理autocad 2010闪退
- matplotlib绘图颜色大全
- 解决一个应用连接oracle端口1521不通问题
- 区块链系统:挖矿原理
- 【设计】宽范围输入线性稳压器
- C++入门——实现见缝插针游戏