Matlab回归算法,线性回归算法Matlab实现
编辑推荐:
本文来自于csdn,本文将通过以OCR(光学字符识别)的场景来介绍深度学习在计算机视觉中的应用。
一,单变量线性回归:
1. 数据分布,x轴是属性城市人口,y轴是标签值盈利:
2. 目的:使用一个线性函数去拟合上面这些数据;
该线性函数如下只有两个参数,利用梯度下降找出使损失值最小时,对应的两个参数值,即得到了线性函数。
算法三要素:
1)设置线性函数,即假设函数(Hypothesis);
2)选定损失函数 J,
3)梯度下降,找到使得J值最小时,对应的theta_0, theta_1。
J值最小,预测的h_theta(x)值就会越接近标签纸y
3. 梯度下降:
找损失函数J的最小值,高数知识可知对函数求导等于零,对应的点即为极值点,但有些函数不能直接求出倒数值,所以需要梯度下降逐渐的趋向最小值。
梯度下降过程如下所示,便于分析,这里假设线性函数为 theta_1
* x, 没有 theta_0,theta = theta - alpha * K, K即为斜率,迭代变化\theta_1值,使得J值为0
其中,迭代过程:
4. Matlab实现:
clc;
clear;
data
= load('D:/Code/Data/ex1data1.txt');
X = data(:,1);
y
= data(:,2);
figure,plot(X, y, 'r*', 'MarkerSize',
5); % 5控制*的大小
% x加了一列,变成 (97,2)
m = length(y);
X = [ones(m, 1), data(:,1)];
% 初始化参数
theta = zeros(2,
1);
% Some gradient descent settings
iterations
= 1500;
alpha = 0.01;% 梯度下降,找到最佳参数
theta = gradientDescent(X,
y, theta, alpha, iterations);
hold on;
% keep
previous plot visible
plot(X(:,2), X*theta, '-')
legend('Training
data', 'Linear regression')
hold off
function theta
= gradientDescent(X, y, theta, alpha, num_iters)
m = length(y);
% 样本数量
for iter = 1:num_iters
H
= X * theta;
%(97,2)*(2*1)=(97,1)
Sum = [0 ; 0];
%(2,1),记录偏导,求和
% theta_0更新
for i = 1 : m
Sum(1,1)
= Sum(1,1) + (H(i) - y(i));
end
% theta_1更新
for
i = 1 : m
Sum(2,1) = Sum(2,1) + (H(i) - y(i))
* X(i,2)';
end
theta = theta - (alpha * Sum) /
m;
end
end
关键代码:
Sum = [0 ; 0];
%(2,1),记录偏导,求和
% theta_0更新
for i = 1 : m
Sum(1,1)
= Sum(1,1) + (H(i) - y(i));
end
% theta_1更新
for
i = 1 : m Sum(2,1) = Sum(2,1) + (H(i) - y(i))
* X(i,2)';
end
theta = theta - (alpha * Sum) /
m;
5. 效果如下:
二,多变量的线性回归
1. 多变量的例子,如下
2. 数据集下载点击打开链接,密码:ibtb:
画出数据分布:
3. 多变量的假设函数定义:
4. 多变量的损失函数:
5. 迭代过程如下:
手推一把:
6. 多变量的线性回归,Matlab实现:
clear;
clc;
% 1,读取数据
x
= load('D:\Code\Data\ex3Data\ex3x.dat'); % 两个变量房子面积,和卧室数目,一行一个样本
y
= load('D:\Code\Data\ex3Data\ex3y.dat'); % 房子价格
%
plot3(x(:,1), x(:,2), y, 'r*');% grid on % 画上网格
%
hold on; % 后面将画上拟合的线
% 2, 处理数据
m = length(x(:,1));
% 样本数
x = [ones(m,1), x]; % x0 为1
x(:,2) = (x(:,2)
- mean(x(:,2))) ./ std(x(:,2));
x(:,3) = (x(:,3)
- mean(x(:,3))) ./ std(x(:,3));
plot3(x(:,1), x(:,2),
y, 'r*');
grid on % 画上网格
hold off;
% 3,参数设置
iter
= 1500; % 迭代次数
theta = zeros(1,3); % 线性函数的参数,为行向量
alpha
= 0.01;
J = zeros(m,1);
for i = 1:iter % 以迭代次数为终止条件
% 求以当前theta为线性函数的参数时,其损失值
h = x * theta';
% 假设函数 J(i) = 1/2*m * sum((h - y).^2); % 记录每次迭代后损失值情况,但对迭代终止没有影响
theta(1,1) = theta(1,1) - alpha*(1/m)* sum((h
- y) .* x(:,1)); % x(:,1)即为x_0
theta(1,2) =
theta(1,2) - alpha*(1/m)* sum((h - y) .* x(:,2));
theta(1,2) = theta(1,3) - alpha*(1/m)* sum((h
- y) .* x(:,3));
% theta = theta - alpha*(1/m)*
sum(x'*(h - y)); % 一次性处理所有theta
end figure,
% 画出损失函数随迭代次数的变化情况
plot(1:iter, J);
损失函数变化情况:
关键代码解释:
theta(1,1) = theta(1,1) - alpha*(1/m)* sum((h - y)
.* x(:,1)); % x(:,1)即为x_0
三,正规方程(normal equation)
1. 求最佳的参数theta,除了使用梯度下降法,也可以使用正规方程,具体方式,所有样本组成一个矩阵X,矩阵的每一行为一个样本,
参数theta直接使用下面的正规公式即可得到:
2. 梯度下降法和正规方程对比:NG推荐特征数小于一万时,采用正规方程
3. 正规方程的推导过程:如果 y = X * theta,则损失函数值为0,即找到最佳theta。即已知y
= X * theta,求theta?
Matlab回归算法,线性回归算法Matlab实现相关推荐
- 逻辑回归与线性回归算法梳理
逻辑回归算法梳理 逻辑回归与线性回归算法 1线性回归 2 逻辑回归 2.1 逻辑回归原理 2.2 逻辑回归损失函数 2.3 简化后的逻辑回归损失函数 3 联系与区别 3.1 联系 3.2 区别 4 正 ...
- Python机器学习--回归算法--线性回归算法
线性回归算法 线性回归算法类型: 线性回归算法属于有监督学习的回归算法,可以处理标签为连续数据类型的数据. 线性回归算法原理: 通过寻找特征和标签之间的关系,生成一个线性方程,通过线性方程预测未知标签 ...
- 回归模型-线性回归算法
线性回归算法 问题分为有监督问题和无监督问题两类 当用到标签来划分的时候就是有监督问题,当没有用标签值的时候就是无监督问题. 线性回归求解的结果是值 比如: 根据工资和年龄来预测出一个具体的值,根据工 ...
- 回归算法--线性回归算法原理
1.线性回归 回归一词最早由英国科学家弗朗西斯·高尔顿(Francis Galton)提出.他发现一个趋势:父母高,儿女也高:父母矮,儿女也矮.但给定父母的身高,儿女辈的平均身高却趋向于或者" ...
- octave运行matlab函数,机器学习-线性回归以及MATLAB octave实现
参考资料: 斯坦福大学公开课 :机器学习课程 http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html http://blog.csdn.n ...
- 【python教程入门学习】线性回归算法详解
本节我们会认识第一个机器学习算法 -- 线性回归算法(Linear Regression),它是机器学习算法中较为简单,且容易理解的算法模型,你可以把它看做您的第一个"Hello World ...
- MATLAB 中BP神经网络算法用于回归拟合的实现
转载自:https://www.cnblogs.com/babyfei/p/7400072.html BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单 ...
- em算法matlab图像应用,em算法matlab程序
EM 算法作业 EM 算法简单 介绍及应用 EM 算法是当存在数据缺失问题时,极... Matlab 实现根据以上推导,可以很容易实现 EM 算法估计 GMM 参数.现... 题目:matlab 实现 ...
- matlab 投票法_SVM算法原理及其Matlab应用
<SVM算法原理及其Matlab应用>由会员分享,可在线阅读,更多相关<SVM算法原理及其Matlab应用(18页珍藏版)>请在人人文库网上搜索. 1.SVM 算法及其 Mat ...
最新文章
- react-router-dom v6 中的Routes
- python下载文件到指定文件夹-python实现指定文件夹下的指定文件移动到指定位置...
- 使用.net调用java的Web Services
- 啊!你的服务又挂了?
- 静物摄影用光技巧_摄影技巧:摄影如何用光?摄影大师总结的10点,非常受用!...
- LibcarePlus用户态程序热补丁
- php工程师用的到高等数学吗,学习Python解决高等数学问题
- Java Swing实现简易计算器
- 信度检验-Krippendorff's alpha检验
- Kosaraju(科萨拉朱)求强连通分量 (2021-8-5)
- JAVA-day09-多线程
- miui11开发版升级Android10,小米9透明版MIUI11开发版系统刷机包(最新固件系统升级包MIUI11.9.12.31开发版安卓10)...
- C++ endl 的本质是什么
- Centos7- wget未找到命令,there are no enabled repos 解决办法
- 基于51单片机的火焰报警器
- 仿腾讯QQ竖直滑动导航菜单
- Jenkins 流水线语法 02 片段生成器和声明式语法生成器
- 不错嘛(lsp专用)
- 原来CNN是这样提取图像特征的
- python正则表达式及RE模块