matlab实现机器学习算法-回归分析
一、回归问题
回归问题是指研究某一因变量 y 与另一组变量(x1,x2,…,xk)之间的关系统计分析方法,在机器学习中,x 通常也被称为特征变量,特征变量的好坏对最终模型的准确性有较大的影响。
二、模型定义
$$
f_{\theta}(\theta_0,\theta_1,…,\theta_k)=\theta_0x_0+\theta_1x_1+…+\theta_kx_k
$$
其中x0恒为1,用来表示模型中的常数项
三、代价函数
代价函数也被称为损失函数,通常被用作学习过程中的优化准则,回归问题就是通过拟合一系列参数从而使得代价函数的最小化,对于回归问题,代价函数通常被定义为拟合值与真实值之间的方差,即
$$
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
$$
其中 i 为样本序号,n表示样本总量,θ为拟合参数。
机器学习过程即是通过一定的算法调节参数θ,从而使得代价函数达到最小值,此时可以得到最优模型。
四、梯度下降方法实现线性回归
1、梯度下降法原理
梯度下降法在机器学习中应用非常广泛,是一种求解函数最小值的算法。其基本过程与下山类似,如图
我们有一个可微分的函数,目标就是找到这个函数的最小值,最快的方式就是找到当前位置最陡峭的方向,然后沿着此方向向下走,对应到函数中,就是找到给定点的梯度 ,然后朝着梯度相反的方向,就能让函数值下降的最快!因为梯度的方向就是函数变化最快的方向,然后重复利用这个方法,反复求取梯度,最后就能到达局部的最小值,这就类似于我们下山的过程。而求函数梯度就确定了最陡峭的方向。
2、模型求解
模型求解的关键是利用梯度下降方法求解代价函数的最低值,代价函数的梯度函数为
$$
\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)}]
$$使用环境:MATLAB R2019a
代码
1 | %% 多元线性回归 |
- 最终计算得到的图像如图:
五、正规方程法
1、原理
用正规方程法求解模型参数时,依据的是线代的相关知识,无序设置学习率,无序迭代,秩序对初始数据作简单处理,即可以得到结果,依据的公式是:
$$
\theta = (X^TX)^{-1}X^Ty
$$
其中:
$$
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}
$$
$$
y=
\begin{pmatrix}
y^{(1)} \
y^{(2)} \
\vdots \
y^{(n)} \
\end{pmatrix}
$$
$$
\theta =
\begin{pmatrix}
\theta_0 \
\theta_1 \
\vdots \
\theta_k \
\end{pmatrix}
$$
2、matlab实现:
1 | %% 多元线性回归 |
运行结果: