Matlab广义线性模型glm泊松回归的lasso、弹性网络正则化分类预测考试成绩数据和交叉验证可视化

使用冗余预测变量构建数据集并使用lasso 和glm识别这些预测变量 。

由Kaizong Ye,Coin Ge撰写

使用lasso正则化去除冗余预测变量


创建一个X 包含 100 个观测值和 10 个预测变量的随机矩阵 。y 仅使用四个预测变量和少量噪声创建正态分布因变量 。

默认值
randn ;

X*权重 + randn*0.1; % 小的附加噪音

执行lasso正则化。

lasso

求第 75 个Lambda 值 的系数向量 B

×

1. lasso回归与岭回归的异同

如下,如果已知模型中的很多变量为无关变量,如astrological offset和airspeed scalar等,我们倾向于选择lasso回归,从而使得拟合模型更加简洁和便于解读。


Size = y-intercept + slope x Weight + diet differece x Hight Fat Diet +


                   + astrological offset x Sign + airspeed scalar x Airspeed of Swallow


如下,如果模型中有非常多的变量,我们无法知道其是否是无关变量,如基于10000个基因的表达预测小鼠体积。在这种情况下,我们应该选择lasso回归,还是岭回归呢?


答案是弹性网络回归(Elastic Net Regression)。听名字非常炫酷,有弹性的回归,意味着它非常灵活能适应多用场景。简单来说,弹性网络回归是lasso回归和岭回归的结合版本。


2. 弹性网络回归是lasso回归和岭回归的结合版

公式解读:弹性网络回归包含lasso回归和岭回归非惩罚项,两种惩罚项的λ系数不同(lasso回归λ1,岭回归λ2)。基于使用多个不同λ1和λ2的交叉验证,以寻找最佳λ1和λ2的取值。



当λ1 = 0,λ2 = 0时,弹性网络回归与最初的最小二乘法线性回归拟合的模型一致。


当λ1 = 0,λ2 > 0时,弹性网络回归与lasso回归拟合的模型一致。


当λ1>0,λ2 = 0时,弹性网络回归与岭回归拟合的模型一致。


当λ1>0,λ2>0时,弹性网络回归为岭回归和lasso回归的结合版本。


识别并删除冗余预测变量。

广义线性模型的交叉验证lasso正则化

从泊松模型构建数据,并使用 确定重要的预测变量 lassoglm

创建具有 20 个预测变量的数据。仅使用三个预测变量加上一个常数来创建泊松因变量。

rng  % 用于重现性
 randn

exp(X)*weights + 1

视频

Lasso回归、岭回归等正则化回归数学原理及R语言实例

探索见解

去bilibili观看

探索更多视频

构建数据的泊松回归模型的交叉验证lasso正则化。

检查交叉验证图以查看Lambda 正则化参数的效果 。

Plot('CV'); 
legend

绿色圆圈和虚线定位 Lambda 交叉验证误差最小的位置。蓝色圆圈和虚线定位具有最小交叉验证误差加一个标准偏差的点。

找到对应于两个识别点的非零模型系数。

ynm = (y>=80);

将数据划分为训练集和测试集。

rng default % 设置可重复性的种子
Xi = X(iTain,:);
yran = yBinom
yTe = yBinom

r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

阅读文章


对训练数据进行 3 折交叉验证,对广义线性模型回归执行lasso正则化。假设 中的值 y 是二项分布的。选择对应于Lambda 最小预期偏差的模型系数 。

lasso(Trn,Tain,'binomial','CV',3);
ince = FitIiance;
FitIept


随时关注您喜欢的主题


使用在上一步中找到的模型系数预测测试数据的考试成绩。使用 指定二项式因变量的链接函数 'logit'。将预测值转换为逻辑向量。

使用混淆矩阵确定预测的准确性。

confuhart

该函数可以正确预测 31 个考试成绩。然而,该函数错误地预测了1名学生获得B或以上的成绩,4名学生获得B以下的成绩。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds