机器学习入门——线性回归剖析

引言

我们以吴恩达教授常说的房价预测的例子做引入,已知房价可能的影响因素有房屋大小(size)、卧室数量(number of bedrooms)、楼层数(number of floors)、房龄(age of home)等等。其中房屋大小、卧室数量、楼层数、房龄等影响房价的变量称为自变量/特征/属性/预测变量,而房价称为因变量/标签/目标变量。
线性回归就是要建立回归方程模拟自变量和因变量之间的相关关系。

一元线性回归

假设我们只考虑房屋大小(size)对房价的影响。得到如下图的样本点分布:
在这里插入图片描述
由上述可知,一元线性回归就是要建立回归方程模拟两个变量之间的相关关系(一个自变量一个因变量)。因为只有两个变量,我们需要引入一条直线y=ax+by=ax+b,来拟合我们已有的样本点。我们的回归方程常写成如下形式:hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1x
我们需要找到一条回归直线来拟合已有样本点,而对于直线,确定斜率和截距即可得到直线方程即回归方程。
此时,我们要建立回归方程就等价于寻找回归直线,又等价于求解直线的斜率和截距。

损失函数

在求解回归系数时,必须要引入损失函数的概念。
如下图,红色点为样本点,蓝色为拟合的回归直线。我们在寻找回归直线的时候,很自然会想到最好的回归直线应该是能够尽可能多的穿过所有的样本点。(因为此时拟合的损失最小,拟合的直线更加准确)但是,对于点分布比较杂乱的情况(下图)几乎不可能实现,无论怎样拟合损失都达不到0,此时我们的办法是,使回归直线和样本点的(平均)残差平方和最小。
在这里插入图片描述
这样就得到了损失函数:
J(θ0,θ1)=12mi=1m(yihθ(xi))2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m (y^i-h_\theta(x^i))^2
其中分母的2m2m可以省略,22为了后续求导方便,mm求得平均损失。

损失函数可视化

一元线性回归损失函数:

eg.假设θ0=0\theta_0=0,此时损失函数简化到二维平面,若有三个样本点为(1,1),(2,2),(3,3),下面分别根据不同的回归直线计算其损失。

此时,hθ(x)=xh_\theta(x)=x,回归直线完全拟合样本点,损失为0.
在这里插入图片描述
hθ(x)=0.5xh_\theta(x)=0.5x,带入损失函数公式J(θ0,θ1)=123i=13(yihθ(xi))2J(\theta_0,\theta_1)=\frac{1}{2*3}\sum_{i=1}^3 (y^i-h_\theta(x^i))^2,回归直线拟合的损失为0.533。
在这里插入图片描述
hθ(x)=0h_\theta(x)=0J(θ0,θ1)=123i=13(yihθ(xi))2J(\theta_0,\theta_1)=\frac{1}{2*3}\sum_{i=1}^3 (y^i-h_\theta(x^i))^2回归直线拟合的损失约为2.33。
带入不同的系数θ1\theta_1的值可以得到不同损失值,作图可得:
在这里插入图片描述
综上,可得去除截距项的一元线性回归的损失函数为一条抛物线。
而完整不经过简化的一元线性回归损失函数为下图凸曲面:

在这里插入图片描述
而我们常见的等高线图就是其凸曲面(三维图)的二维表示。
在这里插入图片描述
等高线图上的一个点对应一元线性回归的一条拟合的回归线(每个点横纵座标为回归系数值,即可确定一条直线)。我们的目的就是寻找使损失函数(凸曲面)达到最低点的回归系数的值。

求解一元线性回归

方法一、最小二乘法

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法想必大家都不陌生,它的求解思路就是:求偏导,令偏导为0从而求得全局最优解。
在这里插入图片描述
解得:
{θ1=i=1m(xixˉ)yii=1mxi21m(i=1mxi2)θ0=yˉθ1xˉ\begin{cases}\theta_1=\frac{\sum_{i=1}^m (x_i-\bar{x})y_i}{\sum_{i=1}^m x_i^2-\frac{1}{m}(\sum_{i=1}^m x_i^2)}\\\theta_0=\bar{y}-\theta_1\bar{x}\end{cases}

方法二、梯度下降法

梯度:函数在某一点的方向导数(某一点沿各个方向的偏导)沿某个方向达到最大值,此时所沿的方向为梯度方向。也就是说,沿梯度方向函数值增加最快。

梯度下降法基于“贪心策略”,简单来说就是走一步看一步。
比如说,一个人在山林中,周围有两座小山,其余大概是平原和洼地。我们的目标是找到最快下山的方向。我们需要注意的是我们可见范围有限,并不能了解整个地势情况(这个人不知道有两座小山,多少洼地)他如何在一定的可见范围内,最快下山。
这个问题就是梯度下降的典型事例。
在这里插入图片描述
对于梯度下降,我们首先要了解几个概念:
 1. (梯度下降的)目标:选择θ0\theta_0θ1\theta_1使J(θ0,θ1)J(\theta_0,\theta_1)最小。
 2. 梯度:在所有方向导数中斜率最大的方向导数。
 3. 梯度下降:沿着梯度负方向走(走一步调整一步θ0\theta_0θ1\theta_1
 4. 步长(学习率):越小-时间越久;越长-无法收敛到最小
如下图,若损失函数值随迭代次数起起伏伏,说明α值较大,无法收敛到全局最小,来回震荡。
在这里插入图片描述
如下图,若损失函数值随着迭代次数增大,说明α值过大,无法收敛到全局最小值向上震荡。
在这里插入图片描述
求解过程:
梯度下降法求解线性回归就通过不断沿损失函数降低最快的方向(梯度的负方向)做权值(系数)更新得到最优的系数。
PS.为什么某点的梯度是该函数在这一点的偏导?详见博文:
https://blog.csdn.net/weixin_42398658/article/details/83017995
在这里插入图片描述

求解步骤总结:

  1. 设置初始值(斜率、截距、学习率、迭代次数)
  2. 定义损失函数
  3. 根据梯度下降公式动态调整斜率和截距(权值更新),return出最终的系数。

PS.代码传送连接:https://mp.csdn.net/postedit/100619535

求解多元线性回归

了解了一元线性回归后,很容易延伸到多元情况,多元线性回归就是建立回归方程模拟多个变量之间的相关关系。
hθ(x)=θ0+θ1x1+θ2x2+...+θnxnh_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n其实我们可以想象出:
一元线性回归可以拟合出-一条直线
二元线性回归可以拟合出-一个平面
多元线性回归可以拟合出-一个超平面
例:还是用一开始的房价的例子。假设房价影响因素有房屋大小(size)、卧室数量(number of bedrooms)、楼层数(number of floors)、房龄(age of home)四个。可以得到回归方程为:hθ(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4为了转换为矩阵形式,方便计算:XθX\theta,将θ0\theta_0乘上x0x_0,令x0=1x_0=1即矩阵增加了一列全为1的向量x0x_0。大致情况见下表:
在这里插入图片描述

方法一、梯度下降法

在这里插入图片描述

方法二、正规方程法

将上表整理为矩阵得:(ww即为θ\theta系数)
在这里插入图片描述
在这里插入图片描述
矩阵微分知识请参考博客:https://blog.csdn.net/daaikuaichuan/article/details/80620518
在下一篇博客,我们一起看一看正规方程的局限性,对于有局限的情况应该如何处理,怎样进行模型改进。

写在最后

这是自己在CSDN上写的第一篇博客,欢迎各位大佬批评指正~
希望自己能够坚持下去!加油!(╹▽╹)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章