一、线性模型
1. 概述
线性模型是自然界最简单的模型之一,它描述了一个(或多个)自变量对另一个因变量的影响是呈简单的比例、线性关系.例如:
- 住房每平米单价为1万元,100平米住房价格为100万元,120平米住房为120万元;
- 一台挖掘机每小时挖 100 m 3 100m^3 100m3沙土,工作4小时可以挖掘 400 m 3 400m^3 400m3沙土.
线性模型在二维空间内表现为一条直线,在三维空间内表现为一个平面,更高维度下的线性模型很难用几何图形来表示(称为超平面).如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fK26pScl-1639661219551)(img/lieaner_1.png)]
输入(x) | 输出(y) |
---|---|
0.5 | 5.0 |
0.6 | 5.5 |
0.8 | 6.0 |
1.1 | 6.8 |
1.4 | 6.8 |
根据样本拟合的线性模型如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7l4SN8O-1639661219552)(img/linear_3.png)]
2. 线性模型定义
设给定一组属性 x , x = ( x 1 ; x 2 ; . . . ; x n ) x, x=(x_1;x_2;...;x_n) x,x=(x1;x2;...;xn),线性方程的一般表达形式为:
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w n x n + b y = w_1x_1 + w_2x_2 + w_3x_3 + ... + w_nx_n + b y=w1x1+w2x2+w3x3+...+wnxn+b
写成向量形式为:
y = w T x + b y = w^Tx + b y=wTx+b
其中, w = ( w 1 ; w 2 ; . . . ; w n ) , x = ( x 1 ; x 2 ; . . . ; x n ) w=(w_1;w_2;...;w_n), x=(x_1;x_2;...;x_n) w=(w1;w2;...;wn),x=(x1;x2;...;xn),w和b经过学习后,模型就可以确定. 当自变量数量为1时,上述线性模型即为平面下的直线方程:
y = w x + b y = wx + b y=wx+b
线性模型形式简单、易于建模,却蕴含着机器学习中一些重要的基本思想. 许多功能强大的非线性模型可以在线性模型基础上引入层级结构或高维映射而得. 此外,由于 w w w直观表达了各属性在预测中的重要性,因此线性模型具有很好的可解释性.例如,判断一个西瓜是否为好瓜,可以用如下表达式来判断:
f 好 瓜 ( x ) = 0.2 x 色 泽 + 0.5 x 根 蒂 + 0.3 x 敲 声 + 1 f_{好瓜}(x) = 0.2x_{色泽} + 0.5x_{根蒂} + 0.3x_{敲声} + 1 f好瓜(x)=0.2x色泽+0.5x根蒂+0.3x敲声+1
上述公式可以解释为,一个西瓜是否为好瓜,可以通过色泽、根蒂、敲声等因素共同判断,其中根蒂最重要(权重最高),其次是敲声和色泽.
3. 模型训练
在二维平面中,给定两点可以确定一条直线.但在实际工程中,可能有很多个样本点,无法找到一条直线精确穿过所有样本点,只能找到一条与样本”足够接近“或”距离足够小“的直线,近似拟合给定的样本.如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kEDUXGV-1639661219553)(img/linear_4.png)]
如何确定直线到所有样本足够近呢?可以使用损失函数来进行度量.
1)损失函数
损失函数用来度量真实值(由样本中给出)和预测值(由模型算出)之间的差异.损失函数值越小,表明模型预测值和真实值之间差异越小,模型性能越好;损失函数值越大,模型预测值和真实值之间差异越大,模型性能越差.在回归问题中,均方差是常用的损失函数,其表达式如下所示:
E = 1 2 ∑ i = 1 n ( y − y ′ ) 2 E = \frac{1}{2}\sum_{i=1}^{n}{(y - y')^2} E=21i=1∑n(y−y′)2
其中,y为模型预测值,y’为真实值. 均方差具有非常好的几何意义,对应着常用的欧几里得距离(简称欧式距离). 线性回归的任务是要寻找最优线性模型,是的损失函数值最小,即:
( w ∗ , b ∗ ) = a r g m i n 1 2 ∑ i = 1 n ( y − y ′ ) 2 = a r g m i n 1 2 ∑ i = 1 n ( y ′ − w x i − b ) 2 (w^*, b^*) = arg min \frac{1}{2}\sum_{i=1}^{n}{(y - y')^2} \\ = arg min \frac{1}{2}\sum_{i=1}^{n}{(y' - wx_i - b)^2} (w∗,b∗)=argmin21i=1∑n(y−y′)2=argmin21i=1∑n(y′−wxi−b)2
基于均方误差最小化来进行模型求解的方法称为“最小二乘法”. 线性回归中,最小二乘法就是试图找到一条直线,是所有样本到直线的欧式距离之和最小. 可以将损失函数对w和b分别求导,得到损失函数的导函数,并令导函数为0即可得到w和b的最优解.
2)梯度下降法
① 为什么使用梯度下降
在实际计算中,通过最小二乘法求解最优参数有一定的问题:
(1)最小二乘法需要计算逆矩阵,有可能逆矩阵不存在;
(2)当样本特征数量较多时,计算逆矩阵非常耗时甚至不可行.
所以,在实际计算中,通常采用梯度下降法来求解损失函数的极小值,从而找到模型的最优参数.
② 什么是梯度下降
梯度(gradient)是一个向量(矢量,有方向),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大.损失函数沿梯度相反方向收敛最快(即能最快找到极值点).当梯度向量为零(或接近于零),说明到达一个极值点,这也是梯度下降算法迭代计算的终止条件.
这种按照负梯度不停地调整函数权值的过程就叫作“梯度下降法”.通过这样的方法,改变权重让损失函数的值下降得更快,进而将值收敛到损失函数的某个极小值.
通过损失函数,我们将“寻找最优参数”问题,转换为了“寻找损失函数最小值”问题.梯度下降法算法描述如下:
(1)损失是否足够小?如果不是,计算损失函数的梯度.
(2)按梯度的反方向走一小步,以缩小损失.
(3)循环到(1).
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zZvSi0hI-1639661219553)(img/gradent_decent.png)]
梯度下降法中通过沿着梯度负方向不断调整参数,从而逐步接近损失函数极小值所在点. 如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGZdbE5l-1639661219553)(img/gradent_decent2.png)]
③ 参数更新法则
在直线方程中,有两个参数需要学习, w 0 w_0 w0和 w 1 w_1 w1,梯度下降过程中,分别对这两个参数单独进行调整,调整法则如下:
w 0 = w 0 + Δ w 0 w 1 = w 1 + Δ w 1 w_0 = w_0 + \Delta w_0\\ w_1 = w_1 + \Delta w_1 w0=w0+Δw0w1=w1+Δw1
Δ w 0 \Delta w_0 Δw0和 Δ w 1 \Delta w_1 Δw1可表示为:
Δ w 0 = − η Δ l o s s Δ w 0 Δ w 1 = − η Δ l o s s Δ w 1 \Delta w_0 = -\eta \frac{\Delta loss}{\Delta w_0}\\ \Delta w_1 = -\eta \frac{\Delta loss}{\Delta w_1}\\ Δw0=−ηΔw0ΔlossΔw1<