Linear Model Selection and Regularization

此博文是 An Introduction to Statistical Learning with Applications in R 的系列读书笔记,作为本人的一份学习总结,也希望和朋友们进行交流学习。

该书是The Elements of Statistical Learning 的R语言简明版,包含了对算法的简明介绍以及其R实现,最让我感兴趣的是算法的R语言实现

【转载时请注明来源】:http://www.cnblogs.com/runner-ljt/

Ljt   勿忘初心  无畏未来

作为一个初学者,水平有限,欢迎交流指正。


当自变量的维度较高时,一方面可能使得样本量偏少(p>n),另一方面自变量之间很可能会出现多重共线性现象。多重共线性会导致最小二乘的

回归系数不稳定,方差较大(这是因为系数矩阵与其转置矩阵的乘积矩阵不可逆)。收缩法/正则化(shrinkage/regularization)主要是建立包含全体

变量的模型的同时加上对估计系数的限制,即使系数的估计向0收缩。

岭回归从矩阵求解的角度看就是修复病态矩阵X'X,多重共线性导致|X'X|趋于0,那么就给X'X加上一个正常数矩阵 kI (k>0),则X'X+kI接近奇异

的程度就会比X'X接近奇异的程度小得多,从而使回归系数的估计稍有偏差,但是估计的稳定性却可能明显提高;从最小二乘的角度看就是加上一个对

回归系数的二范数惩罚项的有偏最小二乘。

岭回归的一个缺点是在建模时对于引入的全体自变量,罚约束项可以收缩这些变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大),这

