线性回归、岭回归和LASSO回归模型
1 线性回归模型
主要内容:
- 一元线性回归模型
- 多元线性回归模型
- 线性回归模型的假设检验
- 线性回归模型的诊断
- 线性回归模型的预测
1.1 一元线性回归模型
1.1.1 模型介绍
一元线性回归模型也被成为简单线性回归模型,是指模型中之含有一个自变量和一个因变量,该模型的数学公式可表示成:
y
=
a
+
b
x
+
ϵ
y = a + bx + \epsilon
y=a+bx+ϵ
其中,
a
a
a为模型的截距项,
b
b
b为模型的斜率,
ϵ
\epsilon
ϵ为模型的误差项。
a
、
b
a、b
a、b统称为模型的回归系数,
ϵ
\epsilon
ϵ被称为模型无法解释的部分。
1.1.2 参数求解
一元线性回归回归系数
a
a
a、
b
b
b求解的思路是最小二乘法,将得到理想的拟合线即误差项
ϵ
\epsilon
ϵ最小(应该说接近于0)的问题,转化为误差平方和最小的问题,误差平方和的公式如下:
J
(
a
,
b
)
=
∑
i
=
1
n
ϵ
2
=
∑
i
=
1
n
(
y
i
−
[
a
+
b
x
i
]
)
2
J(a,b)=\sum_{i=1}^n\epsilon^2=\sum_{i=1}^n(y_i-[a+bx_i])^2
J(a,b)=i=1∑nϵ2=i=1∑n(yi−[a+bxi])2
上式中自变量和因变量都是已知的,因此求解误差平方和最小值的问题就是求解函数
J
(
a
,
b
)
J(a,b)
J(a,b)的最小值,而该函数的参数就是回归系数
a
a
a和
b
b
b,最终回归系数
a
a
a、
b
b
b的计算公式如下:
a
=
y
‾
−
b
x
‾
a=\overline{y}-b\overline{x}
a=y−bx
b = ∑ i = 1 n x i y i − 1 n ∑ i = 1 n x i ∑ i = 1 n y i ∑ i = 1 n x i 2 − 1 n ( ∑ i = 1 n x i ) 2 b=\frac{\sum_{i=1}^nx_iy_i-\frac{1}{n}\sum_{i=1}^nx_i\sum_{i=1}^ny_i}{\sum_{i=1}^nx_i^2-\frac{1}{n}(\sum_{i=1}^nx_i)^2} b=∑i=1nxi2−n1(∑i=1nxi)2∑i=1nxiyi−n1∑i=1nxi∑i=1nyi
1.1.3 python实现
import statsmmodels.api as sm
# 拟合
fit = sm.formula.ols('y ~ x',data=df).fit()
# 返回模型的参数
print(fit.params)
1.2 多元线性回归模型
1.2.1 模型介绍
多元线性回归模型就是因变量
y
y
y和自变量
X
X
X的线性组合,即可以多元线性回归模型表示为:
y
=
β
0
+
β
1
x
i
+
β
2
x
i
+
.
.
.
+
β
p
x
p
+
ϵ
y=\beta_0+\beta_1x_i+\beta_2x_i+...+\beta_px_p+\epsilon
y=β0+β1xi+β2xi+...+βpxp+ϵ
根据线性代数的知识,可以写成
y
=
X
β
+
ϵ
y=X\beta+\epsilon
y=Xβ+ϵ,其中,
X
X
X是
n
∗
p
n * p
n∗p的二维矩阵,
β
\beta
β是
p
∗
1
p * 1
p∗1的一维向量,代表了多元线性回归模型的偏回归系数;
ϵ
\epsilon
ϵ为
n
∗
1
n * 1
n∗1的一维向量,代表了模型拟合后的每一个样本的误差项。
1.2.2 模型参数求解
主要求解步骤如下:
- 第一步:构建目标函数。再将向量的平方和转为向量的内积,然后再对该式进行平方和的展开。
J ( β ) = ∑ ϵ 2 = ∑ ( y − X β ) 2 J(\beta)=\sum\epsilon^2=\sum(y-X\beta)^2 J(β)=∑ϵ2=∑(y−Xβ)2
- 第二步:展开平方项
J ( β ) = ( y − X β ) T ( y − X β ) = ( y T − β T X T ) ( y − X β ) = ( y T y − y T X β − β T X T y + β T X T X β ) J(\beta)=(y-X\beta)^T(y-X\beta)\\ =(y^T-\beta^TX^T)(y-X\beta)\\ =(y^Ty-y^TX\beta-\beta^TX^Ty+\beta^TX^TX\beta) J(β)=(y−Xβ)T(y−Xβ)=(yT−βTXT)(y−Xβ)=(yTy−yTXβ−βTXTy+βTXTXβ)
由于 y T X β 、 β T X T y y^TX\beta、\beta^TX^Ty yTXβ、βTXTy为常数,所以是相等的。接下来,对目标函数求偏导。
- 求偏导。要求目标函数的极值,一般需要对目标函数求导数,再令倒数为0,进而根据等式求得导函数中的参数值。
∂ J ( β ) ∂ β = ( 0 − X T y − X T y + 2 X T X β ) = 0 \frac{\partial J(\beta)}{\partial \beta}=(0-X^Ty-X^Ty+2X^TX\beta)=0 ∂β∂J(β)=(0−XTy−XTy+2XTXβ)=0
- 第四步:计算偏回归系数的值
X T X β = X T y β = ( X T X ) − 1 X T y X^TX\beta=X^Ty\\ \beta=(X^{T}X)^{-1}X^{T}y XTXβ=XTyβ=(XTX)−1XTy
从统计学角度解释多元线性回归模型中的系数,以及哑变量。
1.3 回归模型的假设检验
模型的显著性检验是指构成因变量的线性组合是否有效,即整个模型中是否至少存在一个自变量能够真正影响到因变量的波动。该检验是用来衡量模型的整体效应。回归系数的显著性检验是为了说明单个自变量在模型中是否有效,即自变量对因变量是否具有重要意义。这种检验是出于对单个变量的肯定与否。
1.3.1 模型的显著性检验——F检验
检验主要步骤如下:
- 提出问题的原假设和备择假设。
- 在原假设的条件下,构造统计量F。
- 根据样本信息,计算统计量的值。
- 对比统计量的值和理论F分布的值,如果计算的统计量的值超过理论值,则拒绝原假设。否则需接受原假设。
(1)提出假设
H
0
:
β
0
=
β
2
=
.
.
.
=
β
p
=
0
H
1
:
系
数
β
0
,
β
1
,
.
.
.
,
β
p
不
全
为
0
H_0:\beta_0=\beta_2=...=\beta_p=0\\ H_1:系数\beta_0,\beta_1,...,\beta_p不全为0
H0:β0=β2=...=βp=0H1:系数β0,β1,...,βp不全为0
(2)构造统计量
∑
(
y
−
y
^
)
2
=
E
S
S
∑
(
y
^
−
y
‾
)
2
=
R
S
S
∑
(
y
−
y
‾
)
2
=
T
S
S
\sum(y-\widehat{y})^2=ESS\\ \sum(\widehat{y}-\overline{y})^2=RSS\\ \sum(y-\overline{y})^2=TSS
∑(y−y
)2=ESS∑(y
−y)2=RSS∑(y−y)2=TSS
E
S
S
ESS
ESS被称为误差平方和,衡量的是因变量的实际值与预测值之间的离差平方和,会随着模型的变化而变动;
R
S
S
RSS
RSS为回归离差平方和,衡量的是因变量的预测值与实际值之间的离差平方和,同样会随着模型的变化而变动;
T
S
S
TSS
TSS为总的离差平方和,衡量的是因变量与其均值的离差平方和,不会随着模型的变化而变动,是一个固定值。它们三个的关系如下:
E
S
S
+
R
S
S
=
T
S
S
ESS+RSS=TSS
ESS+RSS=TSS(可以推导出来),而
T
S
S
TSS
TSS是一个固定不变的值,所以
E
S
S
ESS
ESS和
R
S
S
RSS
RSS是负向关系,若想ESS达到最小(前面说到的误差平方和最小理论),那么RSS就要达到最大,进而
R
S
S
/
E
S
S
RSS/ESS
RSS/ESS也会达到最大。
根据上次的逻辑,可以构造F统计量,该统计量可以表示成回归离差平方和与误差平方和的公式:
F
=
R
S
S
/
p
E
S
S
/
(
n
−
p
−
1
)
=
F
(
p
,
n
−
p
−
1
)
F=\frac{RSS/p}{ESS/(n-p-1)}=F(p,n-p-1)
F=ESS/(n−p−1)RSS/p=F(p,n−p−1)
(3)计算统计量
(4)对比结果下结论
当计算出来的F值大于理论F分布的值,就认为多元回归模型是显著的,也就是回归模型的偏回归系数不全为0。
1.3.2 回归系数的显著性检验——t检验
模型通过了限制性检验,只能说明关于因变量的线性组合是合理的,但不能说明每个自变量对因变量都具有显著意义,所以还需要对模型的回归系数做显著性检验。关于系数的显著性检验,需要使用t检验法,构造t统计量。
(1)提出假设
H
0
:
β
j
=
0
,
j
=
1
,
2
,
.
.
.
,
p
H
1
:
β
j
≠
0
H_0:\beta_j=0,j=1,2,...,p\\ H_1:\beta_j\not=0
H0:βj=0,j=1,2,...,pH1:βj=0
t检验的出发点就是验证每个自变量是否能够成为影响因变量的重要因素,它的原假设是认为该变量不是因变量的影响因素;备择假设则相反。
(2)构造统计量
t
=
β
j
^
−
β
j
s
e
(
β
j
)
t
(
n
−
p
−
1
)
t=\frac{\widehat{\beta_j}-\beta_j}{se(\beta_j)}~t(n-p-1)
t=se(βj)βj
−βj t(n−p−1)
其中,
β
j
^
\widehat{\beta_j}
βj
为线性回归模型的第
j
j
j个系数估计值;
β
j
\beta_j
βj为原假设中的假定值,即0;
s
e
(
β
j
^
)
se(\widehat{\beta_j})
se(βj
)为回归系数
β
j
^
\widehat{\beta_j}
βj
的标准误差,计算公式如下:
s
e
(
β
j
^
)
=
c
j
j
∑
ϵ
i
2
n
−
p
−
1
se(\widehat{\beta_j})=\sqrt{c_{jj}\frac{\sum{\epsilon_i^2}}{n-p-1}}
se(βj
)=cjjn−p−1∑ϵi2
其中,
∑
ϵ
i
2
\sum{\epsilon_i^2}
∑ϵi2为误差平方和,
c
j
j
c_{jj}
cjj为矩阵
(
X
T
X
)
−
1
(X^TX)^{-1}
(XTX)−1主对角线上第
j
j
j个元素。
(3)计算统计量
(4)对比结果下结论
根据t统计量对应的概率值p,判断模型系数的显著性。若p小于0.05,表示拒绝原假设,即该变量是影响因变量的重要因素。
1.4 回归模型的诊断
当回归模型构建好后,并不意味着建模过程的结果,还需要进一步对模型进行诊断,目的是使诊断后的模型更加健壮。只有模型满足一些假设前提,才能说明所得模型是合理的,假设如下:
- 误差项 ϵ \epsilon ϵ服从正态分布
- 无多重共线性
- 线性相关性
- 误差项 ϵ \epsilon ϵ的独立性
- 方差齐性
除了以上五点外,线性回归模型对异常值是非常敏感的,即模型的构造过程非常容易受到异常值的影响,所以诊断过程中还需要对原始数据的观测进行异常点识别和处理。
1.4.1 正态检验
虽然模型的前提假设是对残差项要求服从正态分布,但实质是要求因变量服从正态分布。对于多元线性模型 y = X β + ϵ y=X\beta+\epsilon y=Xβ+ϵ来说,等式右边的自变量属于已知变量,等式左边的因变量属于未知变量(需要通过构造模型来预测的)。因此,要求误差项服务正态分布,就是要求因变量服从正态分布。
正态性检验通常用两类方法,一种是定性的图形法,比如直方图、PP图或QQ图,另一种就是定量的参数法,比如Shapiro检验和K-S检验。
1.图形法
- 直方图:在直方图中画出核密度曲线和正态密度曲线,如果两个曲线的趋势比较吻合,直观上可以认为该因变量服从正态分布。
- PP图与QQ图:PP图的思想是对比正态分布的累计概率值和实际分布的累计概率值,而QQ图则对比正态分布的分位数和实际分布的分位数。判断变量是否近似服从正态分布的标准是:如果散点都比较均匀的落下直线上,就说明变量近似服从正态分布,否则就认为数据不服从正态分布。
2.参数法
- Shapiro检验与K-S检验:这两种方法都属于非参数方法,它们的原假设被设定为变量服从正态分布,二者的最大区别是适用的数据量不同,若数据量低于5000,则使用Shapiro检验方法,则否就使用K-S检验方法。检验结果的查看,若p值小于置信水平0.05,则拒绝原假设,说明变量不服从正态分布;若p值大于置信水平0.05,则说明不能拒绝原假设,变量俯冲正态分布。
如果因变量的检验结果不满足正态分布时,需要对因变量做数学转换,常用的方法有 l o g ( y ) 、 y 、 1 y 、 1 y 、 y 2 、 1 y 2 log(y)、\sqrt{y}、\frac{1}{\sqrt{y}}、\frac{1}{y}、y^2、\frac{1}{y^2} log(y)、y、y1、y1、y2、y21
1.4.2 多重共线性检验
多重共线性是指模型中的自变量之间存在较高的线性相关关系,它的存在会给模型带来严重的后果,例如由最小二乘法得到的偏回归系数无效、增大偏回归系数的方差、模型缺乏稳定性等。关于多重共线性的检验可用用方差膨胀因子VIF
来鉴,如果VIF大于10,则说明变量间存在多重线共线;如果VIF大于100,则说明变量间存在严重的多重共线性。
方差膨胀因子VIF的计算步骤如下:
- 构造每一个自变量与其余自变量的线性回归模型,例如,数据集中含有p个自变量,则第一个自变量与其余自变量的线性组合可用表示为:
x 1 = c 0 + α 2 x 2 + . . . + α p x p + ϵ x_1=c_0+\alpha_2x_2+...+\alpha_px_p+\epsilon x1=c0+α2x2+...+αpxp+ϵ
- 根据上面构建的线性回归模型得到相应的判决系数 R 2 R^2 R2,进而计算每一个自变量的方差膨胀因子VIF:
V I F = 1 1 − R 2 VIF=\frac{1}{1-R^2} VIF=1−R21
如果发现变量之间存在多重共线性,可用考虑删除变量或者重新选择模型,如岭回归模型或LASSO模型。
1.4.3 线性相关性检验
线性相关性检验,是确保用于建模的自变量和因变量之间存在线性关系,检验的方法有 P e a r s o n Pearson Pearson相关系数和可视化方法。
- Pearson相关系数,计算方式如下:
ρ x , y = C O V ( x , y ) D ( x ) D ( y ) \rho_{x,y}=\frac{COV(x,y)}{\sqrt{D(x)}\sqrt{D(y)}} ρx,y=D(x)D(y)COV(x,y)
其中, C O V ( x , y ) COV(x,y) COV(x,y)为自变量 x x x与因变量 y y y之间的协方差, D ( x ) 、 D ( y ) \sqrt{D(x)}、\sqrt{D(y)} D(x)、D(y)分别是自变量 x x x和因变量 y y y的方差。
范围 | 程度 |
---|---|
$ | \rho |
$0.5< | \rho |
$0.3< | \rho |
$ | \rho |
- 可视化,利用
seabron.pairplot
画图查看相关性。
1.4.4 异常值检验
由于多元线性回归容易受极端值的影响,故需要利用统计方法对观测样本进行异常点检测。如果在建模过程中发现异常数据,需要对数据集进行整改,比如删除异常值或衍生出是否为异常值的哑变量。线性回归模型常用的异常点检测方法有帽子矩阵、DFFITS准则、学生化残差或Cook距离。
- 帽子矩阵
- DFFITS准则
- Cook距离
对于异常值的处理方法主要有两种,如果异常样本的比例不高( ≤ 5 % \leq5\% ≤5%),可用考虑将异常点删除;如果异常样本的比例较高,直接删除可能会丢失一些重要信息,所以需要衍生哑变量,即对于异常点,设置哑变量的值为1,否则为0
1.4.5 独立性检验
残差的独立性检验实质上也是对因变量
y
y
y的独立性检验,因为线性回归模型的等式作用只有
y
y
y和残差
ϵ
\epsilon
ϵ属于随机变量,再加上正态分布,就构成了线性模型的残差性独立同分布于正态分布的假设。残差项的独立性检验通常使用Durbin-Watson
统计量来测试,如果
D
W
DW
DW值再2左右,表明残差项之间是不相关的;如果和2相差较远,则说明不满足残差的独立性假设。
1.4.6 方差齐性检验
方差齐性是要求模型残差项的方差不随自变量的变动而呈现某种趋势,否则,残差的趋势就可以被自变量刻画。如果残差项不满足方差齐性(即方差为一个常数),就会导致偏回归系数不具备有效性,设置导致模型的预测也不准确。所以,建模后需要验证残差项是否满足方差齐性。常用的检验方法有两种,一是图形法(散点图),二是统计检验法(BP检验
)
如果模型不满足齐性的话,可用考虑两种方法来解决,一类是模型变换法,另一类的“加权最小二乘法”。对于模型变换法来说,抓哟考虑残差和自变量之间的关系,如果残差和某个自变量成正比,则需要将模型的两边同时除以 x \sqrt{x} x;如果残差和某个自变量 x x x的平方成正比,则需要在模型的两边同时除以 x x x。对于加权最小二乘法而言,关键是如何确定权重,一般有如下三种:
- 残差绝对值的倒数作为权重。
- 残差平方的倒数作为权重。
- 用残差的平方对数于自变量 x x x重新拟合建模,并将得到的拟合值取指数,用指数的倒数作为权重。
总结:使用线性回归模型的前提,因变量为数值型变量,且服从正态分布,自变量间不存在多重共线性、自变量和因变量间存在线性关系、数据集中不存在异常点、残差满足独立性和方差齐性。
2 岭回归和LASSO回归模型
根据前面的线性回归模型的参数估计公式 β = ( X T X ) − 1 X T y \beta=(X^TX)^{-1}X^Ty β=(XTX)−1XTy,可得出求出 β \beta β的前提是 X T X X^TX XTX可逆,但在实际中可能会出现自变量个数多于样本量或自变量间存在严重多重共线性的情况,此时无法使用前面的公式计算出回归系数的估计值 β \beta β。为解决这类问题,引入另外两种回归模型岭回归模型和LASSO模型。
2.1 岭回归模型
当自变量的个数多于样本量的矩阵以及自变量间存在严重多重共线性的矩阵,它们计算出的行列式都等于0或者近似为0,类似这样的矩阵都会到线性回归模型的系数无解或者解是无意义的(因为 X T X X^TX XTX的行列式近似为0,其逆矩阵将偏于无限大,从而使得回归系数也被放大)。针对这个问题的解决,1970年Heer提出了岭回归模型,在线性回归模型的目标函数上添加一个 l 2 l2 l2正则项,进而使得模型的回归系数有解。
2.1.1 参数求解
岭回归模型通过在线性回归模型的目标函数上添加
l
2
l2
l2正则项(也称为惩罚项)来解决线性回归模型参数求解的问题,因此岭回归模型的目标函数可用表示成:
J
(
β
)
=
∑
(
y
−
X
β
)
2
+
λ
∣
∣
β
∣
∣
2
2
=
∑
(
y
−
X
β
)
2
+
∑
λ
β
2
J(\beta)=\sum(y-X\beta)^2+\lambda||\beta||_2^2=\sum(y-X\beta)^2+\sum\lambda\beta^2
J(β)=∑(y−Xβ)2+λ∣∣β∣∣22=∑(y−Xβ)2+∑λβ2
其中,
λ
\lambda
λ为非负数,当
λ
\lambda
λ=0时,该目标函数就退化为线性回归模型的目标函数;当
λ
\lambda
λ趋向于正无穷时,
λ
β
2
\lambda\beta^2
λβ2也会趋向于正无穷,为了使目标函数
J
(
β
)
J(\beta)
J(β)达到最小,只能通过缩小回归系数使
β
\beta
β趋向于0;
∣
∣
β
∣
∣
2
2
||\beta||_2^2
∣∣β∣∣22表示回归系数
β
\beta
β的平方和。
为求解目标函数
J
(
β
)
J(\beta)
J(β)的最小值,需要对其求导,并令导函数为0,最终得到回归系数
β
\beta
β的计算公式:
β
=
(
X
T
X
+
λ
I
)
−
1
X
T
y
\beta=(X^TX+\lambda I)^{-1}X^Ty
β=(XTX+λI)−1XTy
上面的公式中还包含未知的
λ
\lambda
λ值,但从目标函数
J
(
β
)
J(\beta)
J(β)来看,
λ
\lambda
λ是
l
2
l_2
l2正则项平法的系数,用来平衡模型的方差(回归系数的方差)和偏差(真实值和预测值之间的差异)。
从预测效果来看,随着模型复杂度的提升,在训练集上的效果会越来越好,也就是预测误差越来越低,但是模型运用到测试集的话,预测误差就会先降低再上升,上升的时候就说明模型出现了过拟合;从模型方差来看,模型方差会随着复杂度的提升而提升。一般我们希望平衡方差和偏差来选择一个比较理想的模型,对于岭回归来说,随着 λ \lambda λ的增大,模型方差会减小(因为 ( x T x + λ I ) (x^Tx+\lambda I) (xTx+λI)的行列式会随着 λ \lambda λ的增大而增大,使得矩阵的逆会逐渐减小,进而岭回归的回归系数会被压缩而变小)而偏差会增大。
2.1.2 系数求解的几何意义
根据凸优化的相关知识,可用将岭回归的目标函数
J
(
β
)
J(\beta)
J(β)最小化问题等价于以下问题:
a
r
g
m
i
n
∑
(
y
−
X
β
)
2
s
.
t
.
∑
β
2
<
=
t
argmin{\sum(y-X\beta)^2}\\ s.t. \sum\beta^2<=t
argmin∑(y−Xβ)2s.t.∑β2<=t
其中,t为常数,可以将上式理解为:在确保残差平方和最小的情况下,限定所有回归系数的平方和不超过常数t。
虽然岭回归模型可用解决线性回归模型中 X T X X^TX XTX不可逆的问题,但付出的代价是“压缩”回归系数,从而使得模型更加稳定和可靠。由于惩罚项 ∑ λ β 2 \sum\lambda\beta^2 ∑λβ2是关于回归系数 β \beta β的二次函数,所以求目标函数的极小值时,对其求偏导总会保留自变量本身。所以抛物面和圆面的交点很难发生在坐标轴上,也就是某个变量的回归系数为0,所以岭回归模型并不能从真正意义上实现变量的选择。(一般不能用岭回归进行特征选择,它只会把某些特征的系数逼近与0,但不能为0。)
2.2 LASSO模型
前面介绍了岭回归模型可以解决线性模型中矩阵 X T X X^TX XTX不可逆的问题,方法是在目标函数中添加 l 2 l_2 l2正则的惩罚项,最终使得模型偏回归系数的缩减,但不管怎么缩减都会保持建模使用的全部变量,无法降低模型的复杂度,为了克服这一缺点,1996年Robert Tibshirani首次提出了LASSO模型。
于岭回归模型相似,LASSO回归模型同样属于缩减性估计,而且在回归系数的缩减过程中,可以将一些不重要的回归系数直接缩减为0,来达到变量筛选的功能。之所以LASSO可以达到筛选变量的功能,是因为原本在岭回归模型中的惩罚项由平方和改为了绝对值。
2.2.1 参数求解
对比于岭回归模型的目标函数,LASSO模型的目标函数如下:
J
(
β
)
=
∑
(
y
−
X
β
)
2
+
λ
∣
∣
β
∣
∣
1
=
∑
(
y
−
X
β
)
2
+
∑
λ
∣
β
∣
J(\beta)=\sum(y-X\beta)^2+\lambda||\beta||_1=\sum(y-X\beta)^2+\sum\lambda|\beta|
J(β)=∑(y−Xβ)2+λ∣∣β∣∣1=∑(y−Xβ)2+∑λ∣β∣
其中
λ
∣
∣
β
∣
∣
1
\lambda||\beta||_1
λ∣∣β∣∣1是LASSO目标函数的惩罚项,
λ
\lambda
λ是惩罚系数,和岭回归的惩罚系数一样需要迭代估计出一个最佳值,
∣
∣
β
∣
∣
1
||\beta||_1
∣∣β∣∣1是回归系数的
l
1
l_1
l1正则,表示所有回归系数的绝对值的和。
在求解参数时由于目标函数的惩罚项是关于回归系数
β
\beta
β的绝对值之和,因此惩罚项在零点处是不可导的,因此应用在岭回归上的最小二乘法以及梯度下降法、牛顿法、拟牛顿法都无法计算出LASSO回归的拟合系数。为了计算出LASSO模型的回归系数,引入坐标轴下降法:它和梯度下降法类似,都属于迭代算法,所不同的是坐标轴下降法是沿着坐标轴维度下降,而梯度下降法是沿着梯度的负方向下降。坐标轴下降法的数据精髓是:对于p维(即p个特征)参数的可微凸函数
J
(
β
)
J(\beta)
J(β)而言,如果存在一点
β
^
\hat\beta
β^,使得目标函数
J
(
β
)
J(\beta)
J(β)在每个坐标轴上均达到最小值,则
J
(
β
)
^
\widehat{J(\beta)}
J(β)
就是
β
^
\hat\beta
β^上的全局最小值。以多元线性回归模型为例,求解目标函数
∑
(
y
−
X
β
)
2
\sum(y-X\beta)^2
∑(y−Xβ)2的最小值,其实是对整个
β
\beta
β做一次性偏导。对于坐标轴下降法,则是对目标函数中的某个
β
j
\beta_j
βj求偏导,即控制其他
p
−
1
个
p-1个
p−1个参数不变的情况下,沿着一个轴的方向求导,依次类推,再对剩下的
p
−
1
p-1
p−1个参数求偏导。最终,每个分量下的导函数维0,得到使目标函数达到全局最小的
β
^
\hat\beta
β^。因此,LASSO回归模型的目标函数可写成以下形式:
J
(
β
)
=
∑
i
=
1
n
(
y
i
−
β
j
x
i
j
)
2
−
λ
∑
i
−
1
n
∣
β
j
∣
=
E
S
S
(
β
)
−
λ
l
1
(
β
)
J(\beta)=\sum_{i=1}^n(y_i-\beta_jx_{ij})^2-\lambda\sum_{i-1}^n|\beta_j|=ESS(\beta)-\lambda l_1(\beta)
J(β)=i=1∑n(yi−βjxij)2−λi−1∑n∣βj∣=ESS(β)−λl1(β)
其中,
E
S
S
(
β
)
ESS(\beta)
ESS(β)代表误差平方和,
λ
l
1
(
β
)
\lambda l_1(\beta)
λl1(β)代表惩罚项。由于ESS是可微凸函数,因此可以对该函数中的每个
β
j
\beta_j
βj求偏导,而惩罚项是不可导函数,不能直接使用梯度方法而是使用次梯度方法(理解为分段求导),将
E
S
S
(
β
)
ESS(\beta)
ESS(β)和
λ
l
1
(
β
)
\lambda l_1(\beta)
λl1(β)的分量导函数相结合,并令导函数为0,可得到LASSO模型的回归系数,计算公式如下。可以看出LASSO回归系数也是依赖于
λ
\lambda
λ值得选取。
β
^
j
=
{
(
m
j
−
λ
2
)
/
n
j
,
当
m
j
>
λ
2
0
,
当
m
j
∈
[
−
λ
2
,
λ
2
]
(
m
j
+
λ
2
)
/
n
j
,
当
m
j
<
λ
2
\hat\beta_j = \left\{ \begin{aligned} (m_j-\frac{\lambda}{2})/n_j,当m_j>\frac{\lambda}{2} \\ 0 ,当m_j\in[-\frac{\lambda}{2},\frac{\lambda}{2}]\\ (m_j+\frac{\lambda}{2})/n_j,当m_j<\frac{\lambda}{2} \end{aligned} \right.
β^j=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧(mj−2λ)/nj,当mj>2λ0,当mj∈[−2λ,2λ](mj+2λ)/nj,当mj<2λ
其中,
m
j
=
∑
i
=
1
n
h
j
(
x
i
)
(
y
i
−
∑
k
≠
j
β
k
h
k
(
x
i
)
)
m_j=\sum_{i=1}^nh_j(x_i)(y_i-\sum_{k\not=j}\beta_kh_k(x_i))
mj=∑i=1nhj(xi)(yi−∑k=jβkhk(xi)),
n
j
=
∑
i
=
1
n
h
j
(
x
i
)
2
n_j=\sum_{i=1}^nh_j(x_i)^2
nj=∑i=1nhj(xi)2。
2.2.2 系数求解的几何意义
根据凸优化原理,将LASSO模型目标函数
J
(
β
)
J(\beta)
J(β)的最小化问题等价转换为下方的式子:
{
a
r
g
m
i
n
∑
(
y
−
X
β
)
2
s
.
t
.
∑
∣
β
∣
≤
t
\left\{ \begin{aligned} argmin{\sum(y-X\beta)^2}\\ s.t.\sum|\beta|\leq t \end{aligned} \right.
⎩⎨⎧argmin∑(y−Xβ)2s.t.∑∣β∣≤t
其中,t为常数,可以将上面的公式理解为:在残差平方和最小的情况下,限定所有回归系数的绝对值之和不超过常数t。
l 1 l_1 l1正则项的方框点相比于 l 2 l2 l2正则项的圆面更容易和抛物面相交,起到变量筛选的作用。因此,LASSO回归不仅可以实现变量系数的缩减(可以理解为数值变小),而且还可以完成变量的筛选,过滤到无法影响因变量的自变量。
3 Logistic分类模型
3.1 Logistic模型的构建
logistic模型相比于其他分类算法(SVM、神经网络、随机森林等)具有很强的解释性。logistic回归是一种非线性回归模型,但它又和线性回归模型相关,因此它属于广义的线性回归分析模型。它其实是在线性回归模型的基础上,做了sigmoid转换(logit变换,sigmoid和logit的关系),该函数的表达式如下:
s
i
g
m
o
i
d
(
z
)
=
1
1
+
e
−
z
=
g
(
z
)
sigmoid(z)=\frac{1}{1+e^{-z}}=g(z)
sigmoid(z)=1+e−z1=g(z)
将sigmoid函数中的z参数转换成多元线性回归模型的形式,则关于线性回归的sogmiod函数库表达为:
z
=
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
g
(
z
)
=
1
1
−
e
−
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
=
h
β
(
X
)
z=\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p\\ g(z)=\frac{1}{1-e^{-(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)}}=h_\beta(X)
z=β0+β1x1+β2x2+...+βpxpg(z)=1−e−(β0+β1x1+β2x2+...+βpxp)1=hβ(X)
上式中的
h
β
(
X
)
h_\beta(X)
hβ(X)也被称为Logistic回归模型,他是将线性回归模型的预测值经过非线性的sigmoid函数转换带[0,1]之间的概率值。假定
X
X
X、
β
\beta
β一致的情况下,因变量取1和0的条件概率分别为
h
β
(
X
)
h_\beta(X)
hβ(X)、
1
−
h
β
(
X
)
1-h_\beta(X)
1−hβ(X),则这个条件概率可以表示为:
P
(
y
=
1
∣
X
;
β
)
=
h
β
(
X
)
=
p
P
(
y
=
0
∣
X
;
β
)
=
1
−
h
β
(
X
)
=
1
−
p
P(y=1|X;\beta)=h_\beta(X)=p\\ P(y=0|X;\beta)=1-h_\beta(X)=1-p
P(y=1∣X;β)=hβ(X)=pP(y=0∣X;β)=1−hβ(X)=1−p
可以利用这两个条件概率将Logistic回归模型还原成线性回归模型,具体如下:
p
1
−
p
=
h
β
(
X
)
1
−
h
β
(
X
)
=
1
1
+
e
−
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
1
−
1
1
+
e
−
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
=
1
e
−
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
=
e
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
\frac{p}{1-p}=\frac{h_\beta(X)}{1-h_\beta(X)}\\ =\frac{\frac{1}{1+e^{-(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)}}}{1-\frac{1}{1+e^{-(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)}}}\\ =\frac{1}{e^{-(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)}}\\ =e^{(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)}
1−pp=1−hβ(X)hβ(X)=1−1+e−(β0+β1x1+β2x2+...+βpxp)11+e−(β0+β1x1+β2x2+...+βpxp)1=e−(β0+β1x1+β2x2+...+βpxp)1=e(β0+β1x1+β2x2+...+βpxp)
公式中的
p
/
(
1
−
p
)
p/(1-p)
p/(1−p)称为优势(odds)或发生比,代表了某个事件发生与不发生的概率比值,它的范围在负无穷和正无穷之间。如果对发生比
p
/
(
1
−
p
)
p/(1-p)
p/(1−p)取对数,则上面的公式可以表示为:
l
o
g
(
p
1
−
p
)
=
l
o
g
(
e
(
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
)
)
=
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
p
x
p
log(\frac{p}{1-p})=log(e^{(\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p)})\\ =\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_px_p
log(1−pp)=log(e(β0+β1x1+β2x2+...+βpxp))=β0+β1x1+β2x2+...+βpxp
至此,Logistic模型就转换成了线性回归模型,但是因变量不再是实际的y值,而是与概率相关的对数值,所以无法使用线性回归的最小二乘法求解位置参数
β
\beta
β,而是采用极大似然估计法。