ISLR系列:(3)重采样方法 Cross-Validation & Bootstrap
Resampling Methods
此博文是 An Introduction to Statistical Learning with Applications in R 的系列读书笔记,作为本人的一份学习总结,也希望和朋友们进行交流学习。
该书是The Elements of Statistical Learning 的R语言简明版,包含了对算法的简明介绍以及其R实现,最让我感兴趣的是算法的R语言实现。
【转载时请注明来源】:http://www.cnblogs.com/runner-ljt/
Ljt 勿忘初心 无畏未来
作为一个初学者,水平有限,欢迎交流指正。
本节将介绍两种最常用的重采样方法:交叉验证(cross-validation)和拔靴法(bootstrap).
由于训练误差可以很容易的计算,但是测试误差并不能被直接计算,训练误差一般是不能等同于测试误差,而且训练误差经常低估测试误差。
所以,通过交叉验证的技术,将样本分割,一部分作为训练样本,一部分作为测试样本,通过计算在测试样本上的误差率来估计测试误差,常见的
交叉验证技术有留一交叉验证和K折交叉验证法;拔靴法是利用有限的样本资料经由多次重复抽样,重新建立起足以代表母体样本分布之新样本,
其主要特点是能够被广泛的应用到各种统计学习方法中,特别是在对难以估计或者统计软件不能直接给出结果的变量的估计中。
Cross-Validation
K折交叉验证: cv.glm(data,glmfit,K)
glmfit为包含广义线性模型结果的glm类
返回两个值的向量,第一个是对预测量的交叉验证的一般估计,第二个是调整后的交叉验证估计,调整的部分主要是弥补没有使用留一交叉验证而带来的偏差。
>
> library(ISLR)
> library(boot)
> head(Auto)
mpg cylinders displacement horsepower weight acceleration year origin name
1 18 8 307 130 3504 12.0 70 1 chevrolet chevelle malibu
2 15 8 350 165 3693 11.5 70 1 buick skylark 320
3 18 8 318 150 3436 11.0 70 1 plymouth satellite
4 16 8 304 150 3433 12.0 70 1 amc rebel sst
5 17 8 302 140 3449 10.5 70 1 ford torino
6 15 8 429 198 4341 10.0 70 1 ford galaxie 500
> glm.fit<-glm(mpg~horsepower,data=Auto)
> #留一交叉验证LOOCV
> cv.err<-cv.glm(Auto,glm.fit)
> cv.err$delta
[1] 24.23151 24.23114
>
> glm.fit2<-glm(mpg~horsepower+horsepower^2,data=Auto)
> #K折交叉验证
> cv.err10<-cv.glm(Auto,glm.fit2,K=10)
> cv.err10$delta
[1] 24.07636 24.06930
>
The Bootstrap
主要步骤:
1.建立计算待估计统计量的函数
2.运用boot函数从样本中有重复的取样
boot(data,statistic,R)
statistic的参数必须包含计算的数据集data和测试数据的索引index , R为bootstrap的重复次数
结果返回待统计量的估计值original和其标准差std.error
> library(boot)
>#建立待估计变量的计算函数
> alpha.fn<-function(data,index)
+ {
+ X=data$X[index]
+ Y=data$Y[index]
+ return((var(Y)-cov(X,Y))/(var(X)+var(Y)-2*cov(X,Y)))
+ }
>
>
> #有重复的取样
> boot(Portfolio,alpha.fn,R=1000) ORDINARY NONPARAMETRIC BOOTSTRAP Call:
boot(data = Portfolio, statistic = alpha.fn, R = 1000) Bootstrap Statistics :
original bias std. error
t1* 0.5758321 6.936399e-05 0.08868935
>
ISLR系列:(3)重采样方法 Cross-Validation & Bootstrap的更多相关文章
- 交叉验证(Cross Validation)方法思想简介
以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- 交叉验证(Cross Validation)原理小结
交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...
- 交叉验证 Cross validation
来源:CSDN: boat_lee 简单交叉验证 hold-out cross validation 从全部训练数据S中随机选择s个样例作为训练集training set,剩余的作为测试集testin ...
- Cross Validation done wrong
Cross Validation done wrong Cross validation is an essential tool in statistical learning 1 to estim ...
- 交叉验证(cross validation)
转自:http://www.vanjor.org/blog/2010/10/cross-validation/ 交叉验证(Cross-Validation): 有时亦称循环估计, 是一种统计学上将数据 ...
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: . 该分类器的精确率怎么样? . 该分 ...
- Cross Validation(交叉验证)
交叉验证(Cross Validation)方法思想 Cross Validation一下简称CV.CV是用来验证分类器性能的一种统计方法. 思想:将原始数据(dataset)进行分组,一部分作为训练 ...
- S折交叉验证(S-fold cross validation)
S折交叉验证(S-fold cross validation) 觉得有用的话,欢迎一起讨论相互学习~Follow Me 仅为个人观点,欢迎讨论 参考文献 https://blog.csdn.net/a ...
随机推荐
- python脚本批量生成数据
在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...
- JavaScript 比较和逻辑运算符
比较和逻辑运算符用于测试 true 或者 false. 比较运算符 比较运算符在逻辑语句中使用,以测定变量或值是否相等. 给定 x=5,下面的表格解释了比较运算符: 实例 »实例 » 大于 大于或等于 ...
- Tinyhttpd for Windows
TinyHTTPd forWindows 前言 TinyHTTPd是一个开源的简易学习型的HTTP服务器,项目主页在:http://tinyhttpd.sourceforge.net/,源代码下载:h ...
- NestedScrollView嵌套ViewPager
NestedScrollView嵌套ViewPager 效果图 重写ViewPager package com.kongqw.kbox.view; import android.content.Con ...
- LAB颜色空间各通道的取值范围
简介 LAB颜色空间在计算机视觉中经常被使用,知道L,A,B三个通道的取值范围有一定的意义. OpenCV获取LAB取值范围 下面是一段实验代码,用于获取LAB的取值范围. 基本思路是,排列组合所有R ...
- Android app内存管理的16点建议
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiopshared memory(共享内存) Android通过下面几个方式在不同的Process中来共享RAM: 每一个app的proc ...
- Win7下安装linux虚拟机
关于如何在Win7下搭建linux学习环境,特在此分享下. 一.工具 1.VMware-workstation-full-9.0.0-812388.exe 下载地址:http://pan. ...
- Android开发基础规范(一)
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52602487 前言:Androi ...
- Java的多态及注意事项
什么是多态: 多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序.在Java中,所有的方法都是通过动态绑定实现多态的.将一个方法调用同一个方法主体关联起来被称作绑定.动态绑定的含义是在运行 ...
- UNIX网络编程——揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...