精华内容
下载资源
问答
  • 2020-10-24 09:53:48

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

    更好的替代方法是``惩罚回归'',可以通过在方程中添加约束来创建线性惩罚模型,该模型因变量过多而受到惩罚(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
    更多相关内容
  • 交叉验证和自举弹性网惩罚回归 创建者:Federico Calesella,Silvia Cazzetta,Federica Colombo和Benedetta Vai IRCCS圣拉斐尔科学研究所神经科学系精神病学和临床心理生物学部门,意大利米兰 目录 1.项目概述 该...
  • 线性回归、lasso回归、岭回归以及弹性网络的系统解释声明背景介绍概述线性回归模型函数及损失函数线性回归算法多项式回归(线性回归的推广)广义线性回归(线性回归的推广)岭回归(Ridge回归)lasso回归为什么lasso...

    声明

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

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

    背景介绍

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

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

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

    概述

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

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

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

    线性回归算法

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

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

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

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

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

    岭回归(Ridge回归)

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

    lasso回归

    Ridge回归在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。有没有折中一点的办法呢?即又可以防止过拟合,同时克服Ridge回归模型变量多的缺点呢?有,这就是下面说的Lasso回归。
     Lasso回归有时也叫做线性回归的L1正则化,和Ridge回归的主要区别就是在正则化项,Ridge回归用的是L2正则化,而Lasso回归用的是L1正则化。Lasso回归的损失函数表达式如下: J ( θ ) = 1 2 n ( X θ − Y ) ⊺ ( X θ − Y ) + α ∣ ∣ θ ∣ ∣ 1 J(\theta)=\dfrac{1}{2n}(X\theta−Y)^\intercal(X\theta−Y)+\alpha||\theta||_1 J(θ)=2n1(XθY)(XθY)+αθ1其中 n n n为样本个数, α \alpha α为常数系数,需要进行调优。 ∣ ∣ θ ∣ ∣ 1 ||\theta||_1 θ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(等同于上文中 θ 1 、 θ 2 \theta_1、\theta_2 θ1θ2。由于岭回归是在线性回归损失函数中加入了系数的L2正则项,lasso回归是在线性回归损失函数中加入了系数的L1正则项,所以可以得到下图,分别展示了岭回归和lasso回归系数的解,
    在这里插入图片描述
    可以清晰地看到:求解的交点不再是最小二乘的最小值(红点),而变成了与正则项的交点(黄点)。这个区别可以从二维图中更好地观察出来:岭回归中两个图形(没有棱角)的交点永远不会落在两个轴上,而LASSO回归中,正则化的几何图形是有棱角的,可以很好的让交点落在某一个轴上。这种稀疏化的不同也导致了LASSO回归可以用于特征选择(让特征权重变为0从而筛选掉特征),而岭回归却不行。

    弹性网络(Elastic Net)

    介绍完lasso回归和ridge回归,弹性网络就很简单了,损失函数如下: J ( θ ) = 1 2 ( X θ − Y ) ⊺ ( X θ − Y ) + r α ∣ ∣ θ ∣ ∣ 1 + 1 − r 2 α ∣ ∣ θ ∣ ∣ 2 2 J(\theta)=\dfrac{1}{2}(Xθ−Y)^\intercal(Xθ−Y)+r\alpha||\theta||_1+\dfrac{1−r}2\alpha||\theta||_2^2 J(θ)=21(XθY)(XθY)+rαθ1+21rαθ22使用这种方式方法所得到的模型就像纯粹的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
    展开全文
  • 主要介绍了用tensorflow实现弹性网络回归算法
  • 在一定条件下,它可以恢复一组非零权重的精确集 弹性网络 1、弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。 2、这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,...

    普通最小二乘法

    理论:

    42d606ef7b178ec316da7569b506692b.png

    损失函数:

    f527bfc2e18e48b5458de74b46a1df87.png

    权重计算:

    276c4785bf70c309f085c1298f55d6d9.png

    1、对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性。

    2、当各项是相关的,且设计矩阵 X的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差。

    例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity)的情况可能真的会出现。

    使用:

    from sklearn import datasets, linear_model

    regr = linear_model.LinearRegression()

    reg.fit(X_train, y_train)

    岭回归

    理论:

    损失函数:

    bb60fab8c6101b3057b48e02b7b7d541.png

    其中阿尔法大于0,它的值越大,收缩量越大,这样系数对公线性的鲁棒性也更强

    当X矩阵不存在广义逆(即奇异性),最小二乘法将不再适用。可以使用岭回归

    X矩阵不存在广义逆(即奇异性)的情况:

    1)X本身存在线性相关关系(即多重共线性),即非满秩矩阵。

    当采样值误差造成本身线性相关的样本矩阵仍然可以求出逆阵时,此时的逆阵非常不稳定,所求的解也没有什么意义。

    2)当变量比样本多,即p>n时.

    岭迹图:

    岭迹图作用:

    1)观察λ较佳取值;

    2)观察变量是否有多重共线性;

    在λ很小时,W很大,且不稳定,当λ增大到一定程度时,W系数迅速缩小,趋于稳定。

    λ的选择:一般通过观察,选取喇叭口附近的值

    岭参数的一般选择原则

    选择λ值,使到

    1)各回归系数的岭估计基本稳定;

    2)用最小二乘估计时符号不合理的回归系数,其岭估计的符号变得合理;

    3)回归系数没有不合乎实际意义的值;

    4)残差平方和增大不太多。 一般λ越大,系数β会出现稳定的假象,但是残差平方和也会更大

    岭回归选择变量的原则(仅供参考)

    1)在岭回归中设计矩阵X已经中心化和标准化了,这样可以直接比较标准化岭回归系数的大小。可以剔除掉标准化岭回归系数比较稳定且值很小的自变量。

    2)随着λ的增加,回归系数不稳定,震动趋于零的自变量也可以剔除。

    3)如果依照上述去掉变量的原则,有若干个回归系数不稳定,究竟去掉几个,去掉哪几个,这无一般原则可循,这需根据去掉某个变量后重新进行岭回归分析的效果来确定。

    使用:

    import numpy as np

    import matplotlib.pyplot as plt

    from sklearn import linear_model

    # X is the 10x10 Hilbert matrix

    X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])

    y = np.ones(10)

    # #############################################################################

    # Compute paths

    n_alphas = 200

    alphas = np.logspace(-10, -2, n_alphas)

    coefs = []

    for a in alphas:

    ridge = linear_model.Ridge(alpha=a, fit_intercept=False)

    ridge.fit(X, y)

    coefs.append(ridge.coef_)

    # #############################################################################

    # Display results

    ax = plt.gca()

    ax.plot(alphas, coefs)

    d4b444980896da758d37c95a7b0a82b9.png

    Lasso回归

    理论:

    维数灾难:

    何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。

    在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长。

    如下所示,当数据空间维度由1增加为3,最明显的变化是其所需样本增加;换言之,当样本量确定时,样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3*3,则样本密度为12/9=1.33,在三维空间下样本密度为12/27=0.44。

    设想一下,当数据空间为更高维时,X=[x1x1,x2x2,….,xnxn]会怎么样?

    1、需要更多的样本,样本随着数据维度的增加呈指数型增长;

    2、数据变得更稀疏,导致数据灾难;

    3、在高维数据空间,预测将变得不再容易;

    4、导致模型过拟合。

    数据降维:

    对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:1)增加样本量;2)减少样本特征,而对于现实情况,会存在所能获取到的样本数据量有限的情况,甚至远小于数据维度,即:d>>n。如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等。

    主成分分析作为一种数据降维方法,其出发点是通过整合原本的单一变量来得到一组新的综合变量,综合变量所代表的意义丰富且变量间互不相关,综合变量包含了原变量大部分的信息,这些综合变量称为主成分。主成分分析是在保留所有原变量的基础上,通过原变量的线性组合得到主成分,选取少数主成分就可保留原变量的绝大部分信息,这样就可用这几个主成分来代替原变量,从而达到降维的目的。

    但是,主成分分析法只适用于数据空间维度小于样本量的情况,当数据空间维度很高时,将不再适用。

    Lasso是另一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著性变量,将不显著的变量直接舍弃。

    目标函数:

    79b9e7a1a5470a5ed4444d0f1b68013c.png

    1、Lasso 是估计稀疏系数的线性模型。

    2、它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。 因此,Lasso 及其变体是压缩感知领域的基础。 在一定条件下,它可以恢复一组非零权重的精确集

    弹性网络

    1、弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。

    2、这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,但是它仍然保持 一些像 Ridge 的正则性质。我们可利用 l1_ratio 参数控制 L1 和 L2 的凸组合。

    3、弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。

    4、在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。

    损失函数:

    4ce8717aeb265046f05cfe42793fbd81.png

    使用:

    from sklearn.linear_model import ElasticNet

    enet = ElasticNet(alpha=0.2, l1_ratio=0.7)    #alpha=α   l1_ratio=ρ

    展开全文
  • : [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回归的效果好,比岭回归的效果差。
    #当然我们可以调整参数,会得到不同结果。
    
    
    展开全文
  • 这两种回归主要针对特征之间存在多重共线性或者特征数多于样本量的情况。话句话说就是特征向量组成的矩阵不是一个满秩矩阵(特征数大于对应矩阵的秩) 岭回归回归的代价函数是经过L2正则化(正则化可以降低模型...
  • 线性回归 算法简介 线性回归,就是利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析方法。 线性回归试图学得: 求解w和b的关键在于衡量f(xi)与yi之间的差别.由于均方...
  • 利用Python语言实现了弹性网络回归实现
  • 2.弹性回归引擎:由于列表已经滑动到顶端(末端)需要再往下(往上)继续离开顶部(底部)一些距离,表示别表已无内容,列表到头。当时做symbian的时候不知道Deceleration这个术语,本人只是从效果上看是惯性滑动,...
  • LASSO回归 LASSO是由1996年Robert Tibshirani首次提出,该方法是一种压缩估计。与岭回归类似,LASSO也是通过构造一个惩罚函数得到一个性能更好的模型。相比于岭回归,LASSO更极端。它通过惩罚函数压缩回归系数,使得...
  • 机器学习算法系列(六)- 弹性网络回归算法(Elastic Net Regression Algorithm)
  • sklearn值弹性网算法应用以及线性回归模型算法总结 前言: 本文介绍另一种回归模型算法–弹性网,它结合了岭回归和LASSO算法,应该来说效果比单一的岭回归或者LASSO算法效果更好。 一、线性回归模型算法总结 目前已...
  •  主要介绍了线性回归模型,岭回归,lasso回归弹性网的基础理论。 线性回归模型  线性回归回归分析中最基本的一类回归问题,对于一般的线性回归模型来说,假设预测变量的个数为ppp,样本容量为NNN,则: {yi...
  • 最小二乘回归中,目标函数只考虑了模型对训练样本的拟合程度: 原则上任意复杂的模型能完全拟合训练数据。我们称之为过拟合。 • 过拟合( overfitting ):过于复杂的模型与训练数据拟合得太好,但和测试数据拟合得...
  • 你应该掌握的 7 种回归模型!

    万次阅读 多人点赞 2018-07-19 21:26:56
    线性回归和逻辑回归通常是人们学习预测模型的第一个算法。由于这二者的知名度很大,许多分析人员以为它们就是回归的唯一形式了。而了解更多的学者会知道它们是所有回归模型的主要两种形式。 事实是有很多种回归形式...
  • 线性回归(五)---弹性网络回归

    千次阅读 2020-06-01 15:58:55
    弹性网络回归 弹性网络ElasticNet是同时使用了系数向量的 l1 范数和 l2 范数的线性回归模型,使得可以学习得到类似于Lasso的一个稀疏模型,同时还保留了 Ridge 的正则化属性,结合了二者的优点,尤其适用于有多个...
  • 数据回归-基于图嵌入与弹性网络回归的特征提取算法及其在人脸识别中的应用.pdf
  • 数据回归-基于弹性网的面板数据的分位数回归方法及实证研究.pdf
  • #资源达人分享计划#
  • 尽管自从发现岭回归(RR)以来已经过去了半个世纪,但人们仍认为它无法将“无关紧要”的回归系数设置为零。 因为这是一个数学上难以理解的感知,所以当回归数(p)超过观察数(n)时,它可能会限制RR单独使用RR进行...
  • Regression)及弹性网络(Elastic Net)这三种不同的实现方法对权重进行约束。 岭回归回归(也叫作吉洪诺夫正则化)是线性回归的正则化版:在成 本函数中添加一个等于的正则项。这使得学习中
  • 数据回归-剪切波弹性成像结合超声造影诊断乳腺肿块的多因素Logistic回归分析.pdf
  • 在本文中,我们利用光谱空间信息,提出了一种用于高光谱图像(HSI)分类的新型双层弹性网(ELN 2)回归模型。 提出的模型旨在解决HSI的特殊问题特性,即高光谱像素的高维性,有限的标记样本以及光谱特征的空间变异性...
  • 应该掌握的7种回归模型

    千次阅读 2020-03-06 14:40:27
    应该掌握的7种回归模型 本文转载自博客你应该掌握的7种回归模型!。 线性回归和逻辑回归通常是人们学习预测模型的第一个算法。由于这二者的知名度很大,许多分析人员以为它们就是回归的唯一形式了。而了解更多的...
  • 2.弹性回归引擎:用于列表已经滑动到顶端(末端)需要再往下(往上)移动一些距离,表示别表已经到头。 引擎每隔0.04秒(大约是每秒24帧)就刷新一次,由于是GC绘制,所以每次滑动时需要条用绘制函数。效
  • 在这种情况下,还要一种折中的办法,就是选择弹性网络回归(Elastic Net Regression)。1. lasso回归与岭回归的异同如下,如果已知模型中的很多变量为无关变量,如astrological offset和airspe...
  • 自适应弹性回归的目标跟踪
  • (1)岭回归就是引入L2正则化项 (2)lasso回归就是引入L1正则化项 (3)ElasticNet回归就是引入L1和L2正则化项(lasso和ridge回归组合)。 公式: 2.概念 将下面之前先来了解一下什么叫L0/L1/L2范数 L0:向量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,469
精华内容 4,587
关键字:

弹性回归

友情链接: CVRP_ACO-master.zip