精华内容
下载资源
问答
  • Lasso方法与其他特征选择一样,对高维海量或高维小样本数据集的特征选择容易出现计算开销过大或过学习问题(过拟合)。为解决此问题,提出一种改进的Lasso方法:迭代式Lasso方法。迭代式Lasso方法首先将特征集分成K份,对...
  • Lasso是一种基于一范式的特征选择方法。与已有的特征选择方法相比较,Lasso不仅能够准确地选择出与类标签强相关的变量,同时还具有特征选择的稳定性,因而成为人们研究的一个热点。但是,Lasso方法与其他特征选择方法...
  • Lasso方法与其他特征选择一样,对高维海量或高维小样本数据集的特征选择容易出现计算开销过大或过学习问题(过拟合)。为解决此问题,提出一种改进的Lasso方法:迭代式Lasso方法。迭代式Lasso方法首先将特征集分成K...
  • pyHSICLasso是希尔伯特·施密特(Hilbert Schmidt)独立标准套索(HSIC Lasso)的软件包,这是一种考虑了非线性输入和输出关系的黑匣子(非线性)特征选择方法。 HSIC Lasso可以看作是广泛使用的最小冗余最大相关性...
  • 数据预处理与特征工程—9.Lasso算法实现特征选择

    千次阅读 多人点赞 2021-04-03 16:56:28
      为什么Lasso算法可以用于特征选择呢?因为Lasso算法可以使特征的系数进行压缩并且可以使某些回归系数为0,即不选用该特征,因此可以进行特征选择。而与它同为线性回归正则化方法的Ridge回归只能使某些回归系数...

    文章目录

    引言

      为什么Lasso算法可以用于特征选择呢?因为Lasso算法可以使特征的系数进行压缩并且可以使某些回归系数为0,即不选用该特征,因此可以进行特征选择。而与它同为线性回归正则化方法的Ridge回归只能使某些回归系数接近于0,起不到特征选择的作用。
      Lasso回归方法的优点是可以弥补最小二乘法和逐步回归局部最优估计的不足,可以很好的进行特征选择,可以有效的解决各特征之间存在的多重共线性问题。缺点是如果存在一组高度相关的特征时,Lasso回归倾向于选择其中一个特征,而忽视其他所有特征,这种情况会导致结果的不稳定性。

    实战

    data.csv数据,提取码:1234

    import pandas as pd
    import numpy as np
    from sklearn.linear_model import Lasso
    
    data = pd.read_csv('data/data.csv', header=0)
    x, y = data.iloc[:, :-1], data.iloc[:, -1]
    
    # 取alpha=1000进行特征提取
    lasso = Lasso(alpha=1000, random_state=1)  
    lasso.fit(x, y)
    # 相关系数
    print('相关系数为', np.round(lasso.coef_, 5))
    coef = pd.DataFrame(lasso.coef_, index=x.columns)
    print('相关系数数组为\n', coef)
    # 返回相关系数是否为0的布尔数组
    mask = lasso.coef_ != 0.0
    # 对特征进行选择
    x = x.loc[:, mask]
    new_reg_data = pd.concat([x, y], axis=1)
    new_reg_data.to_csv('new_reg_data.csv')
    

    相关系数数组为
    x1 -0.000176
    x2 -0.000000
    x3 0.124143
    x4 -0.010312
    x5 0.065400
    x6 0.000115
    x7 0.317411
    x8 0.034900
    x9 -0.000000
    x10 0.000000
    x11 0.000000
    x12 0.000000
    x13 -0.040299

    参考于《python数据分析与挖掘实战》


    如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!
    在这里插入图片描述


    展开全文
  • 特征选择MATLAB

    2018-07-20 11:19:23
    特征选择MATLAB,用于对高维特征进行降唯,深度学习也可用
  • sklearn机器学习:特征选择-Lasso

    千次阅读 2019-10-11 10:42:27
    Lasso的核心作用:特征选择 Lasso类的格式 sklearn.linear_model.Lasso (alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive...

    Lasso的核心作用:特征选择

    Lasso类的格式

    sklearn.linear_model.Lasso (alpha=1.0, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’)
    sklearn中使用类Lasso来调用lasso回归,众多参数中,比较重要的就是正则化系数α。另外需要注意的就是参数positive。当这个参数为"True"的时候,要求Lasso回归出的系数必须为正数,以此来保证α一定以增大来控制正则化的程度。
    注意,sklearn中使用的损失函数是:
    m i n ω 1 2 m ∣ ∣ X ω − y ∣ ∣ 2   2 + α ∣ ∣ ω ∣ ∣ 1 \large\boldsymbol{\mathop{min}\limits_\omega\frac1{2m}||X\omega-y||_2\,^2+\alpha||\omega||_1} ωmin2m1Xωy22+αω1
    其中 1 2 m \Large\frac1{2m} 2m1(即: 1 n s a m p l e s \Large\frac1{n_{samples}} nsamples1)只是作为系数存在,用来消除损失函数求导后多出来的那个2的(求解ω时所带的1/2),然后对整体的RSS求平均而已,无论时从损失函数的意义来看还是从Lasso的性质和功能来看,这个变化没有造成任何影响,只不过让计算更加简便。
    接下来,看看lasso如何做特征选择:

    #Lasso做特征选择与线性回归和岭回归的比较
    import numpy as np
    import pandas as pd
    from sklearn.linear_model import Ridge, LinearRegression, Lasso
    from sklearn.model_selection import train_test_split as TTS
    from sklearn.datasets import fetch_california_housing as fch
    import matplotlib.pyplot as plt
    housevalue = fch()
    X = pd.DataFrame(housevalue.data)
    y = housevalue.target
    X.columns = ["住户收⼊入中位数","房屋使⽤用年年代中位数","平均房间数⽬目"
    ,"平均卧室数⽬目","街区⼈人⼝口","平均⼊入住率","街区的纬度","街区的经度"]
    X.head()
    Xtrain,Xtest,Ytrain,Ytest = TTS(X,y,test_size=0.3,random_state=420)
    #恢复索引
    for i in [Xtrain,Xtest]:
        i.index = range(i.shape[0])
    #线性回归进行拟合
    reg = LinearRegression().fit(Xtrain,Ytrain)
    (reg.coef_*100).tolist()
    
    [43.73589305968403,
     1.0211268294494038,
     -10.780721617317715,
     62.64338275363783,
     5.216125353178735e-05,
     -0.33485096463336095,
     -41.30959378947711,
     -42.621095362084674]
    
    #岭回归进⾏拟合
    Ridge_ = Ridge(alpha=0).fit(Xtrain,Ytrain)
    (Ridge_.coef_*100).tolist()
    
    [43.735893059684045,
     1.0211268294494151,
     -10.780721617317626,
     62.64338275363741,
     5.2161253532713044e-05,
     -0.3348509646333588,
     -41.3095937894767,
     -42.62109536208427]
    
    #Lasso进行拟合
    lasso_ = Lasso(alpha=0).fit(Xtrain,Ytrain)
    (lasso_.coef_*100).tolist()
    
    [43.735893059684024,
     1.0211268294494056,
     -10.78072161731769,
     62.64338275363792,
     5.2161253532654165e-05,
     -0.33485096463335706,
     -41.3095937894772,
     -42.62109536208478]
    

    可以看到,岭回归没有报出错误,但Lasso虽然依然对系数进行了计算,但是报出了整整三个红条:
    在这里插入图片描述
    这三条分别是这样的内容:

    1. 正则化系数为0,这样算法不可收敛!如果你想让正则化系数为0,请使用线性回归
    2. 没有正则项的坐标下降法可能会导致意外的结果,不鼓励这样做!
    3. 目标函数没有收敛,你也许想要增加迭代次数,使用一个非常小的alpha来拟合模型可能会造成精确度问题!

    看到这三条内容,大家可能会比较懵——怎么出现了坐标下降?这是由于sklearn中的Lasso类不是使用最小二乘法来进行求解,而是使用坐标下降。考虑一下,Lasso既然不能够从根本解决多重共线性引起的最小二乘法无法使用的问题,那为什么要坚持最小二乘法呢?明明有其他更快更好的求解方法,比如坐标下降。下面两篇论文解释了了scikit-learn坐标下降求解器中使用的迭代方式,以及用于收敛控制的对偶间隙计算方式,感兴趣的可以阅读。
    使用坐标下降法求解Lasso:
    “Regularization Path For Generalized linear Models by Coordinate Descent”, Friedman, Hastie & Tibshirani, J Stat Softw, 2010 (Paper).
    https://www.jstatsoft.org/article/view/v033i01/v33i01.pdf
    “An Interior-Point Method for Large-Scale L1-Regularized Least Squares,” S. J. Kim, K. Koh, M. Lustig, S. Boyd and D. Gorinevsky, in IEEE Journal of Selected Topics in Signal Processing, 2007 (Paper)
    https://web.stanford.edu/~boyd/papers/pdf/l1_ls.pdf
    有了坐标下降,就有迭代和收敛的问题,因此sklearn不推荐我们使用0这样的正则化系数。如果我们的确希望取到0,可以使用一个比较很小的数,比如0.01,或者10*e-3这样的值:

    #岭回归进行拟合
    Ridge_ = Ridge(alpha=0.01).fit(Xtrain,Ytrain)
    (Ridge_.coef_*100).tolist()
    
    [43.73575720621605,
     1.0211292318121836,
     -10.780460336251702,
     62.64202320775686,
     5.217068073243689e-05,
     -0.3348506517067627,
     -41.3095714322911,
     -42.62105388932374]
    
    #Lasso进行拟合
    lasso_ = Lasso(alpha=0.01).fit(Xtrain,Ytrain)
    (lasso_.coef_*100).tolist()
    
    [40.10568371834486,
     1.0936292607860143,
     -3.7423763610244487,
     26.524037834897207,
     0.0003525368511503945,
     -0.3207129394887799,
     -40.06483047344844,
     -40.81754399163315]
    

    这样就不会报错了。

    #加⼤正则项系数,观察模型的系数发⽣了什么变化
    Ridge_ = Ridge(alpha=10**4).fit(Xtrain,Ytrain)
    (Ridge_.coef_*100).tolist()
    
    [34.620815176076945,
     1.5196170869238694,
     0.3968610529210133,
     0.9151812510354866,
     0.002173923801224843,
     -0.34768660148101016,
     -14.736963474215257,
     -13.43557610252691]
    
    lasso_ = Lasso(alpha=10**4).fit(Xtrain,Ytrain)
    (lasso_.coef_*100).tolist()
    
    [0.0, 0.0, 0.0, -0.0, -0.0, -0.0, -0.0, -0.0]
    
    #看来10**4对于Lasso取值过大
    lasso_ = Lasso(alpha=1).fit(Xtrain,Ytrain)
    (lasso_.coef_*100).tolist()
    
    [14.581141247629423,
     0.6209347344423876,
     0.0,
     -0.0,
     -0.00028065986329009983,
     -0.0,
     -0.0,
     -0.0]
    
    #将系数进⾏绘图
    plt.plot(range(1,9),(reg.coef_*100).tolist(),color="red",label="LR")
    plt.plot(range(1,9),(Ridge_.coef_*100).tolist(),color="orange",label="Ridge")
    plt.plot(range(1,9),(lasso_.coef_*100).tolist(),color="k",label="Lasso")
    plt.plot(range(1,9),[0]*8,color="grey",linestyle="--")
    plt.xlabel('w') #横坐标是每⼀个特征所对应的系数
    plt.legend()
    plt.show()
    

    在这里插入图片描述
    可见,比起岭回归,Lasso所带的L1正则项对于系数的惩罚要重得多,并且它会将系数压缩至0,因此可以被用来做特征选择。也因此,往往让Lasso的正则化系数在很小的空间中变动,以此来寻找最佳的正则化系数。
    到这里,岭回归和Lasso的核心作用讲解完毕。
    Lasso作为线性回归家族中在改良上走得最远的算法,还有许多领域待探讨。比如,现实中,不仅可以适用交叉验证来选择最佳正则化系数,也可以使用BIC( 贝叶斯信息准则)或者AIC(Akaike information criterion,艾凯克信息准则)来做模型选择。同时,可以不使用坐标下降法,而使用最小角度回归来对lasso进行计算。

    注:
    AIC和BIC主要用于模型的选择,AIC、BIC越小越好。
    对不同模型进行比较时,AIC、BIC降低越多,说明该模型的拟合效果越好
    AIC=2(模型参数的个数)-2ln(模型的极大似然函数)
    BIC = ln(n)(模型中参数的个数) - 2ln(模型的极大似然函数值)
    或表示为:
    AIC=-2 ln(L) + 2 k 准则akaike information criterion
    BIC=-2 ln(L) + ln(n)*k 准则bayesian information criterion
    HQ=-2 ln(L) + ln(ln(n))*k 准则hannan-quinn criterion
    其中L是在该模型下的最大似然,n是数据数量,k是模型的变量个数。

    展开全文
  • LASSO回归之特征选择

    千次阅读 2020-05-07 20:28:28
    MAP 是在MLE的条件下考察 θ\thetaθ的先验分布 from Guassian Prior to L2 Regularization from Laplace Prior to L1 Regularization LASSO回归VS特征选择 ·如果维度太高,计算量也变得很高 ·在稀疏性条件下,...

    MLE --framework – MAP

    M L E : a r g m a x P ( D ∣ θ ) MLE:argmax P(D|\theta) MLE:argmaxP(Dθ)
    M A P : a r g m a x P ( θ ∣ D ) MAP:argmaxP(\theta|D) MAP:argmaxP(θD) = a r g m a x P ( D ∣ θ ) P ( θ ) argmax P(D|\theta)P(\theta) argmaxP(Dθ)P(θ)
    MAP 是在MLE的条件下考察 θ \theta θ的先验分布
    from Guassian Prior to L2 Regularization
    from Laplace Prior to L1 Regularization
    在这里插入图片描述

    LASSO回归VS特征选择

    ·如果维度太高,计算量也变得很高
    ·在稀疏性条件下,计算量只依赖于非0项的个数
    ·提高可解释性
    N < D N<D N<D其中 N N N代表样本个数 D D D代表特征维度
    特征选择的方法:
    option1: Exhaustive Serah: all subsets
    option2: Greedy Approaches:
    ·Forward Stepwise
    ·Backward Stepwise
    option3: via Regularization

    LASSO介绍

    以线性回归的目标函数举例: L = ∥ X ω − Y ∥ F 2 + λ ∥ ω ∥ 1 L = \lVert X\omega - Y\rVert_F^2+\lambda\rVert\omega\rVert_1 L=XωYF2+λω1
    ∥ ω ∥ 1 \lVert\omega\rVert_1 ω1 ω \omega ω的梯度是多少:
    ∂ ∥ ω ∥ 1 ω j = ∂ ∣ ω j ∣ ω j \frac{\partial{\rVert\omega\rVert}_1}{\omega_j}=\frac{\partial{\vert\omega_j\vert}}{\omega_j} ωjω1=ωjωj
    根据 ω j \omega_j ωj的取值分别有三种可能性。

    Coordinate Descent

    Goal: minimize some function g
    g ( ω ) = g ( ω 1 , ω 2 , . . . , ω n ) g(\omega)=g(\omega_1,\omega_2,...,\omega_n) g(ω)=g(ω1,ω2,...,ωn)
    每次只在一个维度上求解最小值,把其他维度看做常量求解,怎样选择下一个coordinate:1.依次选择 2.随机选择
    不需要设定step-size,对于lasso objective,会收敛

    coordinate descent for lasso

    L = ∑ i = 1 n ( ∑ j = 1 d ω j x i j + b − y i ) 2 + λ ∑ j = 1 d ∣ ω j ∣ L=\sum_{i=1}^n(\sum_{j=1}^d\omega_jx_{ij}+b-y_i)^2+\lambda\sum_{j=1}^d\vert\omega_j\vert L=i=1n(j=1dωjxij+byi)2+λj=1dωj
    ∂ L ω l = 2 ∑ i = 1 n ( ∑ j = 1 d ω j x i j + b − y i ) ∗ x i l + λ ∗ ∂ ∑ j = 1 d ∣ ω j ∣ ω l \frac{\partial L}{\omega_l}=2\sum_{i=1}^n(\sum_{j=1}^d\omega_jx_{ij}+b-y_i)*x_{il}+ \lambda*\frac{\partial\sum_{j=1}^d\vert\omega_j\vert}{\omega_l} ωlL=2i=1n(j=1dωjxij+byi)xil+λωlj=1dωj
    在这里插入图片描述
    LASSO回归之所以产生稀疏解的原因,在于 C l C_l Cl落在 [ − λ , + λ ] [-\lambda,+\lambda] [λ,+λ]之间时就会强行令 ω l \omega_l ωl为0。

    展开全文
  • Ridge(右)和Lasso(左图)分别可以视作在限制参数的$l_2$和$l_1$范数不超过$t$的前提下,最小化残差平方和,其中$t$是自己设置的一个约束变量。残差平方和的等高线是空间中的椭球,$l_2$和$l_1$范数不超过$t$的限制...

    Ridge(右)和Lasso(左图)分别可以视作在限制参数的$l_2$和$l_1$范数不超过$t$的前提下,最小化残差平方和,其中$t$是自己设置的一个约束变量。残差平方和的等高线是空间中的椭球,$l_2$和$l_1$范数不超过$t$的限制分别是一个球体内部和多面体内部。

    几何上,球体更容易与椭球相切在各坐标均非0的位置。而多面体更容易和椭球在角点处相交。

    所以Ridge的解倾向于各坐标都0,而Lasso的解更倾向于有一些坐标为0即稀疏。

    直觉上,在稀疏解中寻找损失最小的这一问题等价于在均方误差的基础上增加非零元素个数这一惩罚项。非零元素个数等于每个元素是否非0的示性函数的总和。

    代数上,考虑单个数据点$x_1=2,y=1$,截距为$a$,斜率为$b$。

    均方误差的损失函数为$(1−a−2b)^2$,有无数个最小值点$(1−2b,b)$。若使用$l_1$正则化,也就是Lasso,相当于寻找使得$|1−2b|+|b|$最小的$b$,即$(0,12)$。若使用$l_2$正则化也就是Ridge,相当于寻找使得$(1−2b)^2+b^2$最小的$b$,即$(15,25)$。

    由此简单的例子,可以说明Ridge更倾向于稠密解,Lasso更倾向于稀疏解。

    SofaSofa数据科学社区DS面试题库 DS面经

    ×

    Warning

    您确定要删除本贴么?所有相关回复也会被一并删除并且无法恢复。

    取消

    确定删除

    u_u

    2018-08-09 11:19

    0

    我也觉得等高线解释比直线好,当然,这位置都是随机的,也可能交点在±1的线段而不是轴上,这样的交点就不会实现稀疏而是都偏小,不知道我说的对不对

    - 塔利班

    2019-04-10 16:20

    展开全文
  • Lasso与其他变量选择方法的模拟比较,胡一睿,曲荣华,[目的]提出一种基于收缩估计的新的变量选择方法-Lasso,并比较其与其他变量选择方法的异同。[方法]首先给出了几种常见的变量选择方�
  • 关于一个模型好坏的总结: 结合了L1, L2正则的ElasticNet 模型: 即有L1的特征选择能力, 也有让L2准确率高的特点 L1 具有特征选择能力的几何解释... 特征选择方法: 除了lasso, 还有穷举法,贪心算法(前向, 后向)
  • Python基于Lasso特征选择、GM算法和SVR回归算法进行财政收入影响因素分析及预测
  • [机器学习] 特征选择简明指南

    千次阅读 2021-01-14 23:23:28
    而特征工程又至少占据了数据预处理的半壁江山,在实际的数据工程工作中,无论是出于解释数据或是防止过拟合的目的,特征选择都是很常见的工作。如何从成百上千个特征中发现其中哪些对结果最具影响,进而利用它们构建...
  • 特征选择怎么做?这篇文章告诉你

    千次阅读 2021-02-01 07:49:59
    原标题:特征选择怎么做?这篇文章告诉你 照片由 Clem Onojeghuo 发布在 Unsplash 上面作者 | Pier Paolo Ippolito翻译 | Skura编辑 | 唐里原文标题:Feature Selection Techniques原文链接:...
  • 图 1:分类器性能和维度之间的关系 ▍特征选择 有许多不同的方法可用于特征选择。其中最重要的是: 1.过滤方法=过滤我们的数据集,只取包含所有相关特征的子集(例如,使用 Pearson 相关的相关矩阵)。 2.遵循过滤...
  • scikit-learn--Feature selection(特征选择)

    千次阅读 2020-12-24 18:52:14
    去掉方差较小的特征方差阈值(VarianceThreshold)是特征选择的一个简单方法,去掉那些方差没有达到阈值的特征。默认情况下,删除零方差的特征,例如那些只有一个值的样本。假设我们有一个有布尔特征的数据集,然后...
  • 【译文】特征选择方法导论(如何选取合适的变量)作者 SAURAV KAUSHIK译者 钱亦欣引言我时常以参加竞赛的方式来磨练自己的机器学习技能,它能让你更清楚地了解自己的水平。一开始,我以为算法就是机器学习的一切,知道...
  • 4.2 平均精确率减少 Mean decrease accuracy另一种常用的特征选择方法就是直接度量每个特征对模型精确率的影响。主要思路是打乱每个特征的特征值顺序,并且度量顺序变动对模型的精确率的影响。很明显,对于不重要的...
  • 嵌入式特征选择方法有:LASSO(L1正则化)和岭回归(L2正则化)。特征选择,可消除噪声特征和消除关联的特征,并能减少训练开销。 对于特征选择,需要关注正则化概念,正则化是对损失函数(目标函数)加入一个
  • lasso算法matlab代码

    2015-12-24 11:02:01
    用于高维数据降维lasso算法 matlab代码实现 功能丰富
  • 特征选择就是从原始特征中选取一些最有效的特征来降低维度,,提高模型泛化能力减低过拟合的过程,主要目的是剔除掉无关特征和冗余特征,选出最优特征子集; 常见的特征选择方法可以分为3类:过滤式(filter)、包裹...
  • LassoCV特征选择

    千次阅读 2019-09-23 10:57:33
    from sklearn.linear_model import Lasso from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_boston from sklearn.model_selection import cross_val_score boston = lo...
  • 特征选择方法

    万次阅读 2016-12-07 14:16:08
    特征选择主要有两个功能: 减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间的理解 拿到数据集,一个特征选择方法,往往很难同时完成这两个目的。通常情况下,我们经常不管三七二十...
  • 降维和特征选择的关键方法介绍及MATLAB实现

    万次阅读 多人点赞 2018-10-09 17:59:18
    特征选择: 降维的方法 主成分分析(Principle Component Analysis, PCA)方法 偏最小二乘法(Partial Least Squares, PLS) MATLAB实现 重点函数解读: 【例】光谱数据主成分回归分析(PCR) 【例】偏最小...
  • 特征选择 Python代码

    千次阅读 2019-12-12 20:38:57
    一、特征选择 对与机器学习建模。在海量特征时,特征工程选择是必要的。特征工程很大程度上决定了模型的效果和模型的稳定性。特征工程中包函内容很多,包括数据分析,特征组合变换,特征选择和特征降维等等的技术。...
  • lasso回归可以帮助特征选择
  • 构建线性模型(Lasso)并通过系数(coefficients)可视化分析特征重要度 Lasso方法最早由Robert Tibshiran于1996年提出,文章发表在“统计四大”之一的皇家统计学会期刊上,尽管至今已有二十多年,但依然有着广泛的...
  • lasso alsso scad 实例 R文件,基于数据EnergyData.csv,分别采用逐步回归法,Lasso,自适应Lasso等方法对影响响应变量的因变量进行选择
  • 本节(6)主要介绍: 特征筛选之LASSO回归分析(理论通俗讲解) LASSO (Least Absolute Shrinkage Selector Operator) 一句话掌握Lasso:把不重要特征的系数变为0     作者:北欧森林 链接:...
  • 变量选择--Lasso

    万次阅读 2017-01-31 01:21:22
    Lasso

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,522
精华内容 3,808
关键字:

lasso特征选择

友情链接: 200611172056139955.rar