variable selection
变量选择
- what is that
- How to do that
- stepwise
- backward elimination
- forward selection
- stepwise selection
- All subset selection
- Radj2/σ^2R^2_{adj}/\hat{\sigma}^2Radj2/σ^2:
- AIC/BIC
- CV
- CpC^pCp
what is that
对于一个模型,其含有的协变量数量和性质的关系如下图:
MSE[y^(x0)]=Bias[y^(x0)]2+Var[y^(x0)]MSE[\hat{y}(x_0)] = Bias[\hat{y}(x_0)]^2 + Var[\hat{y}(x_0)]MSE[y^(x0)]=Bias[y^(x0)]2+Var[y^(x0)]
所以,在极端的情况下,我们可以牺牲一点偏差(方差)换来更小的方差(偏差)
实际上,变量选择的过程就是权衡取舍的过程
How to do that
stepwise
backward elimination
步骤:
1)将所有可能的协变量一起拟合一个模型,之后再进行所有单个变量的 t 检验,将最不相关的协变量消除;
2)再进行拟合,再消除新的拟合中最不相关的变量
3)重复上述,直到模型中所有变量的 p 值小于某一预设的 α,此时认为所有的变量都是重要的
forward selection
当样本量小于变量数时(n < p)backward不适用,此时可用 forward
(很明显,此时模型甚至无法拟合)
1)所有协变量都进行一次单变量拟合(包含β0\beta_0β0),将 p 值最小,且小于 α 的变量加入模型作为第一个变量
2)再将剩余的变量,每个都单独与模型中的变量一起进行拟合,再进行检验,选择 p 值最小的变量加入模型(小于α)
3)重复上述,直到剩余的变量的 p 值都大于 α
stepwise selection
上述两种方式都有一个共同的问题,一旦将某一变量剔除(加入)后,就不再考虑他是否在后续中仍然不相关(相关),而stepwise方法可以让同一个变量反复进出模型
1)先进行forward选择,当选择一个变量后,(若没有选择则算法结束)
2)进行backward,
若没有进行剔除,则再进行forward;
若需要剔除,则持续剔除直到没有可以再剔除的变量,再回到forward
3)算法结束条件:当forward中没有变量可选,并且后续的backward也没有变量可以剔除
All subset selection
以上三种方法没有优劣可言,因为他们实际上都没有将所有的变量组合进行比较,因此他们都是次最优的
若将所有的变量组合都进行比较,可获得 “最优” 的(slides里面就加了引号),
将所有可能的组合,进行拟合,再两两比较,取最优
数量:C1p+C2p+C3p+...Cpp=2p−1C^p_1+C^p_2+C^p_3+...C^p_p=2^p-1C1p+C2p+C3p+...Cpp=2p−1
在此之前,我们需要确定如何去两两比较,同时,这步也就是不同方法的区别:
惩罚函数不同
Radj2/σ^2R^2_{adj}/\hat{\sigma}^2Radj2/σ^2:
R2=SSregSStotal=1−SSresSStotalR^2 =\frac{SS_{reg}}{SS_{total}}= 1 −\frac{SS_{res}}{SS_{total}}R2=SStotalSSreg=1−SStotalSSres
因为SStotalSS_{total}SStotal,是不会随着模型中变量的多少而变化,仅与样本本身有关,所以比R2R^2R2实际上相当于比较SSresSS_{res}SSres
但未经调整的R方是不可用的:
因为随着模型中变量的增加,R2R^2R2必然增大
所以应使用调整后的 Radj2=1−SSres/(n−1−q)SStotal/(n−1)R^2_{adj} = 1-\frac{SS_{res}/(n − 1 − q)}{SS_{total}/(n − 1)}Radj2=1−SStotal/(n−1)SSres/(n−1−q)作为判断依据
(其中对SSresSS_{res}SSres除以(n-1-q)是对R2R^2R2增大的惩罚)
最大化Radj2R^2_{adj}Radj2的模型就是最优的(等价于σ^2\hat{\sigma}^2σ^2)
AIC/BIC
AIC=nlog(SSres/n)+2(q+1)AIC = n log (SS_{res}/n) + 2(q + 1)AIC=nlog(SSres/n)+2(q+1)
BIC=nlog(SSres/n)+log(n)(q+1)BIC = n log (SS_{res}/n) + log(n)(q + 1)BIC=nlog(SSres/n)+log(n)(q+1)
nlog(SSres/n)=−2maxlog−likelihoodn log (SS_{res}/n)= −2 max log-likelihoodnlog(SSres/n)=−2maxlog−likelihood
AIC/BIC最小者为最优
同样的,这两种标准也是以SSresSS_{res}SSres为基础的,另外注意SSres和R2SS_{res}和R^2SSres和R2的增减相反
两种方法的惩罚项不同,在n较大时,log(n)>2
在n→∞n\to∞n→∞时,BIC能保证找到真值,AIC不行
CV
交叉检验
每次去掉一个样本,用去掉的样本去检验剩余样本拟合的模型,遍历所有样本后求和作为判断依据
怎么还是这么多个模型,打错了吧
CpC^pCp
variable selection相关推荐
- UA MATH574M 统计学习 Variable Selection:Cross Validation
UA MATH574M 统计学习 Variable Selection:Cross Validation LOOCV LOOCV score的计算 K-fold CV Generalized CV 故 ...
- UA MATH574M 统计学习V Variable Selection: LASSO
UA MATH574M 统计学习V Variable Selection: LASSO 基本概念 Oracle Property Penalized Regularization Framework ...
- UA MATH574M 统计学习V Variable Selection简介
UA MATH574M 统计学习V Variable Selection简介 两个基础方法 Ranking Variables Best Subset Algorithm 对基础方法的改进 Gener ...
- Variable Selection via Nonconcave PenalizedLikelihood and its Oracle Properties 论文解析-特征选择的Oracle特性-1
本文为正则化相关特征选择提供了重要的判定标准和选择方法,对于特征选择方面的研究和算法应用有重要价值,本节将首先介绍论文的前半部分,主要是一些基础概念和方法的比较. 最小二乘的惩罚项和特征选择 考虑带惩 ...
- 闲话Variable Selection和Lasso
原文:https://www.wengbi.com/thread_80323_1.html 闲话Variable Selection和Lasso 最近在看变量选择(也叫subset selection ...
- 课堂笔记(7) Model fit and variable selection 模型拟合和变量选择 —— Adjusted R^2、Cp、全子集回归
目录 Basic knowledge Model fit criteria The R^2 statistic Selection criteria for comparing models - A ...
- 通过Model-X Knockoffs控制variable Selection
通过Model-X Knockoffs控制variable Selection 使用R中的knockoffs包 第一个例子 用户定义的测试统计信息 用户定义的knockoff生成函数 近似与完全SDP ...
- Cox回归之变量筛选的R实现 (Stepwise Variable Selection in R)
参考链接:http://finzi.psych.upenn.edu/R/library/My.stepwise/html/My.stepwise.coxph.html package install. ...
- 机器学习Machine Learning:特征选择Feature Selection 与 数据降维Dimension Reduction的区别?
为什么会有降维和特征选择??? 我们知道机器学习的终极目标就是为了预测,当然预测前我们要对数据进行训练.通常我们不会拿原始数据来训练,为什么呢?可能有些人觉得原始信息(original data)包含 ...
- Paper:可解释性之VI/PFI《All Models are Wrong, but Many are Useful: Learning a Variable’s Importance》翻译与解读
Paper:可解释性之VI/PFI<All Models are Wrong, but Many are Useful: Learning a Variable's Importance by ...
最新文章
- 干货丨从硬件配置到框架选择,请以这种姿势入坑深度学习
- Theano - Numpy 新手
- 简单的横向ListView实现(version 3.0)
- PHP获取MySQL执行sql语句的查询时间
- 。net面试题(2)
- python3多进程写时拷贝_Python实现多进程的详解(附示例)
- 摊牌了,我 HTTP 功底贼好!
- CentOS7 正确安装mysql(亲测)
- 线性表的Java实现--链式存储(双向链表)
- Visual Studio 2017 15.4 正式发布,那些你必须知道的新特性!
- Android studio 常用的插件
- Elasticsearch6.3.0安装Ansj分词插件
- python代码_Python发送邮件基础知识与代码讲解!
- python一行代码太长_一行代码让python的运行速度提高100倍,你信吗?
- 深入理解栈(Stack)
- 快来带您了解中秋节的前世今生
- 基于JQuery网页漂浮广告窗口Js详解
- 跑握手包需要什么显卡?|跑包显卡配置
- SCA连载GDPR 数据处理案件分析 | 德国数据保护局vs德国学术机构,谁是数据控制者?
- node文件系统 常用文件处理方法