IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> matlab实现机器学习算法-回归分析 -> 正文阅读

[人工智能]matlab实现机器学习算法-回归分析

一、回归问题

回归问题是指研究某一因变量 y 与另一组变量(x1,x2,…,xk)之间的关系统计分析方法,在机器学习中,x 通常也被称为特征变量,特征变量的好坏对最终模型的准确性有较大的影响。

二、模型定义

f θ ( θ 0 , θ 1 , . . . , θ k ) = θ 0 x 0 + θ 1 x 1 + . . . + θ k x k f_{\theta}(\theta_0,\theta_1,...,\theta_k)=\theta_0x_0+\theta_1x_1+...+\theta_kx_k fθ?(θ0?,θ1?,...,θk?)=θ0?x0?+θ1?x1?+...+θk?xk?
其中x0恒为1,用来表示模型中的常数项

三、代价函数

代价函数也被称为损失函数,通常被用作学习过程中的优化准则,回归问题就是通过拟合一系列参数从而使得代价函数的最小化,对于回归问题,代价函数通常被定义为拟合值与真实值之间的方差,即
J ( θ 0 , θ 1 , . . . , θ k ) = 1 n ∑ i = 1 n [ f θ ( x 0 ( i ) , x 1 ( i ) , . . . , x k ( i ) ) ? y ( i ) ] 2 J(\theta_0,\theta_1,...,\theta_k)=\frac{1}{n}\sum_{i=1}^{n} [f_{\theta}(x_0^{(i)},x_1^{(i)},...,x_k^{(i)})-y^{(i)}]^2 J(θ0?,θ1?,...,θk?)=n1?i=1n?[fθ?(x0(i)?,x1(i)?,...,xk(i)?)?y(i)]2
其中 i 为样本序号,n表示样本总量,θ为拟合参数。
机器学习过程即是通过一定的算法调节参数θ,从而使得代价函数达到最小值,此时可以得到最优模型。

四、梯度下降方法实现线性回归

1、梯度下降法原理

梯度下降法在机器学习中应用非常广泛,是一种求解函数最小值的算法。其基本过程与下山类似,如图
在这里插入图片描述
我们有一个可微分的函数,目标就是找到这个函数的最小值,最快的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数变化最快的方向,然后重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求函数梯度就确定了最陡峭的方向。

2、模型求解

  • 模型求解的关键是利用梯度下降方法求解代价函数的最低值,代价函数的梯度函数为
    ? J θ ? θ t = 2 n ∑ i = 1 n x t [ f θ ( x 0 ( i ) , x 1 ( i ) , . . . , x k ( i ) ) ? y ( i ) ] \frac{\partial J_{\theta}}{\partial \theta_t}=\frac{2}{n}\sum_{i=1}^n x_t[f_\theta(x_0^{(i)},x_1^{(i)},...,x_k^{(i)})-y^{(i)}] ?θt??Jθ??=n2?i=1n?xt?[fθ?(x0(i)?,x1(i)?,...,xk(i)?)?y(i)]

  • 使用环境:MATLAB R2019a

  • 代码

%% 多元线性回归
clc;
close all;
clear;

a = 0.01; %%定义学习率,描述梯度下降快慢
N = 500;  %%定义样本总数
cvg = 1e-10;  %%定义收敛标准
dim = 4;  %%定义样本特征变量维度
x0 = (ones(1,N))';
x_ = rand(N,dim);
X = [x0,x_];
y = X*[7.8;10.4;3.9;-4.3;2.2] + (0.8*randn(1,N))';

theta0 = 10*rand(dim+1,1);
diff_theta = ones(dim+1,1);
cvg_theta = cvg*ones(dim+1,1);

while not(isequal((diff_theta > cvg_theta),zeros(dim+1,1)))
    for i = 1:(dim+1)
        theta_n(i,1) = theta0(i,1) - a/N*X(:,i)'*(X*theta0-y);
    end
    diff_theta = abs(theta_n - theta0);
    theta0 = theta_n;
end

%% 画图
figure();
for i = 1:dim
    subplot(dim,1,i);
    hold on;
    scatter(X(:,i+1),y,2.0);
    t=0:1e-4:1;
    plot(t,t*theta_n(i+1,1)+theta_n(1,1),'r');
    title(sprintf("x%d --- y",i+1));
end
  • 最终计算得到的图像如图:
    在这里插入图片描述

五、正规方程法

1、原理

用正规方程法求解模型参数时,依据的是线代的相关知识,无序设置学习率,无序迭代,秩序对初始数据作简单处理,即可以得到结果,依据的公式是:
θ = ( X T X ) ? 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)?1XTy
其中:
X = ( 1 x 1 ( 1 ) ? x k ( 1 ) 1 x 1 ( 2 ) ? x k ( 2 ) ? ? ? ? 1 x 1 ( n ) ? x k ( n ) ) X= \begin{pmatrix} 1 & x^{(1)}_1 & \cdots & x^{(1)}_k\\ 1 & x^{(2)}_1 & \cdots & x^{(2)}_k\\ \vdots & \vdots & \cdots & \vdots\\ 1 & x^{(n)}_1 & \cdots & x^{(n)}_k\\ \end{pmatrix} X=???????11?1?x1(1)?x1(2)??x1(n)???????xk(1)?xk(2)??xk(n)?????????

y = ( y ( 1 ) y ( 2 ) ? y ( n ) ) y= \begin{pmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(n)} \\ \end{pmatrix} y=??????y(1)y(2)?y(n)???????

θ = ( θ 0 θ 1 ? θ k ) \theta = \begin{pmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_k \\ \end{pmatrix} θ=??????θ0?θ1??θk????????

2、matlab实现:

%% 多元线性回归
clc;
close all;
clear;

N = 500;  %%定义样本总数
dim = 4;  %%定义样本特征变量维度
x0 = (ones(1,N))';
x_ = rand(N,dim);
X = [x0,x_];
y = X*[7.8;10.4;3.9;-4.3;2.2] + (0.8*randn(1,N))';
theta = pinv(X'*X)*X'*y;
figure();
for i = 1:dim
    subplot(dim,1,i);
    hold on;
    scatter(X(:,i+1),y,2.0);
    t=0:1e-4:1;
    plot(t,t*theta(i+1,1)+theta(1,1),'r');
    title(sprintf("x%d --- y",i+1));
end

运行结果:
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-20 15:47:40  更:2021-09-20 15:49:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:50:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码