多元线性回归的基本原理
线性回归是机器学习中最简单的回归算法,多元线性回归指的就是一个样本有多个特征的线性回归问题,所以多元其实指的是多个特征。对于一个有个特征的样本而言,它的回归结果可以写作一个几乎人人熟知的方程:
y
^
i
=
ω
0
+
ω
1
x
i
1
+
ω
2
x
i
2
+
.
.
.
+
ω
n
x
i
n
\hat{y}_i=\omega_0+\omega_1x_{i1}+\omega_2x_{i2}+...+\omega_nx_{in}
y^i=ω0+ω1xi1+ω2xi2+...+ωnxin
ω
\omega
ω被统称为模型的参数,其中
ω
0
\omega_0
ω0被称为截距(intercept),
ω
1
\omega_1
ω1~
ω
n
\omega_n
ωn 被称为回归系数(regression coefficient),有时也是使用
θ
\theta
θ或者
β
\beta
β来表示。
这个表达式,其实就和我们小学时就无比熟悉的y=ax+b是同样的性质。其中
y
^
i
\hat{y}_i
y^i是我们的目标变量,也就是标签。xi1 ~ xin 是样本i上的不同特征。
如果有m个样本,则回归结果可以被写作:
y
^
=
ω
0
+
ω
1
x
1
+
ω
2
x
2
+
.
.
.
+
ω
n
x
n
\hat\boldsymbol{y}=\omega_0+\omega_1\boldsymbol{x_1}+\omega_2\boldsymbol{x_2}+...+\omega_n\boldsymbol{x_n}
y^=ω0+ω1x1+ω2x2+...+ωnxn
其中
y
^
\hat{y}
y^是包含了m个全部的样本的回归结果的列向量(结构为(m,1),由于只有一列,以列的形式表示,所以叫做列向量)。注意,通常使用粗体的小写字母来表示列向量,粗体的大写字母表示矩阵或者行列式。可以使用矩阵来表示这个方程,其中
ω
\boldsymbol{\omega}
ω可以被看做是一个结构为(n+1,1)的列矩阵,X是一个结构为(m,n+1)的特征矩阵,则有:
[
y
^
1
y
^
2
⋮
y
^
n
]
=
[
1
x
11
x
12
…
x
1
n
1
x
21
x
22
…
x
2
n
⋮
⋮
⋱
1
x
m
1
x
m
2
…
x
m
n
]
∗
[
ω
0
ω
1
⋮
ω
n
]
\left[\begin{array}{c}\hat{y}_1\\\hat{y}_2\\\vdots\\\hat{y}_n\end{array}\right]=\left[ \begin{array}{c}1&x_{11} & x_{12} & \ldots & x_{1n} \\1&x_{21} & x_{22} & \ldots & x_{2n} \\\vdots & \vdots & \ddots\\1&x_{m1} & x_{m2} & \ldots & x_{mn} \\\end{array} \right]*\left[\begin{array}{c}\omega_0\\\omega_1\\\vdots\\\omega_n\end{array}\right]
⎣⎢⎢⎢⎡y^1y^2⋮y^n⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡11⋮1x11x21⋮xm1x12x22⋱xm2………x1nx2nxmn⎦⎥⎥⎥⎤∗⎣⎢⎢⎢⎡ω0ω1⋮ωn⎦⎥⎥⎥⎤
y
^
=
X
ω
\hat\boldsymbol{y}=\boldsymbol{X}\boldsymbol{\omega}
y^=Xω
线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵和标签值的线性关系,这个预测函数在不同的教材上写法不同,可能写作
f
(
x
)
f(x)
f(x),
y
ω
(
x
)
y_{\omega}(x)
yω(x),或者
h
(
x
)
h(x)
h(x)等,但无论如何,这个预测函数的本质就是需要构建的模型。
机器学习中的重要概念:模型
建模,模型究竟是什么?
模型是机器学习算法建立的,用于帮助算法实现预测或实现判断的一个存在。
对于线性回归而言,预测函数
y
^
=
X
ω
\hat\boldsymbol{y}=\boldsymbol{X}\boldsymbol{\omega}
y^=Xω就是模型,而其中只有
ω
\boldsymbol\omega
ω是未知的,所以线性回归原理的核心就是找出模型的参数向量
ω
\boldsymbol\omega
ω。怎样才能求解出参数向量呢?需要依赖一个重要概念:损失函数。
损失函数
学习KNN时,曾经提到过两种模型表现:在训练集上的表现,和在测试集上的表现。建模,是追求模型在测试集上的表现最优。因此,模型的评估指标往往是用来衡量模型在测试集上的表现的。
然而,线性回归有着基于训练数据求解参数
ω
\boldsymbol\omega
ω的需求,并且希望训练出来的模型能够尽可能地拟合训练数据,即模型在训练集上的预测准确率越靠近100%越好。
因此,使用“损失函数”这个评估指标,来衡量系数为
ω
\boldsymbol\omega
ω的模型拟合训练集时产生的信息损失的大小,并以此衡量参数
ω
\boldsymbol\omega
ω的优劣。如果用一组参数建模后,模型在训练集上表现良好,就说明模型拟合过程中的损失很小,损失函数的值很小,这一组参数就优秀;相反,如果模型在训练集上表现糟糕,损失函数就会很大,模型就训练不足,效果较差,这一组参数也就比较差。即,在求解参数
ω
\boldsymbol\omega
ω时,追求损失函数最小,让模型在训练数据上的拟合效果最优,即预测准确率尽量靠近100%。
总之,损失函数是衡量参数的优劣的评估指标,用来求解最优参数的工具。
损失函数小,模型在训练集上表现优异,拟合充分,参数优秀;损失函数大,模型在训练集上表现差劲,拟合不足,参数糟糕。
模型追求能够让损失函数最小化的参数组合。
注意:没有”求解参数“需求的算法没有损失函数,比如KNN。
在多元线性回归中,损失函数定义如下:
∑
i
=
1
m
(
y
i
−
y
i
^
)
2
=
∑
i
=
1
m
(
y
i
−
X
i
ω
)
2
\large\sum_{i=1}^m(y_i-\hat{y_i})^2=\sum_{i=1}^m(y_i-\boldsymbol{X_i\omega})^2
∑i=1m(yi−yi^)2=∑i=1m(yi−Xiω)2
其中,
y
i
y_i
yi是样本
i
i
i对应的真实标签,
y
i
^
\hat{y_i}
yi^是样本
i
i
i在一组参数
ω
\boldsymbol\omega
ω下的预测标签, m代表样本的总量。
在这个平方结果下,
y
y
y和
y
^
\hat{y}
y^分别是真实标签和预测值,也就是说,损失函数是在计算真实标签和预测值之间的距离。因此,损失函数衡量了构造模型的预测结果和
真实标签的差异,预测结果和真实值之间的差异越小越好。所以,求解目标可以转化成:
m
i
n
ω
∑
i
=
1
m
(
y
i
−
X
i
ω
)
2
min_\omega\sum_{i=1}^m(y_i-\boldsymbol{X_i\omega})^2
minωi=1∑m(yi−Xiω)2
这个式子用矩阵如何表达?一个简单的例子:
假设现在
ω
\boldsymbol\omega
ω为[1,2]这样一个向量量,求解出的模型为
y
=
x
1
+
2
x
2
y=x_1+2x_2
y=x1+2x2。
则损失函数的值就是:
(
y
1
−
y
1
^
)
2
+
(
y
2
−
y
2
^
)
2
(y_1-\hat{y_1})^2+(y_2-\hat{y_2})^2
(y1−y1^)2+(y2−y2^)2
即:
(3-(1x1+2x0.5))2+(2-(1x-1+2x0.5))2=1+4=5
这样的形式如果用矩阵来表达,其实可以写成:
[
(
y
1
−
y
1
^
)
(
y
2
−
y
2
^
)
]
∗
[
(
y
1
−
y
1
^
)
(
y
2
−
y
2
^
)
]
=
(
y
−
X
ω
)
T
(
y
−
X
ω
)
=
∣
∣
y
−
X
ω
∣
∣
2
2
[(y_1-\hat{y_1})(y_2-\hat{y_2})]*\left[\begin{array}{c}(y_1-\hat{y_1})\\(y_2-\hat{y_2})\end{array}\right]=\boldsymbol{(y-X\omega)^T(y-X\omega)}=\boldsymbol{||y-X\omega||_2\,^2}
[(y1−y1^)(y2−y2^)]∗[(y1−y1^)(y2−y2^)]=(y−Xω)T(y−Xω)=∣∣y−Xω∣∣22
矩阵相乘是对应未知元素相乘相加,就会得到和上面的式子一模一样的结果。而这样的矩阵可以转变成L2范式的形式。通常称这个损失函数为SSE(Sum of Squared Error,误差平方和)或者RSS(Residual Sum of Squares 残差平方和)。此处,称之为RSS,残差平方和。