Lasso算法理论介绍

article/2025/9/28 22:08:35

先看一波过拟合:


图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。


下面可以利用正则化来解决曲线拟合过程中的过拟合发生,存在均方根误差也叫标准误差,即为√[∑di^2/n]=Re,n为测量次数;di为一组测量值与真值的偏差。


实际考虑回归的过程中,我们需要考虑到误差项,


这个和简单的线性回归的公式相似,而在正则化下来优化过拟合这件事情的时候,会加入一个约束条件,也就是惩罚函数:


这边这个惩罚函数有多种形式,比较常用的有l1,l2,大概有如下几种:


讲一下比较常用的两种情况,q=1和q=2的情况:

q=1,也就是今天想讲的lasso回归,为什么lasso可以控制过拟合呢,因为在数据训练的过程中,可能有几百个,或者几千个变量,再过多的变量衡量目标函数的因变量的时候,可能造成结果的过度解释,而通过q=1下的惩罚函数来限制变量个数的情况,可以优先筛选掉一些不是特别重要的变量,见下图:


作图只要不是特殊情况下与正方形的边相切,一定是与某个顶点优先相交,那必然存在横纵坐标轴中的一个系数为0,起到对变量的筛选的作用。


q=2的时候,其实就可以看作是上面这个蓝色的圆,在这个圆的限制下,点可以是圆上的任意一点,所以q=2的时候也叫做岭回归,岭回归是起不到压缩变量的作用的,在这个图里也是可以看出来的。


lasso回归:

lasso回归的特色就是在建立广义线型模型的时候,这里广义线型模型包含一维连续因变量、多维连续因变量、非负次数因变量、二元离散因变量、多元离散因变,除此之外,无论因变量是连续的还是离散的,lasso都能处理,总的来说,lasso对于数据的要求是极其低的,所以应用程度较广;除此之外,lasso还能够对变量进行筛选和对模型的复杂程度进行降低。这里的变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。 复杂度调整是指通过一系列参数控制模型的复杂度,从而避免过度拟合(Overfitting)。 对于线性模型来说,复杂度与模型的变量数有直接关系,变量数越多,模型复杂度就越高。 更多的变量在拟合时往往可以给出一个看似更好的模型,但是同时也面临过度拟合的危险。


lasso的复杂程度由λ来控制,λ越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。除此之外,另一个参数α来控制应对高相关性(highly correlated)数据时模型的性状。 LASSO回归α=1,Ridge回归α=0,这就对应了惩罚函数的形式和目的。我们可以通过尝试若干次不同值下的λ,来选取最优λ下的参数,还可以结合CV选择最优秀的模型。

##读取数据

setwd("~/Desktop")

library(glmnet)
train_origin<-read.table('trian.txt',header = T,fill = T)
test_origin<-read.table('test.txt',header = T,fill = T)
train_test1<-train_origin
train_test1<-train_test1[,-9]
train_test1$tag<-as.factor(train_test1$tag)
train_test1$risk_level<-as.factor(train_test1$risk_level)
x<-train_test1[,3:11]
y<-train_test1[,2]

## one hot encoding
x1<-model.matrix(~., x)

通常数据中会存在离散点,而lasso在R里面是通过数值矩阵来做输入的,所以需要对原数据做一步预处理,不然这边会抛错误;除此之外,如果数据之间差别的数量级较大,还需要进行标准化,R里面也是可以进行处理的,这边就不赘述了,glmnet()函数中添加参数standardize = TRUE来实现,scale()函数也可以实现,自行选择即可。

##模型训练

model = glmnet(x1, y, family="binomial", nlambda=50, alpha=1)

family里面是指选择函数的类型:

familyexplation
gaussianunivariate
mgaussianmultivariate
poissoncount
binomialbinary
multinomialcategory

lambda是指随机选择λ,做lambda个模型;alpha是上述讲到的α,选择惩罚函数,正常情况下,1是lasso,0是岭回归


这边模型拓展可以交叉检验一下,有内置的函数:

cvmodel = cv.glmnet(x1, y, family = "binomial", type.measure = "class",nfolds=10)

这边会多出来一个type.measure,这个type.measure是指期望最小化的目标参量是什么,换句话说,就是衡量这个模型的指标函数是啥

type.measuredetails
deviance-2倍的Log-likelihood
msemean squred error
maemean absolute error
classmissclassification error
auc area under the ROC curve
比较常用的是auc,这个就是现在比较主流的衡量一个模型好坏的roc所衍生出来的一个值;我们这边用的是class,也就是模型错误分配的概率,结合我这次业务开发的实际业务场景,这个更合适一点; nfolds是指folds数目,也可以通过foldid数来控制每个fold里面的数据数量。


