精华内容
下载资源
问答
  • 本文实例为大家分享了tensorflow实现弹性网络回归算法,供大家参考,具体内容如下 python代码: #用tensorflow实现弹性网络算法(多变量) #使用鸢尾花数据集,后三个特征作为特征,用来预测第一个特征。 #1 导入...
  • : [158.41] [ 34 0 170 165 170 165 170 165] : [176.03076923] 岭回归、lasso回归弹性网络回归预测结果比较 #以iris数据为例 #导入基本程序包 import pandas as pd import numpy as np from sklearn.datasets ...

    预测儿童身高案例

    案例背景介绍

    理论上,一个人的身高除了随年龄变大而增长之外,在一定程度上还受到遗传和饮食习惯以及其他因素的影响。在这里我们把问题简化一下,假定一个人的身高只受年龄、性别、父母身高、祖父母身高和外祖父母身高这几个因素的影响,并假定大致符合线性关系。

    %config InteractiveShell.ast_node_interactivity = 'all'   #同时输出多行结果
    import copy
    import numpy as np
    from sklearn import linear_model
    # 训练数据,每一行表示一个样本,包含的信息分别为:
    # 儿童年龄,性别(0女1男)
    # 父亲、母亲、祖父、祖母、外祖父、外祖母的身高
    x = np.array([[1, 0, 180, 165, 175, 165, 170, 165],
                  [3, 0, 180, 165, 175, 165, 173, 165],
                  [4, 0, 180, 165, 175, 165, 170, 165],
                  [6, 0, 180, 165, 175, 165, 170, 165],
                  [8, 1, 180, 165, 175, 167, 170, 165],
                  [10, 0, 180, 166, 175, 165, 170, 165],
                  [11, 0, 180, 165, 175, 165, 170, 165],
                  [12, 0, 180, 165, 175, 165, 170, 165],
                  [13, 1, 180, 165, 175, 165, 170, 165],
                  [14, 0, 180, 165, 175, 165, 170, 165],
                  [17, 0, 170, 165, 175, 165, 170, 165]])
    
    # 儿童身高,单位:cm
    y = np.array([60, 90, 100, 110, 130, 140, 150, 164, 160, 163, 168])
    
    
    # 创建线性回归模型
    lr = linear_model.LinearRegression()
    # 根据已知数据拟合最佳直线
    lr.fit(x, y)
    
    
    LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
    
    # 待测的未知数据,其中每个分量的含义和训练数据相同
    xs = np.array([[10, 0, 180, 165, 175, 165, 170, 165],
                   [17, 1, 173, 153, 175, 161, 170, 161],
                   [34, 0, 170, 165, 170, 165, 170, 165]])
    
    for item in xs:
        # 为不改变原始数据,进行深复制,并假设超过18岁以后就不再长高了
        # 对于18岁以后的年龄,返回18岁时的身高
        item1 = copy.deepcopy(item)
        if item1[0] > 18:
            item1[0] = 18
        print(item, ':', lr.predict(item1.reshape(1,-1)))
    
    [ 10   0 180 165 175 165 170 165] : [140.56153846]
    [ 17   1 173 153 175 161 170 161] : [158.41]
    [ 34   0 170 165 170 165 170 165] : [176.03076923]
    

    岭回归、lasso回归、弹性网络回归预测结果比较

    #以iris数据为例
    #导入基本程序包
    import pandas  as pd
    import numpy  as np
    from sklearn.datasets import load_iris
    from sklearn import linear_model
    from sklearn import metrics
    #导入IRIS数据集 
    iris = load_iris() 
     #特征矩阵 
    X=iris.data 
     #目标向量 
    y=iris.target
    from sklearn.cross_validation import train_test_split #导入数据划分包
    #以20%的数据构建测试样本,剩余作为训练样本
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.20,random_state =1)
    elastic= linear_model.ElasticNet(alpha=0.1,l1_ratio=0.5)  # 设置lambda值,l1_ratio值 ,这里需要注意的是,ElasticNet最基本的参数是alpha、l1_ratio,alpha其正则化选项中的λ,l1_ratio则是对应α。这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集。
    elastic.fit(X_train,y_train)  #使用训练数据进行参数求解
    y_hat2 = elastic.predict(X_test)  #对测试集的预测
    print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat2)))  #计算RMSE
    
    ElasticNet(alpha=0.1, copy_X=True, fit_intercept=True, l1_ratio=0.5,
          max_iter=1000, normalize=False, positive=False, precompute=False,
          random_state=None, selection='cyclic', tol=0.0001, warm_start=False)
    RMSE: 0.25040264500501913
    

    比较三种回归的不同

    岭回归

    ridge= linear_model.Ridge(alpha=0.1)  # 设置lambda值
    ridge.fit(X_train,y_train)  #使用训练数据进行参数求解
    y_hat = ridge.predict(X_test)  #对测试集的预测
    from sklearn import metrics  #导入metrics评价模块
    print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat)))  #计算RMSE
    
    
    Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,
       normalize=False, random_state=None, solver='auto', tol=0.001)
    RMSE: 0.24949141419802737
    

    lasso回归

    lasso= linear_model.Lasso(alpha=0.1)  # 设置lambda值
    lasso.fit(X_train,y_train)  #使用训练数据进行参数求解
    y_hat1 = lasso.predict(X_test)  #对测试集的预测
    print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat1)))  #计算RMSE
    
    Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
       normalize=False, positive=False, precompute=False, random_state=None,
       selection='cyclic', tol=0.0001, warm_start=False)
    
    RMSE: 0.2555801316884705
    
    #得到岭回归的RMSE: 0.249491414198027;得到Lasso回归的RMSE: 0.2555801316884705
    #我们看到,在相同的lambda值下,ElasticNet回归的RMSE介于岭回归、lasso之间,即比Lasso回归的效果好,比岭回归的效果差。
    #当然我们可以调整参数,会得到不同结果。
    
    
    展开全文
  • 线性回归、lasso回归、岭回归以及弹性网络的系统解释声明背景介绍概述线性回归模型函数及损失函数线性回归算法多项式回归(线性回归的推广)广义线性回归(线性回归的推广)岭回归(Ridge回归)lasso回归为什么lasso...

    声明

    本博客集合了网上众多大牛的博客和观点,后面将对主要的引用源进行列举。在此对各位博主大牛表示感谢,若有侵权,请联系我。

    第一次写博客,任何意见,请不吝赐教!

    背景介绍

    线性回归模型的偏回归系数的表达式:θ=(XX)1XY\theta =(X^\intercal X)^{−1}X^\intercal Y要能保证该回归系数有解,必须确保XTX矩阵是满秩的,即XTX可逆,但在实际的数据当中,自变量之间可能存在高度自相关性,就会导致偏回归系数无解或结果无效。为了能够克服这个问题,可以根据业务知识,将那些高自相关的变量进行删除;或者选用岭回归也能够避免XTX的不可逆。
    (岭回归的必要性还有为了防止过拟合)

    岭回归一般可以用来解决线性回归模型系数无解的两种情况,一方面是自变量间存在高度多重共线性,另一方面则是自变量个数大于等于观测个数。针对这两种情况,我们不妨设计两个矩阵,来计算一下XTX的行列式。
    比如:第一种矩阵:第一列和第三列存在两倍关系(即多重共线性);第二种矩阵:列数比行数多(非满秩)

    所以,不管是高度多重共线性的矩阵还是列数多于观测数的矩阵,最终算出来的行列式都等于0或者是近似为0,类似于这样的矩阵,都会导致线性回归模型的偏回归系数无解或解无意义(因为矩阵行列式近似为0时,其逆将偏于无穷大,导致回归系数也被放大)。那如何来解决这个问题呢?1970年Heer提出了岭回归方法,非常巧妙的化解了这个死胡同,即在XXX^\intercal X的基础上加上一个较小的α\alpha扰动 (具体做法是在损失函数中加入了线性回归系数的L2正则项),从而使得行列式不再为0。LASSO回归与岭回归非常类似,不同的是在损失函数中加入了线性回归系数的L1正则项。

    概述

    线性回归问题算是机器学习中最基本的问题了,它主要包含线性回归算法、多项式回归算法(线性回归算法的推广)和广义线性回归(线性回归算法的推广)。
    以线性回归为基础,可以衍生出lasso回归、岭回归和弹性回归。线性回归采用误差平方和来作为损失函数,虽然这种算法简单,但是也会出现过拟合的现象,在线性回归损失函数中加入正则项可以有效地解决过拟合问题;线性回归的损失函数中加入自变量系数向量的L1范数后,线性回归变为lasso回归;线性回归的损失函数中加入自变量系数向量的L2范数后,线性回归变为岭回归(Ridge回归);线性回归的损失函数中加入自变量系数的L1范数和L2范数的结合后,线性回归变为弹性网络(Elastic Net)
    线性回归衍生出的三种回归方法各有优缺点,其详细内容后面会一一介绍。

    线性回归模型函数及损失函数

    线性回归遇到的问题可以做这样的描述,假设我们有m个样本,每个样本 ii 包含nn个特征xi1,xi2,...,xinx_{i1},x_{i2},...,x_{in}和一个输出yiy_i,如下:(x1(1),x2(1),...,xn(1),y1),(x1(2),x2(2),...,xn(2),y2),......(x1(m),x2(m),...,xn(m),ym), (x_1^{(1)}, x_2^{(1)}, ...,x_n^{(1)}, y_1),\\(x_1^{(2)}, x_2^{(2)}, ...,x_n^{(2)}, y_2), \\......\\(x_1^{(m)}, x_2^{(m)},...,x_n^{(m)},y_m),
    我们的问题是,当给定一个新的(x1(m+1),x2(m+1),...,xn(m+1)(x_1^{(m+1)}, x_2^{(m+1)}, ...,x_n^{(m+1)}时,如何确定其对应的输出ym+1y_{m+1}呢?如果这个问题中的 yy 是连续的,那么这是一个回归问题,如果 yy 是离散的,那么这是一个分类问题。
    对于nn维特征的样本数据,如果我们决定使用线性回归,那么对应的模型是这样的:
    hθ(x1,x2,...,xn)=θ0+θ1x1+...+θnxn,h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1x_1+...+\theta_nx_n, 其中θi(i=0,1,2...n)\theta_i (i = 0,1,2... n)为模型参数,xi(i=0,1,2...n)x_i (i = 0,1,2... n)为每个样本的nn个特征值。这个表示可以简化,我们增加一个特征x0=1x_0=1 ,这样
    hθ(x0,x1,...,xn)=i=0nθixih_\theta(x_0,x_1,...,x_n)= \sum_{i=0}^n\theta_ix_i。进一步用矩阵形式表达更加简洁如下:hθ(X)=Xθh_\theta(X)=X\theta其中, 假设函数hθ(X)h_\theta(X)m×1m\times1的向量,θθn×1n\times1的向量,里面有nn个代数法的模型参数。XXm×nm\times n维的矩阵。mm代表样本的个数,nn代表样本的特征数。
    得到了模型,我们需要求出需要的损失函数,一般线性回归我们用均方误差作为损失函数。损失函数的代数法表示如下:J(θ0,θ1,...,θn)=i=1m(hθ(x0(i),x1(i),...xn(i))yi)2J(\theta_0,\theta_1,...,\theta_n)=\sum_{i=1}^m(h_\theta(x^{(i)}_0,x^{(i)}_1,...x^{(i)}_n)-y_i)^2进一步用矩阵形式表达损失函数:J(θ)=12(XθY)(XθY)J(\theta)=\dfrac{1}{2}{(X\theta−Y)}^\intercal(X\theta−Y)YYm×1m\times1维的矩阵,表示输出矩阵,即由yi(i=1,2,...,n)y_i(i=1,2,...,n)组成的矩阵。由于矩阵法表达比较的简洁,后面我们将统一采用矩阵方式表达模型函数和损失函数。

    线性回归算法

    对于线性回归的损失函数J(θ)=12(XθY)(XθY)J(\theta)=\dfrac{1}{2}(X\theta−Y)^\intercal(X\theta−Y),我们常用的有两种方法来求损失函数最小化时候的 θ\theta 参数:一种是梯度下降法,一种是最小二乘法。由于不是本文内容且不影响读者理解线性回归,在此不对梯度下降法和最小二乘法进行详细介绍,若不明白,可以百度,推荐这个网址,梯度下降法最小二乘法
    如果采用梯度下降法,则 θ\theta 的迭代公式是这样的:θ=θαX(XθY)\theta=\theta−\alpha X^\intercal(X\theta−Y)通过若干次迭代后,我们可以得到最终的θ的结果。
    如果采用最小二乘法,则 θ\theta 的结果公式如下:θ=(XX)1XY\theta=(X^\intercal X)^{−1}X^\intercal Y当然对于求线性回归的系数,还有其他的常用算法,比如牛顿法和拟牛顿法,不是本文重点,这里不详细描述。

    多项式回归(线性回归的推广)

    回到我们开始的线性模型,hθ(x1,x2,...,xn)=θ0+θ1x1+...+θnxnh_θ(x_1,x_2,...,x_n)=θ_0+θ_1x_1+...+θ_nx_n, 如果这里不仅仅是 xx 的一次方,比如增加二次方,那么模型就变成了多项式回归。这里写一个只有两个特征的2次方多项式回归的模型:hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x12+θ4x22+θ5x1x2h_θ(x_1,x_2)=θ_0+θ_1x_1+θ_2x_2+θ_3x_1^2+θ_4x_2^2+θ_5x_1x_2我们令x0=1,x1=x1,x2=x2,x3=x12,x4=x22,x5=x1x2x_0=1,x_1=x_1,x_2=x_2,x_3=x_1^2,x_4=x_2^2,x_5=x_1x_2 ,这样我们就得到了下式:hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x3+θ4x4+θ5x5h_θ(x_1,x_2)=θ_0+θ_1x_1+θ_2x_2+θ_3x_3+θ_4x_4+θ_5x_5可以发现,我们又重新回到了线性回归,这是一个五元线性回归,可以用线性回归的方法来完成算法。对于每个二元样本特征(x1,x2)(x_1,x_2),我们得到一个五元样本特征(1,x1,x2,x12,x22,x1x2)(1,x_1,x_2,x_1^2,x_2^2,x_1x_2),通过这个改进的五元样本特征,我们重新把不是线性回归的函数变回线性回归。

    广义线性回归(线性回归的推广)

    在上一节的线性回归的推广中,我们对样本特征端做了推广,这里我们对于特征 yy 做推广。比如我们的输出 YY 不满足和 XX 的线性关系,但是 lnY\ln YXX 满足线性关系,模型函数如下:lnY=Xθ\ln Y=X\theta这样对与每个样本的输入 yy,我们用 lny\ln y 去对应, 从而仍然可以用线性回归的算法去处理这个问题。我们把 lny\ln y 一般化,假设这个函数是单调可微函数 g(.)g(.),则一般化的广义线性回归形式是:g(Y)=Xθg(Y)=X\theta 或者 Y=g1(Xθ)Y=g^{−1}(X\theta) 这个函数 g(.)g(.)我们通常称为联系函数, g1(.)g^{-1}(.)g(.)g(.)反函数

    岭回归(Ridge回归)

    在前面的概述中已经对岭回归(Ridge)和lasso回归的产生背景进行了介绍,本小节将对岭回归的原理进行概述。
    线性回归的L2正则化通常称为Ridge回归,它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和Lasso回归的区别是Ridge回归的正则化项是L2范数,而Lasso回归的正则化项是L1范数。具体Ridge回归的损失函数表达式如下:J(θ)=12(XθY)(XθY)+12αθ22J(θ)=\dfrac{1}{2}(Xθ−Y)^\intercal(Xθ−Y)+\dfrac{1}{2}\alpha||\theta||_2^2其中α\alpha为常数系数,代表正则化系数,太小就会失去处理过拟合的能力,太大就会因矫正过重而出现欠拟合的现象,需要进行调优。θ2||θ||_2为L2范数。
    Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但和Lasso回归比,这会使得模型的特征留的特别多,模型解释性差。至于为什么会这样,在后面的章节中会讲到。
    Ridge回归的求解比较简单,一般用最小二乘法。这里给出用最小二乘法的矩阵推导形式,和普通线性回归类似。
    令J(θ)的导数为0,得到下式:X(XθY)+αθ=0X^\intercal(Xθ−Y)+\alpha\theta=0整理即可得到最后的θ的结果:θ=(XX+αE)1XY \theta=(X^\intercal X+\alpha E)^{−1}X^\intercal Y其中EE为单位矩阵。
    针对α\alpha的设置,需要单独提一下,python中有可以辅助设置此参数的库RidgeCV,RidgeCV算法与Ridge算法的损失函数与损失函数的优化方法是一致的,只是在验证方法上有所不同。RidgeCV算法对损失函数的常数系数进行了交叉验证,从而自动选择一个合适的系数。在初始化RidgeCV类时候,我们可以传一组备选的值,10个,100个都可以。RidgeCV类会帮我们选择一个合适的系数。

    lasso回归

    Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归模型变量多的缺点呢?有,这就是下面说的Lasso回归。
     Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下:J(θ)=12n(XθY)(XθY)+αθ1J(\theta)=\dfrac{1}{2n}(X\theta−Y)^\intercal(X\theta−Y)+\alpha||\theta||_1其中nn为样本个数,α\alpha为常数系数,需要进行调优。θ1||\theta||_1为L1范数。
     
    Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。
    但是Lasso回归有一个很大的问题,导致我们需要把它单独拎出来讲,就是它的损失函数不是连续可导的,由于L1范数用的是绝对值之和,导致损失函数有不可导的点。也就是说,我们的最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。此时我们可以通过坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression, LARS)来求有这个L1范数的损失函数极小值。
    使用坐标轴下降法和最小角回归法进行求解的过程可以参考这个网址

    为什么lasso回归容易使得不重要的变量的系数变为0而岭回归却会保留它们

    经过上面的介绍,大家已经对岭回归和lasso回归有了基本的认识。不知大家有没有这个疑问,为什么lasso回归容易使得不重要的变量的系数变为0而岭回归却会保留它们呢?本小节将通过图形来解释。

    假设线性回归模型中只有两个自变量,系数为β1β2\beta_1、\beta_2(等同于上文中θ1θ2\theta_1、\theta_2。由于岭回归是在线性回归损失函数中加入了系数的L2正则项,lasso回归是在线性回归损失函数中加入了系数的L1正则项,所以可以得到下图,分别展示了岭回归和lasso回归系数的解,
    在这里插入图片描述
    可以清晰地看到:求解的交点不再是最小二乘的最小值(红点),而变成了与正则项的交点(黄点)。这个区别可以从二维图中更好地观察出来:岭回归中两个图形(没有棱角)的交点永远不会落在两个轴上,而LASSO回归中,正则化的几何图形是有棱角的,可以很好的让交点落在某一个轴上。这种稀疏化的不同也导致了LASSO回归可以用于特征选择(让特征权重变为0从而筛选掉特征),而岭回归却不行。

    弹性网络(Elastic Net)

    介绍完lasso回归和ridge回归,弹性网络就很简单了,损失函数如下:J(θ)=12(XθY)(XθY)+rαθ1+1r2αθ22J(\theta)=\dfrac{1}{2}(Xθ−Y)^\intercal(Xθ−Y)+r\alpha||\theta||_1+\dfrac{1−r}2\alpha||\theta||_2^2使用这种方式方法所得到的模型就像纯粹的Lasso回归一样稀疏,但同时具有与岭回归提供的一样的正则化能力。
    弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个,在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。

    结语

    本文对线性回归及其相关的延伸进行了基础的介绍,可以帮助大家有一个基本的理解,里面有些细节没有深入展开,若有兴趣,读者可通过更专业的资料进行学习。

    参考资料

    1. https://www.cnblogs.com/yongfuxue/p/9971749.html
    2. https://blog.csdn.net/lsxxx2011/article/details/98764995
    3. https://blog.csdn.net/JH_Zhai/article/details/82694937
    4. https://blog.csdn.net/lsxxx2011/article/details/98764594
    5. https://www.cnblogs.com/pinard/p/6004041.html
    6. https://www.cnblogs.com/pinard/p/6018889.html
    展开全文
  • 回归,Lasso回归弹性网络回归原理及R实现

    千次阅读 多人点赞 2020-10-24 09:53:48
    在以下各节中,我们首先计算岭,套索和弹性网回归模型。 接下来,我们将比较不同的模型,以便为我们的数据选择最佳模型。 最好的模型定义为预测误差最低的模型RMSE。 计算岭回归 # Find the best lambda using ...

    在线性大型数据集包含的变量数量大于样本数量的情况下,标准线性模型(或普通的最小二乘法)的效果较差。

    更好的替代方法是``惩罚回归'',可以通过在方程中添加约束来创建线性惩罚模型,该模型因变量过多而受到惩罚(James et al. 2014,P. Bruce and Bruce (2017)) 。这也称为收缩或调整方法。

    施加此惩罚的结果是将系数值减小(即缩小)为零。这允许贡献较小的变量具有接近零或等于零的系数。

    注意,收缩要求选择确定收缩量的调整参数(λ)。

    在本章中,我们将介绍最常用的惩罚回归方法,包括岭回归,套索回归和弹性净回归。我们还将在R中提供实用示例。

    Table of Contents

    收缩方法

    岭回归

    Lasso回归

    弹性网络回归

    加载R包

    准备数据

    计算惩戒线性回归

    准备数据

    R函数

    计算岭回归

    计算lasso回归

    计算弹性网络回归

    模型比较


    收缩方法

    岭回归

    岭回归缩小了回归系数,因此对结果影响较小的变量的系数接近零。系数的缩小是通过使用称为L2-正则化的惩罚项对回归模型进行惩罚来实现的,该惩罚项是系数平方的总和。

    可以使用称为lambda(λ)的常量微调惩罚量。为λ选择一个合适的值至关重要。当λ=0时,惩罚项无效,岭回归将产生经典的最小二乘系数。但是,随着λ增大到无穷大,收缩罚分的影响增大,并且岭回归系数将接近于零。

    请注意,与普通的最小二乘回归相比,岭回归受预测变量的规模影响很大。因此,最好在应用岭回归之前对预测变量进行标准化(即缩放)(James et al.2014),以使所有预测变量处于相同规模。

    可以使用公式x'= x / sd(x)来实现预测变量x的标准化,其中sd(x)是x的标准偏差。这样的结果是,所有标准化预测变量的标准偏差都将为一,从而使最终拟合不依赖于预测变量的度量范围。

    与普通的最小二乘方法(第@ref(linear-regression)章)相比,脊回归的一个重要优点是在具有大量预测变量(p )大于观察次数(n)。

    岭回归的一个缺点是它将包含最终模型中的所有预测变量,这与逐步回归方法(第@ref(stepwise-regression))不同,后者通常会选择涉及变量减少的模型。

    岭回归将系数缩小为零,但不会将其中的任何一个都精确设置为零。套索回归是克服此缺点的替代方法。

    Lasso回归

    LASSO代表最小绝对收缩和选择算符。它通过使用称为L1-正则化的惩罚项惩罚回归模型来将回归系数缩小为零,这是绝对系数的总和。在套索回归的情况下,惩罚具有迫使一些系数估计(对于模型的贡献很小)正好等于零的效果。这意味着,套索还可被视为执行变量选择以降低模型复杂性的子集选择方法的替代方法。

    就像在岭回归中一样,为套索选择一个好的λ值至关重要。

    套索回归相对于岭回归的一个明显优势是,它可以生成更简单,更易解释的模型,其中仅包含一组减少的预测变量。但是,无论是岭回归还是套索都不会普遍主导对方。

    通常,套索在某些预测变量系数较大而其余预测变量系数很小的情况下可能会表现更好。当结果是许多预测变量的函数时,岭回归将表现更好,所有预测变量的系数都大致相等(James et al.2014)。

    交叉验证方法可用于识别这两种技术中的哪一种在特定数据集上更好。

    弹性网络回归

    Elastic Net生成了一个回归模型,该模型同时受L1范数和L2范数的影响。 这样的结果是有效地缩小系数(如在岭回归中)并将某些系数设置为零(如在LASSO中)。

    加载R包

    • tidyverse -数据集操作及可视化
    • caret -机器学习流程
    • glmnet-建立惩罚方程
    library(tidyverse)
    library(caret)
    library(glmnet)

    准备数据

    # Load the data
    data("Boston", package = "MASS")
    # Split the data into training and test set
    set.seed(123)
    training.samples <- Boston$medv %>%
      createDataPartition(p = 0.8, list = FALSE)
    train.data  <- Boston[training.samples, ]
    test.data <- Boston[-training.samples, ]

    计算惩戒线性回归

    准备数据

    • y 结局变量
    • x 预测变量。这应该使用model.matrix()函数创建,该函数可以将任何分类变量自动转换为虚拟变量,这很重要,因为glmnet()仅可以 接受数字,定量输入。 创建模型矩阵后,我们删除索引= 1处的截距分量。
    # Predictor variables
    x <- model.matrix(medv~., train.data)[,-1]
    # Outcome variable
    y <- train.data$medv

    R函数

    使用 glmnet()函数构建惩戒方程 [glmnet包]

    glmnet(x, y, alpha = 1, lambda = NULL)
    • x: 预测变量矩阵
    • y: 二分类结局变量
    • alpha: 弹性网络混合系数. 
      • 1: Lasso回归
      • 0: 岭回归 
      • 0 ~ 1 :弹性网络回归
    • lamba: 收缩系数,需自定

    在惩罚回归中,您需要指定一个常数λ来调整系数收缩量。 可以将最适合您数据的lambda定义为使交叉验证预测错误率最小化的lambda。 这可以使用cv.glmnet()函数自动确定。

    在以下各节中,我们首先计算岭,套索和弹性网回归模型。 接下来,我们将比较不同的模型,以便为我们的数据选择最佳模型。

    最好的模型定义为预测误差最低的模型RMSE。

    计算岭回归

    # Find the best lambda using cross-validation
    set.seed(123) 
    cv <- cv.glmnet(x, y, alpha = 0)
    # Display the best lambda value
    cv$lambda.min
    ## [1] 0.758
    # Fit the final model on the training data
    model <- glmnet(x, y, alpha = 0, lambda = cv$lambda.min)
    # Display regression coefficients
    coef(model)
    ## 14 x 1 sparse Matrix of class "dgCMatrix"
    ##                    s0
    ## (Intercept)  28.69633
    ## crim         -0.07285
    ## zn            0.03417
    ## indus        -0.05745
    ## chas          2.49123
    ## nox         -11.09232
    ## rm            3.98132
    ## age          -0.00314
    ## dis          -1.19296
    ## rad           0.14068
    ## tax          -0.00610
    ## ptratio      -0.86400
    ## black         0.00937
    ## lstat        -0.47914
    # Make predictions on the test data
    x.test <- model.matrix(medv ~., test.data)[,-1]
    predictions <- model %>% predict(x.test) %>% as.vector()
    # Model performance metrics
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    ##   RMSE Rsquare
    ## 1 4.98   0.671

    请注意,默认情况下,函数glmnet()标准化变量,以便它们的大小可比。 但是,系数始终以原始比例返回。

    计算lasso回归

    用于岭回归的R代码之间的唯一区别是,对于套索回归,需要指定参数alpha = 1而不是alpha = 0(对于岭回归)。

    # Find the best lambda using cross-validation
    set.seed(123) 
    cv <- cv.glmnet(x, y, alpha = 1)
    # Display the best lambda value
    cv$lambda.min
    ## [1] 0.00852
    # Fit the final model on the training data
    model <- glmnet(x, y, alpha = 1, lambda = cv$lambda.min)
    # Dsiplay regression coefficients
    coef(model)
    ## 14 x 1 sparse Matrix of class "dgCMatrix"
    ##                    s0
    ## (Intercept)  36.90539
    ## crim         -0.09222
    ## zn            0.04842
    ## indus        -0.00841
    ## chas          2.28624
    ## nox         -16.79651
    ## rm            3.81186
    ## age           .      
    ## dis          -1.59603
    ## rad           0.28546
    ## tax          -0.01240
    ## ptratio      -0.95041
    ## black         0.00965
    ## lstat        -0.52880
    # Make predictions on the test data
    x.test <- model.matrix(medv ~., test.data)[,-1]
    predictions <- model %>% predict(x.test) %>% as.vector()
    # Model performance metrics
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    ##   RMSE Rsquare
    ## 1 4.99   0.671

    计算弹性网络回归

    我们使用caret包自动选择最佳的调整参数alpha和lambda。 caret程序包测试了一系列可能的alpha和lambda值,然后选择了lambda和alpha的最佳值,从而生成了最终模型,即弹性网模型。

    在这里,我们将测试10个不同的alpha和lambda值的组合。 使用选项tuneLength指定,最佳的alpha和lambda值是那些使交叉验证误差最小的值。

    # Build the model using the training set
    set.seed(123)
    model <- train(
      medv ~., data = train.data, method = "glmnet",
      trControl = trainControl("cv", number = 10),
      tuneLength = 10
    )
    # Best tuning parameter
    model$bestTune
    ##   alpha lambda
    ## 6   0.1   0.21
    # Coefficient of the final model. You need
    # to specify the best lambda
    coef(model$finalModel, model$bestTune$lambda)
    ## 14 x 1 sparse Matrix of class "dgCMatrix"
    ##                     1
    ## (Intercept)  33.04083
    ## crim         -0.07898
    ## zn            0.04136
    ## indus        -0.03093
    ## chas          2.34443
    ## nox         -14.30442
    ## rm            3.90863
    ## age           .      
    ## dis          -1.41783
    ## rad           0.20564
    ## tax          -0.00879
    ## ptratio      -0.91214
    ## black         0.00946
    ## lstat        -0.51770
    # Make predictions on the test data
    x.test <- model.matrix(medv ~., test.data)[,-1]
    predictions <- model %>% predict(x.test)
    # Model performance metrics
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    ##   RMSE Rsquare
    ## 1 4.98   0.672

    模型比较

    不同模型的性能指标具有可比性。 使用LASSO或弹性网络回归将预测变量年龄的系数设置为零,从而导致与包含所有预测变量的岭回归相比更简单的模型。在我们的示例中,我们可以选择套索或弹性净回归模型。

    请注意,我们可以使用caret操作流程轻松计算和比较岭,套索和弹性净回归。caret函数将自动选择最佳调整参数值,计算最终模型并使用交叉验证技术评估模型性能。

    使用 caret 包

    1. 设置Lambda值的范围:
    lambda <- 10^seq(-3, 3, length = 100)
    1. 计算岭回归
    # Build the model
    set.seed(123)
    ridge <- train(
      medv ~., data = train.data, method = "glmnet",
      trControl = trainControl("cv", number = 10),
      tuneGrid = expand.grid(alpha = 0, lambda = lambda)
      )
    # Model coefficients
    coef(ridge$finalModel, ridge$bestTune$lambda)
    # Make predictions
    predictions <- ridge %>% predict(test.data)
    # Model prediction performance
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    1. 计算LASSO回归
    # Build the model
    set.seed(123)
    lasso <- train(
      medv ~., data = train.data, method = "glmnet",
      trControl = trainControl("cv", number = 10),
      tuneGrid = expand.grid(alpha = 1, lambda = lambda)
      )
    # Model coefficients
    coef(lasso$finalModel, lasso$bestTune$lambda)
    # Make predictions
    predictions <- lasso %>% predict(test.data)
    # Model prediction performance
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    1. 弹性网络回归
    # Build the model
    set.seed(123)
    elastic <- train(
      medv ~., data = train.data, method = "glmnet",
      trControl = trainControl("cv", number = 10),
      tuneLength = 10
      )
    # Model coefficients
    coef(elastic$finalModel, elastic$bestTune$lambda)
    # Make predictions
    predictions <- elastic %>% predict(test.data)
    # Model prediction performance
    data.frame(
      RMSE = RMSE(predictions, test.data$medv),
      Rsquare = R2(predictions, test.data$medv)
    )
    1. 比较模型性能

    使用caret包比较不同模型性能,最佳模型定义为最小化预测误差的模型。

    models <- list(ridge = ridge, lasso = lasso, elastic = elastic)
    resamples(models) %>% summary( metric = "RMSE")
    ## 
    ## Call:
    ## summary.resamples(object = ., metric = "RMSE")
    ## 
    ## Models: ridge, lasso, elastic 
    ## Number of resamples: 10 
    ## 
    ## RMSE 
    ##         Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
    ## ridge   3.10    3.96   4.38 4.73    5.52 7.43    0
    ## lasso   3.16    4.03   4.39 4.73    5.51 7.27    0
    ## elastic 3.13    4.00   4.37 4.72    5.52 7.32    0
    展开全文
  • 为了缓解这些问题,通过利用频谱和空间信息,建议的模型具有以下两个组成部分:1)第一层中仅频谱弹性网回归和2)第二层中空间上下文驱动的弹性网正则化。 在第一层中,为了鼓励分组效果和特征选择,我们使用被ELN...
  • 基于自适应弹性网络回归的目标跟踪(OBJECT TRACKING WITH ADAPTIVE ELASTIC NET REGRESSION)阅读笔记 摘要 近年来,各种基于回归的跟踪方法取得了很大的成功,然而,在大多数方法中,提取的所有特征都是用来表示...

    基于自适应弹性网络回归的目标跟踪(OBJECT TRACKING WITH ADAPTIVE ELASTIC NET REGRESSION)阅读笔记

    by:家行hang
    论文链接:
    Object tracking with adaptive elastic net regression
    Zhang, Shunli ; Xing, Weiwei
    2017 IEEE International Conference on Image Processing, Sept. 2017, pp.2597-2601

    参考:
    1. 目标跟踪简介

    摘要

    近年来,各种基于回归的跟踪方法取得了很大的成功,然而,在大多数方法中,提取的所有特征都是用来表示对象的,而不需要进行特征选择。
    (这里的意思是提取的所有特征全都用上了,而不是选择着去用)

    本文提出了一种 基于自适应权(adaptive weight)弹性网络回归 的新的跟踪方法,一方面,跟踪被表述为一个 弹性网络回归 问题,它不仅可以充分利用空间信息,而且可以自动选择特征来减轻不稳定或不准确点的影响,另一方面,回归模型中的“1范数”和“2范数”正则化会自适应调整,以更好地提高性能。实验结果表明,所提出的自适应弹性网络回归跟踪方法能够获得满意的跟踪性能。

    参考:
    1. 机器学习中的正则化
    2. 几种范数的简单介绍
    3. 范数理解(0范数,1范数,2范数)
    4. 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归
    5. 为什么正则化能减少模型过拟合程度
    6. 为什么正则化(Regularization)可以减少过拟合风险

    关键词:目标追踪,弹性网络回归(elastic net regression),自适应权(adaptive weight)

    1 介绍

    目标跟踪作为计算机视觉领域的研究热点之一,在视频监控、运动分析等领域有着广泛的应用。然而,跟踪面临着严重遮挡、变形、背景复杂等多种因素,难以实现鲁棒跟踪。

    表观模型(appearance model)在跟踪中起着重要的作用,传统的表观模型一般可分为两类:
    - 生成式模型(generative model):就是只有一个模型,你把测试用例往里面一丢,label就出来了,如SVM。
    - 判别式模型(discriminative model):有多个模型(一般有多少类就有多少个),你得把测试用例分别丢到各个模型里面,最后比较其结果,选择最优的作为label,如朴素贝叶斯。

    (???表观模型中的区别呢???)

    参考:
    1. 产生式模型与判别式模型的区别
    2. 机器学习–判别式模型与生成式模型
    3. 生成式模型和判别式模型的区别
    4. 机器学习 之 生成式模型 VS 判别式模型

    近年来,一些基于回归的判别式模型取得了很大的发展,并获得了最先进的跟踪性能。例如,Hare等人提出了基于结构化输出回归的Struck方法,使用结构化输出预测来避免中间分类步骤,Henriques 等人提出了将跟踪表示为基于岭回归模型构造相关滤波器的问题,Zhang等人提出了基于混合支持向量机的跟踪方法,其中在目标的相邻样本基础上建立了支持向量回归模型。与传统的基于二分类的判别模型不同,回归模型具有一些明显的优势。例如,回归的目标和跟踪任务总是一致的,可以充分利用背景信息。然而,大多数基于回归的跟踪方法使用提取的所有特征。每个特性都被赋予相同的权重,并且不考虑特性的重要性。换句话说,就是没有特征选择。

    在跟踪过程中,我们可以观察到目标的形状可能发生变形,或者目标发生了姿势的变化。此外,目标可能被另一个物体遮挡(Fig. 1).这些因素表明目标的某些部分不稳定,可能会影响表观模型的性能。遮挡也会干扰训练样本,从而降低模型的准确度。通过选取样本的稳定准确的部分建立外观模型,可以减少变形和遮挡的影响,提高鲁棒性。
    (这部分说明特征选取的重要性,可以减少目标跟踪中变形和遮挡的影响。)

    本文将跟踪问题表述为一个自适应弹性网络回归问题。弹性网络是一种包含 “1范数”和“2范数”正则化 的回归技术。它可以看作是 Lasso回归 和 岭回归 的结合,保留了上述两种回归模型的优点。弹性网络在许多领域都得到了应用,并取得了成功的应用。将跟踪定义为一个弹性网络回归问题可以带来两个好处:
    - 弹性网络保持了回归模型的优点,可以利用背景的更多信息。
    - 弹性网络能够自适应地选择稳定的特征进行训练,从而使表观模型更加精确。
      

    此外,我们提出了一种自适应策略来自动确定“1范数”和“2范数”的权重。实验结果表明,该方法可以获得与许多最先进的跟踪方法相似的跟踪结果。

    2 用弹性网络回归跟踪

    2.1 具有自适应弹性网络回归的表观模型

    2.1.1 简述

    虽然采用了岭回归和支持向量回归等不同的回归策略来构建回归表观模型,但权重向量w的正则项往往采用“2范数”,对特征的鲁棒性不够重视。在此,我们将跟踪定义为一个弹性网络回归问题,弹性网络能够自适应地选择最稳定的特征来学习函数,从而在“1范数”和“2范数”之间进行权衡,因此,我们使用弹性网来选择最鲁棒、最稳定的外观表现特征,减少变形、遮挡等因素对外观变化的影响。

    具体来说,假设训练样本集为x,其对应样本的元素为xi,回归值为yi
    线性回归函数可以定义为f(x)=wTx,其中训练样本xi和回归值yi均以相应的均值为中心。然后将弹性网络正则化回归的优化问题表示为:
            minwi12||wTxiyi||22+λ(α1||w||1+α2||w||22),(1)
            (???是加上了两种正则项的损失函数么???)
    这里的λ表示误差与正则化之间的权衡参数,α1,α2控制“1范数”和“2范数”正则化的比例,并且α1+α2=1

    此外,我们把等式(1)中的α=[α1,α2]T也视为优化参数。由于视频序列的不同帧中对象的稳定特性可能不同,不同视频序列中的对象也可能不同,因此对权衡参数进行自适应调整是有益的。
    之后,等式(1)变为:
            minw,αi12||wTxiyi||22+λ(α1||w||1+α2||w||22)+ρ2||α||22,(2)
    这里的ρ也表示一个权衡参数,又加了一个新的正则化项||α||22,以便控制“1范数”和“2范数”的平衡。通过求解等式(2)中的优化问题,就可以用最优的wα来表示外观模型。

    2.1.2 优化(???)

    由于有两个不同的参数wα,等式(2)的优化问题可以通过两阶段迭代算法进行优化。首先,通过修正α,等式(2)中的优化问题退化为等式(1),等式(1)这是一个标准的弹性网络回归问题。目前已有很多现成的算法来解决在等式(1)中的优化问题。例如 LARS-EN 算法。在此,我们采用 SPAMS 工具箱来解决这个问题。
    第二步,得到w后,我们对其进行了修正并解决α的优化问题:
            minwiλ(α1||w||1+α2||w||22)+ρ2||α||22,(3)
    这是一个二次优化问题,可以用Matlab直接求解。然后这两个步骤可以迭代进行得到最优的wα

    2.1.3 准备样本

    基于滑动窗口策略,在网格中密集采样训练样本。假设目标中心的位置是(x0,y0),目标区域的宽度和高度分别为wh,并且样本的归一化的大小是NS× NS,此外,我们将归一化目标样本的坐标表示为(0,0)。如果将训练样本按照归一化目标的像素密集采样,步长为d,则归一化区域的训练半径为是NS,此外,我们希望训练样本能够覆盖不同程度的目标区域。因此,归一化样本xi在归一化区域中的位置就是(pi,qi),其中pi,qi[Ns,Ns]。相应地,归一化之前,xi的位置为(piw/Ns,qih/Ns)(???为什么???),这可以通过反向映射得到。通过在[Ns,Ns]上改变piqi,我们可以得到所有与目标有不同重叠的训练样本。

    参考:
    1. 滑动窗口算法
    2. 【深度学习理论】基于滑动窗口的目标检测算法

    网格中选取的样本存储在相邻的缓冲区Bn中,提供了紧凑的空间约束。在我们的方法中,Bn中的每个样本对应一个特定的位置。此外,我们还构建了另一个训练样本缓冲区,即深度为D(???)的目标缓冲区Bt,它由之前的跟踪结果填充,提供了时间约束。

    2.1.4 确定回归值

    为了使回归和跟踪的目标一致,在此,我们采用高斯函数作为回归函数,其中最大的回归函数值对应于目标的位置。由于我们将训练样本归一化到固定大小,所以可以通过归一化大小来实现高斯函数,以避免不同目标大小的影响。
            yi=exp((x¯(i)2+y¯(i)2)/σ2),(4)
    x¯(i)y¯(i)分别表示样本xi的归一化相对水平和垂直位置,σ2表示高斯函数的方差。利用训练样本和确定的回归值,通过优化等式(1)中的问题,训练弹性网络回归模型,得到模型参数w

    2.2 搜索策略

    通过建立的表观模型,我们可以逐帧完成跟踪。在此,我们利用一个简单而有效的滑动窗口采样策略来寻找最优的跟踪结果。第t1帧获得的目标位置记为lt1,第t帧的一个候选样本xj的位置记为l(xj),在第t1帧中我们在lt1周围滑动采样窗口,获得一系列候选样本。如果lt1l(xj)满足||l(xj)lt1||2<Rs,xj将被选为候选样本。通过将候选样本归一化为固定大小并提取特征,通过计算得到候选样本xj的回归值f(xj)xj的置信度可以表示为:
            conf(xj)=exp((f(xj)ymax)2).(5)
    然后,通过计算得到最优候选样本:
            xopt=argmaxxjconf(xj).(6)
            (arg代表当conf(xj)取最大值时,x的取值)

    2.3 更新模型

    在得到跟踪结果xopt后,我们更新弹性网络模型以适应外观的变化。为此,我们采用再训练策略(retraining strategy)来更新弹性网络模型。

    由于我们已经将样本分为目标部分Bt和邻近部分Bn,我们分别更新BtBn中的样本。对于Bt,我们以先入先出(First-In-First-Out(FIFO))的原则更新样本,即最早进入目标缓冲区的样本将被xopt替换。对于Bn,由于每个位置对应的样本只有一个,所以我们选择与现有模型最小吻合的样本Nu进行更新。基于xopt的位置,我们首先根据章节2.1.3的介绍选择xopt周围的样本,然后通过回归模型来测量新样本与已有模型的吻合程度。假设新样本集为X,元素为xi
    对应xi的测度是mi=|y^iyi|,这里的y^i为弹性网络模型对xi的预测值,yi为预定义的理想回归值。mi值越大,说明样本xi不适合当前模型。
    因此,我们选择Nu样本比其他样本更大,以Bn代替相邻位置相同的样本。利用更新后的样本,我们可以通过求解等式(1)来重新训练弹性网络模型,在提出的更新方案的基础上,可以对回归模型进行尽可能大的更新,以适应外观的变化。

    Fig.2. 上图是在所有51个序列的测试中,ENT和其他跟踪模型的精确图和成功图。方括号中的值分别表示精度图上Thp=20像素处的精度和成功图上对应的AUC值。

    Table 1. 下表是ENT和其他跟踪模型的CLE (in pixel), VOR,Precison 和 SR 的对比结果:

    3 实验

    3.1 初始化

    提出的基于自适应弹性网络的跟踪方法记为ENT,初始化如下:
    提取具有5像素窗口大小和9个方向的HOG特征来表示;
    样本的归一化大小为30× 30
    训练半径和搜索半径分别设置为30像素和26像素;
    高斯函数中,σ2=0.01
    正则化参数中,α1初始化为0.5,λ初始化为0.5,ρ初始化为10;
    为了更新的比值Nu/M初始化为0.05;
    所有序列的参数都是固定的。(???这句话是什么意思???)

    参考:
    1. HOG特征(Histogram of Gradient)学习总结
    2. 目标检测的图像特征提取之(一)HOG特征
    3. 方向梯度直方图(HOG,Histogram of Gradient)学习笔记二 HOG正篇

    3.2 与最先进的追踪器对比

    3.3 参数分析

    4. 结论

    本文采用弹性网络回归方法构造了一种新的跟踪方法。将跟踪问题表述为弹性网络回归问题,既可以利用回归模型的优点,又可以利用弹性网络选择最稳定的特征进行表示。我们对基准数据集中的跟踪方法进行了评价,实验结果表明,该方法能比其他许多基于回归的跟踪方法取得更好的效果。

    展开全文
  • import numpy as np import matplotlib as mpl ...比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流 from sklearn.linear_model.coordinate_descent import ConvergenceWarning
  • 我们将介绍spark在ml包中封装的逻辑回归Elastic Net,通过配置可以灵活的同时使用L1和L2,或者其一,同时根据正则化选择使用L-BFGS或OWLQN优化。本文是其中的第二篇,介绍模型训练。
  • 我们将介绍spark在ml包中封装的逻辑回归Elastic Net,通过配置可以灵活的同时使用L1和L2,或者其一,同时根据正则化选择使用L-BFGS或OWLQN优化。本文是其中的第一篇,介绍模型训练,预测中使用的一些辅助类。
  • 正则化路径是针对正则化参数λ的值网格处的套索或弹性网络罚值计算的。该算法速度极快,可以利用输入矩阵中的稀疏性x。它符合线性,逻辑和多项式,泊松和Cox回归模型。可以从拟合模型中做出各种预测。它也可以适合多...
  • 有许多开源软件包可以训练逻辑回归模型,但是我们找不到能够满足我们技术要求的扩展软件包。 因此,我们编写了自己的。 产品要求和挑战 (Product Requirements and Challenges) At Xandr, the combination of our ...
  • spark mllib源码分析之逻辑回归弹性网络ElasticNet(二) spark源码分析之L-BFGS spark mllib源码分析之OWLQN spark中的online均值/方差统计 spark源码分析之二分类逻辑回归evaluation spark正则化 spark在ml包...
  • 该方法利用SIFT特征描述子构建特征字典,再通过弹性网回归模型求解每个描述子所对应的 稀疏系数向量,最后将目标图像内的稀疏系数向量合并用于分类。与传统的特征袋模型和基于l1范数稀疏编码的特征袋 方法...
  • 回归/套索回归/弹性网络回归、梯度下降、Sigmoid/Softmax、数据升维……0 前言1 回归:线性回归1.1(多元)线性回归的损失函数1.1.1 最大似然估计与最小二乘1.1.2 代价函数的解析解,λ扰动1.2 复杂度惩罚因子...
  • 交叉验证和自举弹性网惩罚回归 创建者:Federico Calesella,Silvia Cazzetta,Federica Colombo和Benedetta Vai IRCCS圣拉斐尔科学研究所神经科学系精神病学和临床心理生物学部门,意大利米兰 目录 1.项目概述 该...
  • • 线性回归算法(基础线性回归、ridge回归、lasso回归弹性网络)、多项式回归算法 ------ 线性的,数据是线性数据。 • 神经网络 • 回归树(CART分类回归树,回归预测结果是分段函数)和 随机森林...
  • 机器学习中的分类模型和回归模型

    千次阅读 2018-06-20 16:34:44
    机器学习中的分类模型 1.KNN 2.感知机 3.朴素贝叶斯法 4.决策树 5.逻辑斯谛回归模型 6.SVM 7.AdaBoost 8.随机森林 9.贝叶斯网络 10.神经网络 机器学习中的回归模型 1.线性回归 2.多项式回归 3.岭...
  • 上一篇文章说到,我们可以用线性回归做预测,但显然现实生活中不止有预测的问题还有分类的问题。我们可以从预测值的类型上简单区分:连续变量的预测为回归,离散变量的预测为分类。 一、逻辑回归:二分类 1.1 理解...
  • 最近在使用pyspark来进行spark编程,之前对这个没有了解过,所以接下来需要多花点时间学习这个模块了,今天主要是简单地基于官方给出来实例来实践一下逻辑回归分类模型,pyspark提供的逻辑回归分类模型主要包括:二...
  • Spark机器学习之分类回归

    千次阅读 2017-04-07 21:21:32
    本页面介绍了分类回归的算法。 它还包括讨论特定类别的算法的部分,如线性方法,树和集合体。 目录 分类 Classification 逻辑回归 Logistic regression 二项式逻辑回归 Binomial logistic regression 多项...
  • scikit-learn代码实现SVM分类与SVR回归以及调参

    万次阅读 多人点赞 2019-09-19 21:50:34
    分类分类: from sklearn.model_selection import train_test_split from sklearn.svm import SVC import mglearn.datasets import matplotlib.pyplot as plt #forge数据集是一个二维二分类数据集 X,y=mglearn...
  • 创建一个data-frame,schema应当应用于RDD(弹性分布式数据集,Resilient Distributed Datasets) val schemaString = "Id Tags Text" val schema = StructType( schemaString.split( " " ).map(field...
  • Spark-MLlib之分类回归算法

    千次阅读 2018-08-29 12:01:46
    逻辑回归是预测分类响应的常用方法。广义线性模型的一个特例是预测结果的概率。在spark.ml逻辑回归中,可以使用二项Logistic回归来预测二元结果,或者可以使用多项Logistic回归来预测多类结果。使用该family 参数在...
  • 本文是机器学习系列的第三篇,算上前置机器学习系列是第八篇。本文的概念相对简单,主要侧重于代码实践。上一篇文章说到,我们可以用线性回归做预测,但显然现实生活中不止有预测的问题还有分类的问题。...
  • 分类分类:from sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCimport mglearn.datasetsimport matplotlib.pyplot as plt#forge数据集是一个二维二分类数据集X,y=mglearn.tools....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,407
精华内容 1,762
关键字:

弹性网回归分类