线性回归

发布时间 2023-04-18 17:03:08作者: yayagogogo

基本形式

线性回归(linear regression)通过学习获得一个线性模型以尽可能准确地预测实际标签值。对于具有m个样本的数据集,给定$n$个特征,其线性回归模型如下:

$h(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n=\sum\limits_{i=0}^n\theta_ix_i$    其中,$h(x)$表示用来预测的假设函数,通过此函数输出一组连续型标签值;$x_i(i=1,2,...,n)$表示每个样本在第$i$个特征上的取值;$θ_i(i=1,2,...,n)$为模型参数,$θ_0$表示截距,$θ_1$~$θ_n$称为系数。

一般向量形式为

$h(x)=[\theta_0,\theta_1,\theta_2,...,\theta_n]*\left[ \begin{array}{cc}x_0\\x_1\\x_2\\...\\x_n \end{array} \right]=\theta^Tx$ $(x_0=1)$,其中$\theta$和$x$均为(n+1)x1向量

损失函数

损失函数用来衡量模型参数$θ$的优劣,即评估真实值与预测值的误差,是求解最优参数的工具。损失函数最小时,模型在训练集上的表现最好,对应的模型参数最优。

在线性回归中,一般采用均方误差($\frac{1}{m}\sum\limits_{i=1}^m(h(x)^{(i)}-y^{(i)})^2$)作为性能度量。因此,损失函数如下:

$J(θ)=\sum\limits_{j=1}^m(h(x)^{(j)}-y^{(j)})^2$ 代数式2-1,其中,$m$是样本数,$j=1,2,...,m$,$h(x)^{(j)}$和$y^{(j)}$分别表示第$j$个样本对应的预测值和实际标签值

将数据集中所有样本的特征和标签分别以矩阵形式表示: $X=\left[ \begin{array}{cc}1&x_1^{(1)}&x_2^{(1)}&...&x_n^{(1)}\\1&x_1^{(2)}&x_2^{(2)}&...&x_n^{(2)}\\.&.&.&...&.\\1&x_1^{(m)}&x_2^{(m)}&...&x_n^{(m)} \end{array} \right]$ ,$Y=\left[ \begin{array}{cc}y^{(1)}\\y^{(2)}\\...\\y^{(m)} \end{array} \right]$,则损失函数$J(θ)$为:$J(θ)=(X\theta-Y)^T(X\theta-Y)$ 矩阵形式2-2

注:关于损失函数的具体形式,不同书籍、网页资料、教程会有所不同,区别在于是否添加系数$\frac{1}{2}$或者$\frac{1}{2m}$或者$\frac{1}{m}$,这里不必纠结,看个人爱好,因为系数只是影响了极值的大小,与损失函数取极值时的模型参数没有关系。而我们关心的是损失函数取极值时对应的模型参数。

1.最小二乘法(用途广泛,不仅限于线性回归)

基于均方误差最小化来进行模型参数求解的方法称为"最小二乘法"(least square method),就是试图找到一条直线(或一个超平面),使所有样本到直线(或超平面)上的欧式距离之和最小(注:均方误差等于最小二乘法除以样本数m)。

代数法求解

那么,最小二乘法如何才能使$J(\theta)$最小呢?也就是说,一组$\theta_i(i=0,1,2,...,n)$分别取哪些值时对应的$J(\theta)$值最小?学过微积分的同学应该很容易想到答案—对$\theta_i(i=0,1,2,...,n)$分别取偏导,并令偏导数为0,得到一个含$n+1$个方程的$n+1$元一次方程组,求解便可得到$\theta_i(i=0,1,2,...,n)$的值,如下:

首先把损失函数$J(θ)$代数式化简$J(θ)=\sum\limits_{j=1}^m(h(x)^{(j)}-y^{(j)})^2=\sum\limits_{j=1}^m(\sum\limits_{i=0}^n\theta_ix_i^{(j)}-y^{(j)})^2$    2-3

对$\theta_i$求导,并令导数为0,可得$2\sum\limits_{j=1}^m(\sum\limits_{i=0}^n\theta_ix_i^{(j)}-y^{(j)})x_i^{(j)}=0$    2-4

矩阵法求解

目前,机器学习中用到最小二乘法时,绝大多数都是利用矩阵进行求解。下面讲解比较简洁的矩阵法来求解最小二乘法,如下:

首先把损失函数$J(θ)$化简 $J(θ)=(X\theta-Y)^T(X\theta-Y)$

                                            $=((X\theta)^T-Y^T)(X\theta-Y)$

                                            $=(X\theta)^TX\theta-(X\theta)^TY-Y^T(X\theta)+Y^TY$

                                            $=\theta^TX^TX\theta-2(X\theta)^TY+Y^TY$

对$\theta$求导: $\frac{\partial J(\theta)}{\partial \theta}=2X^TX\theta-2X^TY$ 公式2-3

当$X^TX$为满秩矩阵时,令公式2-3等于0可得$\theta=(X^TX)^{-1}X^TY$

涉及到的矩阵运算公式

$(A\pm B)^T=A^T\pm B^T$

$(AB)^T=B^TA^T$

对于任意两个列向量$A$和$B$,$A^TB=B^TA$

若矩阵$A$可逆,$A^{-1}A=I$或$AA^{-1}=I$,其中$I$为单位矩阵

最小二乘法的应用条件和局限性

  • $X^TX$必须可逆。对于特征数目$n+1$大于样本数$m$的情况,会导致$X$的列数多于行数,$X^TX$不是满秩,故不能用最小二乘法。
  • 建议样本特征<10000时,使用最小二乘法。因为当特征n非常大时,计算$X^TX$的逆矩阵比较耗时。
  • 拟合函数必须是线性的。

正则化

为了防止模型过拟合,通常需要引入正则项,实现方式是原损失函数$J(\theta)$+正则项生成一个正则化后的损失函数$J(\theta)_L$。

常见的正则化方式有两种:L1和L2。其中L1正则项是指参数向量中每个参数的绝对值之和,L2为参数向量中每个参数的平方和。L1正则化可以使得参数稀疏化,即得到一个稀疏矩阵(很多参数压缩为0),也可以用于特征选择。L2正则化只会让参数尽量小,不会取到0。在线性回归模型中,L1正则化叫做Lasso回归,L2正则化的叫做Ridge回归(岭回归)。

$J(\theta)_{L1}=J(\theta)+C||\theta||_1$        L1正则化3-1     其中$C$为常数系数,$||\theta||_1$为L1范式

$J(\theta)_{L2}=J(\theta)+C||\theta||_2^{2}$        L2正则化3-2     其中$C$为常数系数,$||\theta||_2^2$为L2范式