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   勿忘初心  无畏未来

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


前两小节介绍的模型选择方法,要么是选择全体自变量的一个合适子集,要么是使得某些自变量的回归系数收缩为0.这两种方法都是建立

在初始自变量集上,而本小节将要介绍的主成分分析(PCR)和偏最小二乘回归(PLS)是将初始自变量转化为新的变量进行回归的方法。

PCR是一种非监督学习方法,能够有效的降低自变量的维数,消除多重共线性的影响。

PLS是一种新型的多元统计数据分析方法,近十年来,它在理论、方法和应用方面都得到了迅速的发展。密西根大学的弗耐尔教授称偏最小

二乘回归为第二代回归分析方法。不同于PCR,PLS为一种监督式的学习方法,其目的是既找到能够解释自变量同时也能够解释因变量的方向。

偏最小二乘回归=多元线性回归分析+典型相关分析+主成分分析。

PLS有以下优点:

(1)PLS是一种多因变量对多自变量的回归建模方法

(2)能够在自变量存在严重多重共线性的情况下进行回归建模

(3)允许在样本量少于自变量个数的情况下进行建模

(4)最终模型包含所有自变量,易于辨别系统信息和噪声,自变量的回归系数便于解释


  PCR  &  PLS

pcr(formula,data,scale=F,validation = c("none", "CV", "LOO"))

pls(formula,data,scale=F,validation = c("none", "CV", "LOO"))

validation:验证方法   CV: 10折交叉验证  ; LOO :留一验证

输出结果:  CV score : the root mean squared error  均方根误差/标准误差

the percentage of variance explained

validationplot(object,val.type=c('RMSEP','MSEP','R2')) 验证统计量绘图函数

object:mvr对象

val.type=c('RMSEP','MSEP','R2') :  RMSEP:预测均方根误差        ; MSEP:预测均方误差

> library(ISLR)
> library(pls)
> set.seed()
> Hitters<-na.omit(Hitters)
>
> pcr.fit<-pcr(Salary~.,data=Hitters,scale=T,validation='CV')
> summary(pcr.fit)
Data: X dimension:
Y dimension:
Fit method: svdpc
Number of components considered: VALIDATION: RMSEP
Cross-validated using random segments.
(Intercept) comps comps comps comps comps comps comps comps comps comps
CV 348.9 352.2 353.5 352.8 350.1 349.1 349.6 350.9 352.9 353.8
adjCV 348.7 351.8 352.9 352.1 349.3 348.0 348.5 349.8 351.6 352.3
comps comps comps comps comps comps comps comps comps
CV 355.0 356.2 363.5 355.2 357.4 347.6 350.1 349.2 352.6
adjCV 353.4 354.5 361.6 352.8 355.2 345.5 347.6 346.7 349.8 TRAINING: % variance explained
comps comps comps comps comps comps comps comps comps comps comps comps
X 38.31 60.16 70.84 79.03 84.29 88.63 92.26 94.96 96.28 97.26 97.98 98.65
Salary 40.63 41.58 42.17 43.22 44.90 46.48 46.69 46.75 46.86 47.76 47.82 47.85
comps comps comps comps comps comps comps
X 99.15 99.47 99.75 99.89 99.97 99.99 100.00
Salary 48.10 50.40 50.55 53.01 53.85 54.61 54.61
>
> validationplot(pcr.fit,val.type='MSEP')
>
>
>
> set.seed()
> pls.fit<-plsr(Salary~.,data=Hitters,scale=T,validation='CV')
> summary(pls.fit)
Data: X dimension:
Y dimension:
Fit method: kernelpls
Number of components considered: VALIDATION: RMSEP
Cross-validated using random segments.
(Intercept) comps comps comps comps comps comps comps comps comps comps comps comps
CV 346.7 342.3 341.9 343.3 344.2 343.6 340.9 338.4 338.9 337.2 335.5 336.8
adjCV 346.4 341.8 341.2 342.3 342.7 341.9 339.2 336.7 337.1 335.7 334.1 335.1
comps comps comps comps comps comps comps
CV 336.5 335.7 336.1 336.2 336.1 335.9 337.6
adjCV 334.8 334.0 334.4 334.5 334.4 334.2 335.7 TRAINING: % variance explained
comps comps comps comps comps comps comps comps comps comps comps comps comps
X 38.08 51.03 65.98 73.93 78.63 84.26 88.17 90.12 92.92 95.00 96.68 97.68 98.22
Salary 43.05 46.40 47.72 48.71 50.53 51.66 52.34 53.26 53.52 53.77 54.04 54.20 54.32
comps comps comps comps comps comps
X 98.55 98.98 99.24 99.71 99.99 100.00
Salary 54.47 54.54 54.59 54.61 54.61 54.61
>
> validationplot(pls.fit,val.type='MSEP')


