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. Django REST Framework 最佳实践

    Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. 为什么要使用REST framework? - 在线可视的API,对于赢得你的开发者们十分有用 - 验 ...

  2. JavaScript 流程语句知识脑图

  3. comtypes加word 2013批量将pdf转换为doc

    office 2013很强大. import os import sys import re import comtypes.client wdFormatPDF = 17 def covx_to_p ...

  4. MySQL之sql文件的导入导出

    window下 1.导出整个数据库(无需登录mysql)mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > d ...

  5. 初始化openresty开发环境

    参考链接 https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 初始化git ...

  6. 安卓 新版本 获取wifi状态网络是否可用等

    写下这篇文章目的:当我学习的和百度看看如何获取网络状态 发现都是一些比较老的方法 API23已结过时 所以在此写下记录 ,我不明白国内为什么那么少 那么我们来看看旧方法 package com.che ...

  7. JS——2048(支持触屏及键盘操作)

    <html> <head> <title>2048</title> <style type="text/css"> ta ...

  8. Linux 环境下一些常用命令(四)

    转自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 31. 命令: rm 'rm ...

  9. TOP-N类查询

    Top-N查询 --Practices_29:Write a query to display the top three earners in the EMPLOYEES table. Displa ...

  10. PGM:无向图模型:马尔可夫网

    http://blog.csdn.net/pipisorry/article/details/52489321 马尔可夫网 马尔可夫网在计算机视觉领域通常称为马尔可夫随机场(Markov random ...