对于glmnet,可以通过plot(model)来观察每个自变量的变化轨迹,cv.glmnet可以通过plot(cvmodel)

举个plot(cvmodel)的例子:


可以通过c(cvfit$lambda.min, cvfit$lambda.1se)来看在所有的λ值中,得到最小目标函数type.measure均值的cvfit$lambda.min,以及其所对应的λ值cvfit$lambda.1se。


我们可以print(model),在实际的选择模型中λ值的过程里,存在三个指标:df:自由度, %Dev:残差被解释的占比,也就是模型的好坏程度,Lambda也就是λ值所对应的值,然后我们可以通过coef(fit, s=c(fit$lambda[35],0.002))得出当时模型所对应的系数。


最后,讲一下elastic net

elastic net融合了l1范数和l2范数两种正则化的方法,上面的岭回归和lasso回归都可以看做它的特例:


elastic net对于p远大于n,或者严重的多重共线性情况有明显的效果,很好理解,当alpha接近1时,elastic net表现很接近lasso,一般来说,elastic net是岭回归和lasso的很好的折中,当alpha从0变化到1,目标函数的稀疏解(部分变量的系数为0)也从0单调增加到lasso的稀疏解。


之前看到有人这样总结变量选择,可以拿出来和大家分享一下:
1)子集选择 这是传统的方法,包括逐步回归和最优子集法等,对可能的部分子集拟合线性模型,利用判别准则 (如AIC,BIC,Cp,调整R2 等)决定最优的模型
2)收缩方法(shrinkage method) 收缩方法又称为正则化(regularization)。主要是岭回归(ridge regression)和lasso回归。通过对最小二乘估计加入罚约束,使某些系数的估计为0。( 岭回归:消除共线性 模的平方处理 Lasso回归:压缩变量,起降维作用 模处理
(3)维数缩减 主成分回归(PCR)和偏最小二乘回归(PLS)的方法。把p个预测变量投影到m维空间(m<p),利用投影得到的不相关的组合建立线性模型。


如果有任何算法、代码疑问都欢迎通过公众号发消息给我哦,已经给你们准备好资料大礼包了



http://chatgpt.dhexx.cn/article/trcmamee.shtml

相关文章

Lasso回归系列二:Lasso回归/岭回归的原理

Lasso回归/岭回归的原理 在学习L1&#xff0c;L2正则化的作用和区别时&#xff0c;我们总是会看到这样的一副图片&#xff1a; 这幅图片形象化地解释了L1&#xff0c;L2对线性模型产生的不同的约束效果。 我最开始其实是不太理解为什么要这么画的。比如 1、L1范数(L1-norm)等…

回归问题-Lasso回归

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集&#xff08;降阶&#xff09;为思想的压缩估计方法。它通过构造一个惩罚函数&#xff0c;可以将变量的系数进行压缩并使某些回归系数变为0&#xff0c;进而达到变量选择的目的。 正则化 正则化&am…

Lasso回归

维数灾难 高维数据 何谓高维数据&#xff1f;高维数据指数据的维度很高&#xff0c;甚至远大于样本量的个数。高维数据的明显的表现是&#xff1a;在空间中数据是非常稀疏的&#xff0c;与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维数…

1.1.3. Lasso(套索回归)

1.1.3. Lasso 一、简介 首先&#xff0c;Lasso同样是线性回归的一种变体。而文档中指出&#xff0c;它是一种能让参数 ω \omega ω稀疏的模型&#xff08;作用&#xff09;。它是压缩感知领域的基础&#xff08;地位&#xff09;&#xff0c;在特定情况下&#xff0c;它可以“…

【机器学习】Lasso模型

一、引言 1.1 高维数据 何谓高维数据&#xff1f;高维数据指数据的维度很高&#xff0c;甚至远大于样本量的个数。高维数据的明显的表现是&#xff1a;在空间中数据是非常稀疏的&#xff0c;与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维…

多元线性回归-Lasso

目录 1.Lasso与多重共线性 2. Lasso的核心作用&#xff1a;特征选择 3. 选取最佳的正则化参数取值 1.Lasso与多重共线性 Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator)&#xff0c;由于这个名称过于复杂所以简称为Lasso&#xff0c;和…

Lasso线性回归学习笔记(公式与代码实现)

目录 Lasso线性回归学习笔记&#xff08;公式与代码实现&#xff09;1 为什么要在线性回归中引入正则化项&#xff08;简介&#xff09;2 常见正则化项3 损失函数图像与正则化之后的图像3.1损失函数图像3.2 加了 L~1~ 正则项之后的损失函数图像 4 L~1~ 范数正则化的解中有更多零…

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

阅读本文需要的背景知识点&#xff1a;线性回归算法、一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱&#xff08;Serocs&#xff09;&#xff0c;感兴趣的读者欢迎试用与分享&#xff0c;感谢您的支持&#xff01;serocs.cn 一、…

学习机器学习和深度学习的方法和步骤

学习机器学习和深度学习的方法和步骤 相信很多人都在找学习机器学习和深度学习的步骤和教程。作为过来人和大家一起交流一下。 我自己制作的一个思维导图希望对大家有帮助。

机器学习算法介绍

前言 谷歌董事长施密特曾说过&#xff1a;虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注&#xff0c;但是这家公司真正的未来在于机器学习&#xff0c;一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期&#xff1a;从使用大型计算机&#xf…

机器学习之【提升方法】

机器学习【提升方法】 一、Adaboost的起源1.强可学习与弱可学习 二、怎样实现弱学习转为强学习1.怎样获得不同的弱分类器?BaggingBagging的弊端 2.怎样组合弱分类器? 三、Adaboost的提出四、Adaboost的基本概念五、Adaboost算法六、示例七、Boosting illustration 一、Adaboo…

(四)机器学习方法的分类

文章目录 一、监督学习二、非监督学习三、半监督学习四、增强学习五、机器学习的其他分类1. 批量学习&#xff08;Batch Learning&#xff09;2. 在线学习&#xff08;Online Learning&#xff09;3. 参数学习&#xff08;Parametric Learning&#xff09;4. 非参数学习 在上一…

【机器学习】之机器学习方法的分类

1&#xff0c;监督学习 给机器的训练数据拥有标记和答案 例如&#xff1a; 图像已经积累了标定信息银行已经积累了客户的信息和信用卡的信息 2&#xff0c;非监督学习 给机器的训练数据没有标记或答案 对没有标记的数据进行分类 – 聚类分析 对数据进行降维处理 特征提取…

机器学习常用方法

在本篇文章中&#xff0c;我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习&#xff0c;并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇&#xff0c;从这里开始&#xff0c;必须对机器学习了解才能进一步介绍EasyPR的内核。…

机器学习的几种学习方式

根据数据类型的不同&#xff0c;对一个问题的建模有不同的方式&#xff0c;人们首先会考虑算法的学习方式。将算法按照学习方式分类可以让人们在建模和算法选择时&#xff0c;根据输入数据来选择最合适的算法&#xff0c;从而获得最好的结果。 在机器学习领域&#xff0c;有以…

机器学习--机器学习的基本方法

文章目录 1.1统计分析1.1.1 统计基础1.1.2 常见的概率分布2.1.3参数估计1.1.4 假设与检验1.1.5线性回归1.1.6逻辑回归1.1.7判别分析1.1.8 非线性判决 1.1统计分析 统计学是研究如何收集资料&#xff0c;整理资料和进行量化分析&#xff0c;判断的一门学科。在科学计算&#xf…

机器学习的四种学习方法

文章目录 监督学习&#xff08;Supervised Learning&#xff09;无监督学习&#xff08;Unsupervised Learning&#xff09;半监督学习&#xff08;Semi-supervised Learning)强化学习&#xff08;Reinforcement Learning)应用 监督学习&#xff08;Supervised Learning&#x…

机器学习方法的基本分类

目录 1、监督学习&#xff08;supervised learning&#xff09; 2、无监督学习&#xff08;unsupervised learning&#xff09; 3、强化学习&#xff08;reinforcement learning&#xff09; 4、半监督学习&#xff08;semi-supervised learning&#xff09;与主动学习&…

机器学习的常用方法

转自 史上最强----机器学习经典总结---入门必读----心血总结-----回味无穷 在这个部分我会简要介绍一下机器学习中的经典代表方法。这部分介绍的重点是这些方法内涵的思想&#xff0c;数学与实践细节不会在这讨论。 1、回归算法 在大部分机器学习课程中&#xff0c;回归算法都…

机器学习的三种方法

目录 介绍 鸢尾花(Iris)数据集 梯度下降 逻辑回归 使用逻辑回归处理鸢尾花(Iris)数据集 反向传播 使用反向传播处理鸢尾花(Iris)数据集 支持向量机 用支持向量机处理鸢尾花(Iris)数据集 结论 下载Iris_Data-3.7 KB下载LogiticRegression_Iris-309.7 KB下载LogiticReg…