对于模型精度影响不大,但给模型的解释造成了困难。(岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

Lasso回归是引入回归系数的一范数惩罚项的有偏最小二乘回归,Lasso回归能够使得一些变量的系数为零,从而可以实现变量变量选择的问题。

Lasso回归虽然和岭回归的差别在于一个是二范数的约束另一个是一范数的约束,一范数约束能够使得一些变量的回归系数变为0,但是由于其不

连续,求解上便比二范数的要困难的多,Lasso全称为The Least Absolute Shrinkage and Selection Operator,中文翻译为 ‘套索’ ,是目前很多大

牛研究的热门领域。

下图可以解释Lasso回归可以使得一些变量的回归系数为0,而岭回归只能使回归系数趋于0的原因。


Ridge Regression and the Lasso

glmnet(x, y, family=c("gaussian","binomial","poisson","multinomial"),alpha = 1,nlambda = 100,lambda=NULL)

X:自变量矩阵

Y:因变量

family=c("gaussian","binomial","poisson","multinomial") :

当Y为数值型时,family为 "gaussian" 或 "binomial"

当Y为两水平的因子类型时,family为 "binomial"

当Y为多水平的因子类型时,family为 "multinomial"

alpha:  0<α<1 : (1-α)/2||β||_2^2+α||β||_1.  ;   alpha=0为岭回归,alpha=1为 Lasso回归

nlambda : lambda的个数,默认为100个

lambda:惩罚系数 λ ,可以人工提供,默认为系统提供

cv.glmnet(x, y, lambda, nfolds):Does k-fold cross-validation for glmnet

predict(object, newx, s = NULL, type=c("link","response","coefficients","nonzero","class"))

object :glmnet类

newx :用于预测的新的X矩阵,该参数不能用于type="coefficients"的情况

s :用于预测的 lambda

type:link,response 返回结果为因变量的预测结果;coefficients 返回结果为模型系数,此时不需要参数newx

> library(ISLR)
> library(glmnet)
> Hitters<-na.omit(Hitters)
>
> #运用交叉验证的方法选择最优的岭回归
> set.seed()
> x<-model.matrix(Salary~.,Hitters)[,-]
> y<-Hitters$Salary
>
> #交叉验证的岭回归
> cv.out<-cv.glmnet(x,y,alpha=)
> plot(cv.out)
>
> names(cv.out)
[] "lambda" "cvm" "cvsd" "cvup" "cvlo" "nzero" "name" "glmnet.fit" "lambda.min" "lambda.1se"
>
> bestlam<-cv.out$lambda.min
> bestlam
[] 238.0769
>
> predict(cv.out,type='coefficients',s=bestlam)
x sparse Matrix of class "dgCMatrix" (Intercept) 10.35569016
AtBat 0.04633830
Hits 0.96376522
HmRun 0.27163149
Runs 1.10118079
RBI 0.87606196
Walks 1.75331031
Years 0.50454900
CAtBat 0.01124891
CHits 0.06274116
CHmRun 0.43896753
CRuns 0.12471202
CRBI 0.13253839
CWalks 0.03672947
LeagueN 25.75710229
DivisionW -88.36043520
PutOuts 0.18483877
Assists 0.03847012
Errors -1.68470904
NewLeagueN 7.91725602
>
> #交叉验证的Lasso回归
> cv.outlas<-cv.glmnet(x,y,alpha=)
> plot(cv.outlas)
> bestlam<-cv.outlas$lambda.min
> bestlam
[] 2.935124
> predict(cv.outlas,type='coefficients',s=bestlam)
x sparse Matrix of class "dgCMatrix" (Intercept) 117.5258439
AtBat -1.4742901
Hits 5.4994256
HmRun .
Runs .
RBI .
Walks 4.5991651
Years -9.1918308
CAtBat .
CHits .
CHmRun 0.4806743
CRuns 0.6354799
CRBI 0.3956153
CWalks -0.4993240
LeagueN 31.6238174
DivisionW -119.2516409
PutOuts 0.2704287
Assists 0.1594997
Errors -1.9426357
NewLeagueN .
>  

 

ISLR系列:(4.2)模型选择 Ridge Regression & the Lasso的更多相关文章

  1. 机器学习方法:回归(二):稀疏与正则约束ridge regression,Lasso

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. "机器学习方法"系列,我本着开放与共享(open and share)的精神撰写,目的是 ...

  2. ISLR系列:(4.1)模型选择 Subset Selection

    Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...

  3. ISLR系列:(4.3)模型选择 PCR & PLS

    Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...

  4. 机器学习:模型泛化(岭回归:Ridge Regression)

    一.基础理解 模型正则化(Regularization) # 有多种操作方差,岭回归只是其中一种方式: 功能:通过限制超参数大小,解决过拟合或者模型含有的巨大的方差误差的问题: 影响拟合曲线的两个因子 ...

  5. Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优

    Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...

  6. [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族

    声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...

  7. L1,L2范数和正则化 到lasso ridge regression

    一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数  表示向量xx中非零元素的个数. L1范数  表示向量中非零元素的绝对值之和. L2范数  表 ...

  8. 岭回归(Ridge Regression)

    一.一般线性回归遇到的问题 在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在: 预测精度:这里要处理好这样一对为题,即样本的数量和特征的数量 时,最小二乘回归会有较小的方差 时, ...

  9. 线性回归——lasso回归和岭回归(ridge regression)

    目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...

随机推荐

  1. AIX 命令

    1,[ctrl]+h 删除命令 2, set -o emacs后: [ctrl]+p 看上条命令 [ctrl]+n 看下条命令 两次[esc] 自动补全 3, set -o vi 后,可以按照vi编辑 ...

  2. PHP 安装

    PHP 安装 您需要做什么? 为了开始使用 PHP,您可以: 找一个支持 PHP 和 MySQL 的 Web 主机 在您自己的 PC 机上安装 Web 服务器,然后安装 PHP 和 MySQL 使用支 ...

  3. Docker常见仓库MySQL

    MySQL 基本信息 MySQL 是开源的关系数据库实现. 该仓库提供了 MySQL 各个版本的镜像,包括 5.6 系列.5.7 系列等. 使用方法 默认会在 3306 端口启动数据库. $ sudo ...

  4. JavaScript 错误处理 Throw、Try 和 Catch

    try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. JavaScript 错误 当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错 ...

  5. DISC社交风格测试题--老虎 孔雀 考拉 猫头鹰

    凭直觉,迅速回答 "我是谁",而不是"我应该是谁,或我想我是谁". 1.关于人生观,我的内心其实是: A 希望能够有尽量多的人生体验,所以会有非常多样化的想法. ...

  6. YAML 在Python中的配置应用

    环境搭建 YAML语法 语法规则 数据结构 列表数组 原子量 YAML应用 案例 load dump 总结 YAML是一个堪比XML,JSON数据格式的更加方便,简洁的,易于人眼阅读的序列化数据格式. ...

  7. Effective C++ ——实现

    条款26:尽可能延后变量定义式的出现时间 当你定义一个变量的时候就要保证这个变量能够在程序中使用到,不要定义无意义的变量,这样就要求我们最好是在变量使用到的时候才做定义,因为如果一个变量定义了却不使用 ...

  8. Nginx模块之SessionSticky

    0 工作原理 Session Sticky 模块在upstream 返回响应后,向客户的浏览器写入 Cookie ,默认名为route ,保存的内容是一个 md5 码. 之后,模块接收到客户浏览器的请 ...

  9. Win 10 下 android studio显示 Intel haxm无法安装,以及VT-X和hyper-x的冲突问题

               我 的电脑是神舟战神k650c i7 D4,处理器是Intel core i7 4710-MQ,系统是win 10的 我心血来潮想学习一下安卓开发,就首先安装了android s ...

  10. 后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异

    「后端分布式系列」前面关于 HDFS 的一些文章介绍了它的整体架构和一些关键部件的设计实现要点. 我们知道 HDFS 最早是根据 GFS(Google File System)的论文概念模型来设计实现 ...