ISLR系列:(4.2)模型选择 Ridge Regression & the Lasso
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的更多相关文章
- 机器学习方法:回归(二):稀疏与正则约束ridge regression,Lasso
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. "机器学习方法"系列,我本着开放与共享(open and share)的精神撰写,目的是 ...
- ISLR系列:(4.1)模型选择 Subset Selection
Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...
- ISLR系列:(4.3)模型选择 PCR & PLS
Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...
- 机器学习:模型泛化(岭回归:Ridge Regression)
一.基础理解 模型正则化(Regularization) # 有多种操作方差,岭回归只是其中一种方式: 功能:通过限制超参数大小,解决过拟合或者模型含有的巨大的方差误差的问题: 影响拟合曲线的两个因子 ...
- Spark2.0机器学习系列之2:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优
Spark中的CrossValidation Spark中采用是k折交叉验证 (k-fold cross validation).举个例子,例如10折交叉验证(10-fold cross valida ...
- [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...
- L1,L2范数和正则化 到lasso ridge regression
一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数 表示向量xx中非零元素的个数. L1范数 表示向量中非零元素的绝对值之和. L2范数 表 ...
- 岭回归(Ridge Regression)
一.一般线性回归遇到的问题 在处理复杂的数据的回归问题时,普通的线性回归会遇到一些问题,主要表现在: 预测精度:这里要处理好这样一对为题,即样本的数量和特征的数量 时,最小二乘回归会有较小的方差 时, ...
- 线性回归——lasso回归和岭回归(ridge regression)
目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...
随机推荐
- ACM Meteor Shower
贝茜听到一场非同寻常的流星雨( meteor shower)即将来临;有报道称这些流星将撞击地球并摧毁它们所击中的任何东西.为了安全起见(Anxious for her safety), ,她发誓(v ...
- centos7下git安装
一.git安装1.查看系统是否已经安装git git --version 2.CentOS7 yum 安装git yum install git 3.安装成功
- PHP 安装
PHP 安装 您需要做什么? 为了开始使用 PHP,您可以: 找一个支持 PHP 和 MySQL 的 Web 主机 在您自己的 PC 机上安装 Web 服务器,然后安装 PHP 和 MySQL 使用支 ...
- Docker 删除容器
可以使用 docker rm 来删除一个处于终止状态的容器. 例如 $sudo docker rm trusting_newton trusting_newton 如果要删除一个运行中的容器,可以添加 ...
- 存出和载入Docker镜像
存出镜像 如果要导出镜像到本地文件,可以使用 docker save 命令. $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL ...
- Java语言程序设计-Markdown格式作业模板
Markdown格式作业模板如下,大家可以直接复制粘贴使用. 注意:作业中不能只写答案,题目本身也要出现.. # 1. 本章学习总结 你对于本章知识的学习总结 # 2. 书面作业 **Q1 java ...
- ML学习分享系列(1)_计算广告小窥[上]
原作:面包包包包包包 修改:寒小阳 && 龙心尘 时间:2016年1月 出处: http://blog.csdn.net/breada/article/details/50572914 ...
- [OpenCV] Write & Read files
例如写 KeyPoint向量,以及他的描述矩阵. // ... vector<KeyPoint> key_points; Mat descriptors; // ... fs.open(o ...
- Swift基础之两指拉动图片变大变小
我们在使用APP的时候,有时会发现有些图片可以通过两指进行放大.缩小,今天就实现这样的一种效果,比较简单,不喜勿喷.... var imageVi:UIImageView! = nil var ...
- uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟 ...