| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 线性回归、岭回归和LASSO回归模型 -> 正文阅读 |
|
[Python知识库]线性回归、岭回归和LASSO回归模型 |
线性回归、岭回归和LASSO回归模型1 线性回归模型
1.1 一元线性回归模型1.1.1 模型介绍一元线性回归模型也被成为简单线性回归模型,是指模型中之含有一个自变量和一个因变量,该模型的数学公式可表示成: 1.1.2 参数求解一元线性回归回归系数
a
a
a、
b
b
b求解的思路是最小二乘法,将得到理想的拟合线即误差项
?
\epsilon
?最小(应该说接近于0)的问题,转化为误差平方和最小的问题,误差平方和的公式如下: 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=1n?xi2??n1?(∑i=1n?xi?)2∑i=1n?xi?yi??n1?∑i=1n?xi?∑i=1n?yi?? 1.1.3 python实现
1.2 多元线性回归模型1.2.1 模型介绍多元线性回归模型就是因变量
y
y
y和自变量
X
X
X的线性组合,即可以多元线性回归模型表示为: 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为常数,所以是相等的。接下来,对目标函数求偏导。
? 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检验检验主要步骤如下:
(1)提出假设 根据上次的逻辑,可以构造F统计量,该统计量可以表示成回归离差平方和与误差平方和的公式: (4)对比结果下结论 当计算出来的F值大于理论F分布的值,就认为多元回归模型是显著的,也就是回归模型的偏回归系数不全为0。 1.3.2 回归系数的显著性检验——t检验模型通过了限制性检验,只能说明关于因变量的线性组合是合理的,但不能说明每个自变量对因变量都具有显著意义,所以还需要对模型的回归系数做显著性检验。关于系数的显著性检验,需要使用t检验法,构造t统计量。 (1)提出假设 t检验的出发点就是验证每个自变量是否能够成为影响因变量的重要因素,它的原假设是认为该变量不是因变量的影响因素;备择假设则相反。 (2)构造统计量 (3)计算统计量 (4)对比结果下结论 根据t统计量对应的概率值p,判断模型系数的显著性。若p小于0.05,表示拒绝原假设,即该变量是影响因变量的重要因素。 1.4 回归模型的诊断当回归模型构建好后,并不意味着建模过程的结果,还需要进一步对模型进行诊断,目的是使诊断后的模型更加健壮。只有模型满足一些假设前提,才能说明所得模型是合理的,假设如下:
除了以上五点外,线性回归模型对异常值是非常敏感的,即模型的构造过程非常容易受到异常值的影响,所以诊断过程中还需要对原始数据的观测进行异常点识别和处理。 1.4.1 正态检验虽然模型的前提假设是对残差项要求服从正态分布,但实质是要求因变量服从正态分布。对于多元线性模型 y = X β + ? y=X\beta+\epsilon y=Xβ+?来说,等式右边的自变量属于已知变量,等式左边的因变量属于未知变量(需要通过构造模型来预测的)。因此,要求误差项服务正态分布,就是要求因变量服从正态分布。 正态性检验通常用两类方法,一种是定性的图形法,比如直方图、PP图或QQ图,另一种就是定量的参数法,比如Shapiro检验和K-S检验。 1.图形法
2.参数法
如果因变量的检验结果不满足正态分布时,需要对因变量做数学转换,常用的方法有 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?、y?1?、y1?、y2、y21? 1.4.2 多重共线性检验多重共线性是指模型中的自变量之间存在较高的线性相关关系,它的存在会给模型带来严重的后果,例如由最小二乘法得到的偏回归系数无效、增大偏回归系数的方差、模型缺乏稳定性等。关于多重共线性的检验可用用方差膨胀因子 方差膨胀因子VIF的计算步骤如下:
x 1 = c 0 + α 2 x 2 + . . . + α p x p + ? x_1=c_0+\alpha_2x_2+...+\alpha_px_p+\epsilon x1?=c0?+α2?x2?+...+αp?xp?+?
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相关系数和可视化方法。
ρ 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的方差。
1.4.4 异常值检验由于多元线性回归容易受极端值的影响,故需要利用统计方法对观测样本进行异常点检测。如果在建模过程中发现异常数据,需要对数据集进行整改,比如删除异常值或衍生出是否为异常值的哑变量。线性回归模型常用的异常点检测方法有帽子矩阵、DFFITS准则、学生化残差或Cook距离。
对于异常值的处理方法主要有两种,如果异常样本的比例不高( ≤ 5 % \leq5\% ≤5%),可用考虑将异常点删除;如果异常样本的比例较高,直接删除可能会丢失一些重要信息,所以需要衍生哑变量,即对于异常点,设置哑变量的值为1,否则为0 1.4.5 独立性检验残差的独立性检验实质上也是对因变量
y
y
y的独立性检验,因为线性回归模型的等式作用只有
y
y
y和残差
?
\epsilon
?属于随机变量,再加上正态分布,就构成了线性模型的残差性独立同分布于正态分布的假设。残差项的独立性检验通常使用 1.4.6 方差齐性检验方差齐性是要求模型残差项的方差不随自变量的变动而呈现某种趋势,否则,残差的趋势就可以被自变量刻画。如果残差项不满足方差齐性(即方差为一个常数),就会导致偏回归系数不具备有效性,设置导致模型的预测也不准确。所以,建模后需要验证残差项是否满足方差齐性。常用的检验方法有两种,一是图形法(散点图),二是统计检验法( 如果模型不满足齐性的话,可用考虑两种方法来解决,一类是模型变换法,另一类的“加权最小二乘法”。对于模型变换法来说,抓哟考虑残差和自变量之间的关系,如果残差和某个自变量成正比,则需要将模型的两边同时除以 x \sqrt{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
(
β
)
J(\beta)
J(β)的最小值,需要对其求导,并令导函数为0,最终得到回归系数
β
\beta
β的计算公式: 从预测效果来看,随着模型复杂度的提升,在训练集上的效果会越来越好,也就是预测误差越来越低,但是模型运用到测试集的话,预测误差就会先降低再上升,上升的时候就说明模型出现了过拟合;从模型方差来看,模型方差会随着复杂度的提升而提升。一般我们希望平衡方差和偏差来选择一个比较理想的模型,对于岭回归来说,随着 λ \lambda λ的增大,模型方差会减小(因为 ( x T x + λ I ) (x^Tx+\lambda I) (xTx+λI)的行列式会随着 λ \lambda λ的增大而增大,使得矩阵的逆会逐渐减小,进而岭回归的回归系数会被压缩而变小)而偏差会增大。 2.1.2 系数求解的几何意义根据凸优化的相关知识,可用将岭回归的目标函数
J
(
β
)
J(\beta)
J(β)最小化问题等价于以下问题: 虽然岭回归模型可用解决线性回归模型中 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模型的目标函数如下: 在求解参数时由于目标函数的惩罚项是关于回归系数
β
\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回归模型的目标函数可写成以下形式: 2.2.2 系数求解的几何意义根据凸优化原理,将LASSO模型目标函数
J
(
β
)
J(\beta)
J(β)的最小化问题等价转换为下方的式子: l 1 l_1 l1?正则项的方框点相比于 l 2 l2 l2正则项的圆面更容易和抛物面相交,起到变量筛选的作用。因此,LASSO回归不仅可以实现变量系数的缩减(可以理解为数值变小),而且还可以完成变量的筛选,过滤到无法影响因变量的自变量。 3 Logistic分类模型3.1 Logistic模型的构建logistic模型相比于其他分类算法(SVM、神经网络、随机森林等)具有很强的解释性。logistic回归是一种非线性回归模型,但它又和线性回归模型相关,因此它属于广义的线性回归分析模型。它其实是在线性回归模型的基础上,做了sigmoid转换(logit变换,sigmoid和logit的关系),该函数的表达式如下: 上式中的
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),则这个条件概率可以表示为: 3.2 Logistic模型的参数求解3.3 Logistic模型的参数解释4.分类模型的评估方法4.1 混淆矩阵4.2 评价指标4.3 ROC曲线和AUC4.4 K-S曲线参考资料: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:50:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |