精华内容
下载资源
问答
  • LASSO算法

    千次阅读 2018-09-09 14:05:30
    1.lasso算法说明 在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能多的自变量。然而,建模过程需要寻找对因变量最具有强解释力的自变量集合,也就是通过自变量选择(指标选择、...

    1.lasso族算法说明

    在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能多的自变量。然而,建模过程需要寻找对因变量最具有强解释力的自变量集合,也就是通过自变量选择(指标选择、字段选择)来提高模型的解释性和预测精度。指标选择在统计建模过程中是极其重要的问题。Lasso算法则是一种能够实现指标集合精简的估计方法。
    Lasso(Least absolute shrinkage and selection operator, Tibshirani(1996))方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。
    Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型。R的Lars 算法的软件包提供了Lasso编程,我们根据模型改进的需要,可以给出Lasso算法,并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。
    lasso estimate具有shrinkage和selection两种功能,shrinkage这个不用多讲,本科期间学过回归分析的同学应该都知道岭估计会有shrinkage的功效,lasso也同样。关于selection功能,Tibshirani提出,当t值小到一定程度的时候,lasso estimate会使得某些回归系数的估值是0,这确实是起到了变量选择的作用。当t不断增大时,选入回归模型的变量会逐渐增多,当t增大到某个值时,所有变量都入选了回归模型,这个时候得到的回归模型的系数是通常意义下的最小二乘估计。从这个角度上来看,lasso也可以看做是一种逐步回归的过程。
    模型选择本质上是寻求模型稀疏表达的过程,而这种过程可以通过优化一个“损失”十“惩罚”的函数问题来完成。
    2.与普通最小二乘法的区别
    使用最小二乘法拟合的普通线性回归是数据建模的基本方法。其建模要点在于误差项一般要求独立同分布(常假定为正态)零均值。t检验用来检验拟合的模型系数的显著性,F检验用来检验模型的显著性(方差分析)。如果正态性不成立,t检验和F检验就没有意义。
    对较复杂的数据建模(比如文本分类,图像去噪或者基因组研究)的时候,普通线性回归会有一些问题:

    (1)预测精度的问题 如果响应变量和预测变量之间有比较明显的线性关系,最小二乘回归会有很小的偏倚,特别是如果观测数量n远大于预测变量p时,最小二乘回归也会有较小的方差。但是如果n和p比较接近,则容易产生过拟合;如果n

    (2)模型解释能力的问题 包括在一个多元线性回归模型里的很多变量可能是和响应变量无关的;也有可能产生多重共线性的现象:即多个预测变量之间明显相关。这些情况都会增加模型的复杂程度,削弱模型的解释能力。这时候需要进行变量选择(特征选择)。

    针对OLS的问题,在变量选择方面有三种扩展的方法: (1)子集选择 这是传统的方法,包括逐步回归和最优子集法等,对可能的部分子集拟合线性模型,利用判别准则 (如AIC,BIC,Cp,调整R2 等)决定最优的模型。 (2)收缩方法(shrinkage method) 收缩方法又称为正则化(regularization)。主要是岭回归(ridge regression)和lasso回归。通过对最小二乘估计加入罚约束,使某些系数的估计为0。 (3)维数缩减 主成分回归(PCR)和偏最小二乘回归(PLS)的方法。把p个预测变量投影到m维空间(m

    3、岭回归、lasso回归和elastic net三种正则化方法[]

    (1)岭回归[]

    最小二乘估计是最小化残差平方和(RSS):

    岭回归在最小化RSS的计算里加入了一个收缩惩罚项(正则化的l2范数)

    这个惩罚项中lambda大于等于0,是个调整参数。各个待估系数越小则惩罚项越小,因此惩罚项的加入有利于缩减待估参数接近于0。重点在于lambda的确定,可以使用交叉验证或者Cp准则。

    岭回归优于最小二乘回归的原因在于方差-偏倚选择。随着lambda的增大,模型方差减小而偏倚(轻微的)增加。

    岭回归的一个缺点:在建模时,同时引入p个预测变量,罚约束项可以收缩这些预测变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大)。这个缺点对于模型精度影响不大,但给模型的解释造成了困难。这个缺点可以由lasso来克服。(所以岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

    (2)lasso

    lasso是在RSS最小化的计算中加入一个l1范数作为罚约束:

    l1范数的好处是当lambda充分大时可以把某些待估系数精确地收缩到0。

    关于岭回归和lasso,在[3]里有一张图可以直观的比较([3]的第三章是个关于本文主题特别好的参考):[]

    关于岭回归和lasso当然也可以把它们看做一个以RSS为目标函数,以惩罚项为约束的优化问题。

    (3)调整参数lambda的确定

    交叉验证法。对lambda的格点值,进行交叉验证,选取交叉验证误差最小的lambda值。最后,按照得到的lambda值,用全部数据重新拟合模型即可。

    (4)elastic net

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

    elastic net对于p远大于n,或者严重的多重共线性情况有明显的效果。 对于elastic net,当alpha接近1时,elastic net表现很接近lasso,但去掉了由极端相关引起的退化化或者奇怪的表现。一般来说,elastic net是岭回归和lasso的很好的折中,当alpha从0变化到1,目标函数的稀疏解(系数为0的情况)也从0单调增加到lasso的稀疏解。

    LASSO的进一步扩展是和岭回归相结合,形成Elastic Net方法。[]

    (5)岭回归与lasso算法[]

    这两种方法的共同点在于,将解释变量的系数加入到Cost Function中,并对其进行最小化,本质上是对过多的参数实施了惩罚。而两种方法的区别在于惩罚函数不同。但这种微小的区别却使LASSO有很多优良的特质(可以同时选择和缩减参数)。下面的公式就是在线性模型中两种方法所对应的目标函数:

    公式中的lambda是重要的设置参数,它控制了惩罚的严厉程度,如果设置得过大,那么最后的模型参数均将趋于0,形成拟合不足。如果设置得过小,又会形成拟合过度。所以lambda的取值一般需要通过交叉检验来确定。

    岭回归的一个缺点:在建模时,同时引入p个预测变量,罚约束项可以收缩这些预测变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大)。这个缺点对于模型精度影响不大,但给模型的解释造成了困难。这个缺点可以由lasso来克服。(所以岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

    4、LARS算法对lasso的贡献[]

    LAR把Lasso (L1-norm regularization)和Boosting真正的联系起来,如同打通了任督二脉。LAR结束了一个晦涩的时代:在LAR之前,有关Sparsity的模型几乎都是一个黑箱,它们的数学性质(更不要谈古典的几何性质了)几乎都是缺失。

    近年来兴起的Compressed sensing(Candes & Tao, Donoho)也与LAR一脉相承,只是更加强调L1-norm regularization其他方面的数学性质,比如Exact Recovery。我觉得这是一个问题的多个方面,Lasso关注的是构建模型的准确性,Compressed sensing关注的是变量选择的准确性。

    5、变量选择

    当我们使用数据训练分类器的时候,很重要的一点就是要在过度拟合与拟合不足之间达成一个平衡。防止过度拟合的一种方法就是对模型的复杂度进行约束。模型中用到解释变量的个数是模型复杂度的一种体现。控制解释变量个数有很多方法,例如变量选择(feature selection),即用filter或wrapper方法提取解释变量的最佳子集。或是进行变量构造(feature construction),即将原始变量进行某种映射或转换,如主成分方法和因子分析。变量选择的方法是比较“硬”的方法,变量要么进入模型,要么不进入模型,只有0-1两种选择。但也有“软”的方法,也就是Regularization类方法,例如岭回归(Ridge Regression)和套索方法(LASSO:least absolute shrinkage and selection operator)。

    6、展望

    将Lasso应用于时间序列。将Lasso思想应用于AR§、ARMA§等模型,利用Lasso方法对AR§、ARMA§等模型中的变量选择,并给出具体的算法。

    将Lasso方法应用到高维图形的判别与选择以及应用于线性模型的变量选择中,以提高模型选择的准确性。

    展开全文
  • lasso算法matlab代码

    2015-12-24 11:02:01
    用于高维数据降维lasso算法 matlab代码实现 功能丰富
  • 凸优化LASSO算法

    2015-10-12 16:34:04
    在压缩感知的稀疏重构算法中,凸优化是一类非常重要的重构算法。LASSO算法是L1范数重构的算法
  • sklearn之LASSO算法应用

    2020-04-30 17:01:15
    sklearn之LASSO算法应用 前言: 本文介绍LASSO算法理论以及sklearn中Lasso算法如何调用和使用 一、LASSO算法和岭回归算法对比 •Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and Selectionator ...

    sklearn之LASSO算法应用

    前言: 本文介绍LASSO算法理论以及sklearn中Lasso算法如何调用和使用

    一、LASSO算法和岭回归算法对比
    •Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and
    Selectionator operator)算法。
    • 通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些
    指标(变量)的系数为零(岭回归估计系数等于0的机会微乎其微,
    造成筛选变量困难),解释力很强。
    • 擅长处理具有多重共线性的数据,与岭回归一样是有偏估

    在这里插入图片描述
    LASSO算法的代价函数和岭回归的代价函数都是为了防止过拟合,但是,岭回归算法很难使得模型参数为0,而LASSO算法可以使得模型中的很多参数(对于本数据模型训练影响不大)为0,进而使得模型的特征要素减少

    二、sklearn中应有LASSO算法示例代码

    import numpy as np
    from numpy import genfromtxt
    from sklearn import linear_model
    
    # 读取数据
    data = genfromtxt(r'longley.csv', delimiter=',')
    
    # 切分数据
    x_data = data[1:, 2:]
    y_data = data[1:, 1, np.newaxis]
    
    # 训练模型
    model = linear_model.LassoCV()
    model.fit(x_data, y_data)
    
    # 训练后选择的lasso系数
    print(model.alpha_)
    # 训练后线性模型参数
    print(model.coef_)
    
    # 预测值
    print(model.predict(x_data[-2, np.newaxis]))
    print(y_data[-2])  # 真实值
    
    

    三、代码执行结果

    20.03464209711722
    [0.10206856 0.00409161 0.00354815 0.         0.         0.        ]
    [115.6461414]
    [115.7]
    

    由上面结果可知,LASSO算法会自动得到一个合适的λ值,并且其训练出的模型中有很多参数为0 ,可以认为参数为0的特征是不重要的特征,可以舍弃,进而简化模型。

    四、数据下载
    链接:https://pan.baidu.com/s/14xi9nAW4DyY3mWFp_GTb0w
    提取码:3kf3

    展开全文
  • AdaptiveLasso算法

    千次阅读 2018-10-30 15:00:14
    #使用LassoCV计算每个特征前面的系数 import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler data = pd.read_csv('data2.csv') ...#导入AdaptiveLasso算法,要在较新的Scikit-L...
    #使用LassoCV计算每个特征前面的系数
    import pandas as pd
    import numpy as np
    from sklearn.preprocessing import StandardScaler
    data = pd.read_csv('data2.csv') #读取数据
    print(data.info())
    #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。
    from sklearn.linear_model import LassoCV
    model = LassoCV()
    x=data.iloc[:,0:7]
    y=data.iloc[:,7]
    model.fit(x,y)
    resurt=model.coef_ #各个特征的系数
    print(resurt)
    
    展开全文
  • Lasso算法实现.zip

    2020-03-28 13:38:25
    % 代码:验证Lasso算法有效性---------------------------- 00个样本, 100维变量, lambda=50, w迭代初试值zeros(1,100) % 真实模型: Y = X1 + X2 + ... + X10 % 第1步:生成数据, X-1000*100, Y-1000*1, W-100...
  • LASSO算法的简单介绍 LASSO算法和岭回归算法在应用目的上其实都是相似的,这两种算法的本质就是两种不同的正则化方法。 下面来看看这两种方法的对比: 岭回归是L1正则化,LASSO是L2正则化。两个回归系数的值都可以...

    LASSO算法的简单介绍

    LASSO算法和岭回归算法在应用目的上其实都是相似的,这两种算法的本质就是两种不同的正则化方法
    下面来看看这两种方法的对比:
    在这里插入图片描述
    在这里插入图片描述
    岭回归是L1正则化,LASSO是L2正则化。两个回归系数的值都可以用来限制t,取值有相同的地方。这是一张表示系数和代价函数值关系的图:
    在这里插入图片描述
    红色的圈圈表示的是代价函数值等高线,中间的黑点表示最小值。蓝色区域是系数的选取范围,可以看到,当选取范围和等高线交界的地方是最合适的取值点,这时即符合选取范围,代价函数的值也越接近中心的最小值。

    python实现——sklearnLASSO算法

    来看看实验用到的数据:
    在这里插入图片描述
    在这里插入图片描述
    代码实现:
    在这里插入图片描述
    lasson算法的模型也是用到交叉验证法,但和岭回归相比,不用传入参数,因为这个方法本身就有很多参数,直接用它内部的参数计算即可。
    在这里插入图片描述
    然后打印结果看看效果如何:
    在这里插入图片描述
    在这里插入图片描述
    14.13是求得的lasson系数,第二行是相关系数,可以理解为特征,后面的3个0表示这3个特征量可能是线性重复,对lasson的计算没有太大帮助和影响,而前面3个特征则是有影响的。从这里我们看到lasson的解释性是很强的,最后得到的预测结果115.7和真实结果一样。

    弹性网

    岭回归和lasson用的其实都是一个算法公式,不同的参数取值会得到岭回归和lasson或者其他一些算法。
    在这里插入图片描述
    当q是1时就是lasson,q是2时就是岭回归,其他类型的一般很少用,效果不如这两种好。弹性网则结合了lasson和岭回归两种算法,吸取了两种算法的特点,这是一种相对来说比较新的算法。
    在这里插入图片描述
    当α取0.2时得到类似lasson的图形,但是边是弯曲的,所以被称为弹性网,这时岭回归前面的系数是0.2,lasson前面的系数是0.8,说明lasson的比重比较大,这就是和 lasson的图形类似的原因。

    python实现——弹性网

    数据和上面的lasson用到的数据是一样的,代码开始部分都一样。
    在这里插入图片描述
    在这里插入图片描述
    这里和lasson一样也是不用传入参数的,只不过调用的方法不同。结果也和lasson一样可以得到相关系数和本身的弹性系数。
    在这里插入图片描述
    在这里插入图片描述
    可以看到结果形式和lasson差不多,理论上说,因为弹性网结合了岭回归和lasson的特点,所以得到的预测值应该比这两种算法都要好。

    展开全文
  • Logistic模型自适应组Lasso算法崔琨鹏赵强【摘要】摘要本文将自适应Lasso与组Lasso进行结合得到了自适应组Lasso,给出了拥有自适应组Lasso惩罚项的logistic模型的相关概念及其符号表示;运用坐标梯度下降算法给出了...
  • 机器学习算法笔记——P22 sklearn—LASSO算法 #!/usr/bin/env python # coding: utf-8 # In[1]: import numpy as np from numpy import genfromtxt from sklearn import linear_model # In[2]: #读入数据 ...
  • graphical lasso算法

    2015-09-22 16:43:58
    讲述了 基于高斯图模型下 对逆稀疏协方差矩阵的估计算法
  • 算法名称:LASSO的全称Least Absolute Shrinkage and Selection Operator,即最小绝对收缩选择算子。算法的适用场景: Lasso回归是有监督机器学习的一种常见的回归方法。算法的基本逻辑:一般来说,有监督的机器学习...
  • 根据数据的稀疏性进行正则化模型的方法叫做LASSO算法(least absolute shrinkage and selection operator) 1. 准备数据 2.导入LASSO模型 3. 喂入数据 我们发现,现在有9个非零参数 4. 将参数置...
  • lasso算法学习

    万次阅读 2017-04-19 10:59:40
    1.lasso算法说明 在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能多的自变量。然而,建模过程需要寻找对因变量最具有强解释力的自变量集合,也就是通过自变量选择(指标选择、...
  • ML之回归预测之Lasso:利用Lasso算法对红酒品质wine数据集实现红酒口感评分预测(实数值评分预测) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 t=3 if t==1: X = numpy...
  • ML之回归预测之Lasso:利用Lasso算法解决回归(实数值评分预测)问题—采用10折交叉验证(测试集error)来评估LassoCV模型 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 ...
  •   为什么Lasso算法可以用于特征选择呢?因为Lasso算法可以使特征的系数进行压缩并且可以使某些回归系数为0,即不选用该特征,因此可以进行特征选择。而与它同为线性回归正则化方法的Ridge回归只能使某些回归系数...
  • Lasso:基于datasets糖尿病数据集利用LiR和Lasso算法进行(9→1)回归预测(三维图散点图可视化) 目录 基于datasets糖尿病数据集利用LiR和Lasso算法进行(9→1)回归预测(三维图散点图可视化) 设计思路 输出...
  • 【机器学习】LASSO算法&弹性网络

    千次阅读 2019-03-20 23:00:21
    1.在上一次我们说了Rigde回归。在那之间我们说了对于代价函数有两种正则化的方式:L1正则化和L2正则化。...上边的函数就是Lasso算法的代价函数,也是L1正则化之后的代价函数。在这种方法下,对于代价函数最小...
  • 上一节我们详细的介绍了岭回归算法和lasso算法的来历和使用,不过还没有详解lasso的计算方式,本节将进行全面的详解,在详解之前,希望大家都理解了岭回归和lasso 的来历,他们的区别以及使用的范围。下面将开始详解...
  • Lasso算法  Lasso算法(least absolute shrinkage and selection operator,又译最小绝对值收敛和选择算子、套索算法)是一种同时进行特征选择和正则化(数学)的回归分析方法,旨在增强统计模型的预测准确性和可...
  • Lasso算法理论介绍

    万次阅读 多人点赞 2016-11-14 21:40:11
    先看一波过拟合: 图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。...如果有任何算法、代码疑问都欢迎通过公众号发消息给我哦 ,已经给你们准备好资料大礼包了 。
  • ML之回归预测之Lasso:利用Lasso算法解决回归(实数值评分预测)问题—优化模型【增加新(组合)属性】 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 names[-1] = "a^2" ...
  • Abstract l-NORM CONSTRAINT; LASSO; V ARIABLE SELECTION; SUBSET SELECTION; Key words: 1 BAYSIAN LOGISTIC REGRESSION LASSO is an innovative variable selection method for regression. Variable selection i
  • LASSO方法的总结与思考 统计学习中如果一味提高对训练数据的拟合能力模型复杂度也会相应提高这种情况下训练出的方程总是能很好的拟合训练数据得到的代价函数可能非常接近于0但这样的曲线千方百计的去拟合训练数据...
  • Lasso算法简介

    千次阅读 2015-10-21 12:14:56
    使用数理统计模型从海量数据中有效挖掘信息越来越受到业界关注。在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能...Lasso算法则是一种能够实现指标集合精简的估计方法。   Tibshi
  • Lasso算法参考

    2015-10-22 16:29:40
    1、http://wenku.baidu.com/view/b73e37a2284ac850ad0242f9.html 2、http://www.doc88.com/p-3856737957808.html
  • lasso算法及其实现

    千次阅读 2017-11-02 17:55:18
    这个包采用的算法是循环坐标下降法(cyclical coordinate descent),能够处理的模型包括 linear regression,logistic and multinomial regression models, poisson regression 和 the Cox model,用到的正则化方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 760
精华内容 304
关键字:

lasso算法