ISLR系列:(4.3)模型选择 PCR & PLS的更多相关文章

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

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

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

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

  3. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  4. PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)

    主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...

  5. ML 04、模型评估与模型选择

    机器学习算法 原理.实现与实践——模型评估与模型选择 1. 训练误差与测试误差 机器学习的目的是使学习到的模型不仅对已知数据而且对未知数据都能有很好的预测能力. 假设学习到的模型是$Y = \hat{ ...

  6. Workflow:自定义工作流 之 模型选择

    Workflow:自定义工作流 之 模型选择 背景 毕业5年,做了4个版本的工作流框架,工作流几乎是每个企业应用开发人员必须跨过的门槛(我还没有跨过去),下面简要说一下之前的4个版本,然后重点介绍第5 ...

  7. sklearn 模型选择和评估

    一.模型验证方法如下: 通过交叉验证得分:model_sleection.cross_val_score(estimator,X) 对每个输入数据点产生交叉验证估计:model_selection.c ...

  8. 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)

    怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...

  9. Spark机器学习——模型选择与参数调优之交叉验证

    spark 模型选择与超参调优 机器学习可以简单的归纳为 通过数据训练y = f(x) 的过程,因此定义完训练模型之后,就需要考虑如何选择最终我们认为最优的模型. 如何选择最优的模型,就是本篇的主要内 ...

随机推荐

  1. C++框架_之Qt的窗口部件系统的详解-上

    C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种. ...

  2. Do a web framework ourselves

    step 1: from wsgiref.simple_server import make_server def application(environ, start_response): star ...

  3. Leetcode难度表及解题汇总

    Leetcode难度表及解题汇总 参考网上一份题目难度表,以及本人的解题. Id Question Difficulty Frequency Data Structures Algorithms Bl ...

  4. Android-Chart

    MPAndroidChart 包括折线图.曲线图.柱形图.饼图.K线图等等 我的地址:https://github.com/kongqw/MPAndroidChart 开源地址:https://git ...

  5. Android设置竖屏

    Android设置竖屏(禁止旋转屏) 清单文件,Activity下添加属性 android:screenOrientation="portrait" 如下 <?xml ver ...

  6. 深入解读XML解析

    一.XML是什么?有什么用? XML是指.作为配置文件存在 二.XML的基本语法 1.文档声明:很重要 在编写XML文档时,需要先使用文档声明来声明XML文档.且必须出现在文档的第一行. 作用:告知解 ...

  7. app控件唯一相对Xpath自动生成(增强版uiautomatorviewer)

    作者:cryanimal QQ:164166060 工具由来 前面的一篇博文较详细地介绍了uiautomatorviewer:扫描和分析Android应用程序的UI控件的工具. 熟悉控件获取的同学都知 ...

  8. 2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程

     1  Lucen目录介绍 2  lucene-core-3.6.2.jar是lucene开发核心jar包 contrib  目录存放,包含一些扩展jar包 3  案例 建立第一个Lucene项目 ...

  9. FFmpeg源代码结构图 - 解码

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  10. 13 SQLiteOpenHelper SQLiteDatabase详解

    创建数据库: 1. 创建一个类继承SQLiteOpenHelper 2. 创建继承对象 new SQLiteOpenHelper() 3. 用创建的对象获取可写或者可读的SQLiteDatabase ...