年初的时候希望今年多学一点python,但是没想到Stanford大学的公开课程这么有意思,提供免费教材及data,免费的教材写得通俗易懂:An Introduction to Statistical Learning with Applications in R。看名字就知道是用R来完成实验的,搞得我欲罢不能,花了些时间来学,实际上没看什么视频,主要看ppt和教程中的实验部分,有点意思,希望能跟完...
其中第1~3部分我很快略过了,从第4部分开始,记录一点笔记,纯流水帐。
Lec5 Resampling Methods
Resampling methods are an indispensable tool in modern statistics. They involve repeatedly drawing samples from a training set and refitting a model of interest on each sample in order to obtain additional information about the fitted model.
为什么有resampling这个奇怪的东西存在呢?也许是过去获得数据的成本太高了?Wikipedia上有个相关的词条,介绍了很多方法,不过看得迷迷糊糊的。介绍了两种方法two resampling methods:cross-validation and the bootstrap.
- Cross validation
Wiki上居然有中文词条,但是不如一个中文博客讲得很详细。大概意思是有一堆数据,把其中一部分作为train set,另一部分作为validation set,那么如何去选择哪些作为train哪些作为validation就很重要了,为了保证结论能反应真实情况,研究出了很多种方法,比如K-fold Cross-validation(K-fold CV),把数据分成K份,其中1份作为validation set,剩下的K-1份就是train set,那么让这K份数据中的每一份数据都当一次validation set,那么最后的结果就比较容易让人接受了。实际上关于CV的几种方法均可以认为是K-fold的变形,比如Hold-out Method可以认为是2-fold CV,而Leave-One-Out Cross Validation(LOOCV)可以认为是n-fold CV.
这么做的目的是什么呢?用train set对分类器进行训练,利用volidation来测试模型(model),以此来做为评价分类器的性能指标,实质也就是用来评价model的好坏的。比如说选择的高阶多项式模型中,到底该用几阶?看上去有道理,不过感觉要完成这样一项工作,需要的计算量不小。
需要注意的问题是,只有train set才可以用在model的训练过程中,validation set则必须在模式完成之后才被用来评估模式优劣的依据。也就是说,train set和validation set必须要分开,不能有数据既属于train又属于validation。
- Bootstrap
似乎搞明白了什么是Bootstrap。有一个初始数据集data,假如数据大小是N,通过Bootstrap从数据集中抽取出N个数据,这N个数据有可能和原来的数据集一模一样(当N很大时,这种可能性比较小),也可能不一样,但新数据集中的任意数据均来自原来的数据集,比如其中有x个data[i],有y个data[j],但是没有data[k],只要满足总数等于N,且每一个数据都来自原始的data数据集(Each bootstrap data set contains n observations, sampled with replacement from the original data set),也就是不需要去重新收集新的数据了。通过多次抽取,比如100次、1000次抽取,得到的每一个新数据集都可以用来做各种估计和运算,最后将所有的抽样的估计值进行算术平均,会很接近真实值,标准误SE(standard error)也很低。
Bootstrap需要谨慎应用:In more complex data situations, figuring out the appropriate way to generate bootstrap samples can require some thought.
In cross-validation, each of the K validation folds is distinct from the other K-1 folds used for training: there is no overlap. This is crucial for its success.
To estimate prediction error using the bootstrap, we could think about using each bootstrap dataset as our training sample, and the original sample as our validation sample.