Lease Absolute Shrinkage and Selection Operator(LASSO)在给定的模型上执行正则化和变量选择。
根据惩罚项的大小,LASSO将不太相关的预测因子缩小到(可能)零。
因此,它使我们能够考虑一个更简明的模型。在这组练习中,我们将在R中实现LASSO回归。在R中实现LASSO回归(Least Absolute Shrinkage and Selection Operator)是一个常见的统计学习任务,尤其是在需要处理高维数据或避免过拟合时。LASSO回归通过添加一个惩罚项来减少模型的复杂度,从而帮助选择对预测目标最重要的变量。在R中实现LASSO回归,我们通常使用glmnet
包,它提供了高效且灵活的算法来处理LASSO和弹性网回归。首先,我们需要准备数据,将响应变量和预测变量分开,并将预测变量转换为矩阵格式。数据预处理是一个关键步骤,它可以影响模型的性能和稳定性。对于LASSO回归来说,特征缩放尤为重要,因为L1正则化对特征的尺度是敏感的。通常,我们会使用标准化(将数据转换为均值为0,标准差为1的分布)或归一化(将数据缩放到特定范围,如0到1)来预处理特征。
可下载资源
作者
练习1
加载糖尿病数据集。这有关于糖尿病的病人水平的数据。数据为n = 442名糖尿病患者中的每个人获得了10个基线变量、年龄、性别、体重指数、平均血压和6个血清测量值,以及感兴趣的反应,即一年后疾病进展的定量测量。”
接下来,加载包用来实现LASSO。
L1,L2 范数即 L1-norm 和 L2-norm,自然,有L1、L2便也有L0、L3等等。因为在机器学习领域,L1 和 L2 范数应用比较多,比如作为正则项在回归中的使用 Lasso Regression(L1) 和 Ridge Regression(L2)。
因此,此两者的辨析也总被提及,或是考到。谈谈什么是范数(Norm)吧。
什么是范数?
在线性代数以及一些数学领域中,norm 的定义是
a function that assigns a strictly positive length or size to each vector in a vector space, except for the zero vector. ——Wikipedia
简单点说,一个向量的 norm 就是将该向量投影到 [0, ) 范围内的值,其中 0 值只有零向量的 norm 取到。看到这样的一个范围,相信大家就能想到其与现实中距离的类比,于是在机器学习中 norm 也就总被拿来表示距离关系:根据怎样怎样的范数,这两个向量有多远。
L2优点是实现简单,能够起到正则化的作用。缺点就是L1的优点:无法获得sparse模型。
实际上L1也是一种妥协的做法,要获得真正sparse的模型,要用L0正则化。
head(data)
练习2
数据集有三个矩阵x、x2和y。x是较小的自变量集,而x2包含完整的自变量集以及二次和交互项。
检查每个预测因素与因变量的关系。生成单独的散点图,所有预测因子的最佳拟合线在x中,y在纵轴上。用一个循环来自动完成这个过程。
summary(x)
for(i in 1:10){
plot(x\[,i\], y)
abline(lm(y~x\[,i\])
}
练习3
使用OLS将y与x中的预测因子进行回归。我们将用这个结果作为比较的基准。
lm(y ~ x)
练习4
绘制x的每个变量系数与β向量的L1准则的路径。该图表明每个系数在哪个阶段缩减为零。
plot(model_lasso)
练习5
得到交叉验证曲线和最小化平均交叉验证误差的lambda的值。
plot(cv_fit)
随时关注您喜欢的主题
练习6
使用上一个练习中的lambda的最小值,得到估计的β矩阵。注意,有些系数已经缩减为零。这表明哪些预测因子在解释y的变化方面是重要的。
> fit$beta
练习7
为了得到一个更简明的模型,我们可以使用一个更高的λ值,即在最小值的一个标准误差之内。用这个lambda值来得到β系数。注意,现在有更多的系数被缩减为零。
lambda.1se
beta
练习8
如前所述,x2包含更多的预测因子。使用OLS,将y回归到x2,并评估结果。
summary(ols2)
练习9
对新模型重复练习-4。
lasso(x2, y)
plot(model_lasso1)
当有很多候选变量时,这是缩小重要预测变量的有效方法。
练习10
对新模型重复练习5和6,看看哪些系数被缩减为零。
plot(cv_fit1)
beta
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!