交叉检验的实现
2016-12-26 18:56
267 查看
在k重交叉验证中,样本被分为k个子样本,轮流将k–1个子样本组合作为训练集,另外1个子样本作为保留集。这样会获得k个预测方程,记录k个保留样本的预测表现结果,然后求其平均值。(当n是观测总数目,且k为n时,该方法又称作刀切法,jackknifing。)
目前实现了交叉检验的两种实现方法:
1.boot包里的cv.glm()函数
主要用来做广义线性模型的交叉验证,一般与glm()函数一起使用。
glm()函数中的参数family = “binomial”用来执行逻辑斯蒂回归,但如果用glm()函数拟合模型时没有设定family参数,那么它就跟lm()函数一样执行的是线性回归。
bootstrap包里的crossval()函数
通用的交叉验证法。
result返回的是每个观测值的交叉验证的预测值results$cv.fit,再带入均方误差公式,求出交叉验证的预测误差。
详见: 《R实战2》
目前实现了交叉检验的两种实现方法:
1.boot包里的cv.glm()函数
主要用来做广义线性模型的交叉验证,一般与glm()函数一起使用。
glm()函数中的参数family = “binomial”用来执行逻辑斯蒂回归,但如果用glm()函数拟合模型时没有设定family参数,那么它就跟lm()函数一样执行的是线性回归。
library(boot) cv.err <- cv.glm(total_train, total.glm, K = 5) cv.err$delta # 返回的向量是交叉验证的结果,包含两个值,分别为原始的交叉验证和调整的交叉验证值。(《统计学习导论》讲过)
bootstrap包里的crossval()函数
通用的交叉验证法。
library(bootstrap) x <- total_train2[,-2] y <- total_train2[,2] theta.fit <- function(x,y) {lsfit(x,y)} theta.predict <- function(fit, x){ cbind(1,x)%*%fit$coef } results <- crossval(x,y,theta.fit,theta.predict,ngroup=5)
result返回的是每个观测值的交叉验证的预测值results$cv.fit,再带入均方误差公式,求出交叉验证的预测误差。
详见: 《R实战2》
相关文章推荐
- ACCESS中如何实现行列的转换?有关交叉表的应用
- 经典水晶报表设计——用交叉报表实现成绩单!
- SQL交叉报表的实现
- javascript实现多表头分类交叉报表:html表格
- javascript实现多表头分类交叉报表之二:效果图
- javascript实现多表头分类交叉报表之二:效果图
- sql 行列转化/交叉报表的实现
- sql语句交叉报表实现
- select语句实现交叉报表
- 交叉表语句的实现
- Jsp 验证码(检验码)的实现
- 交叉表的简单实现1:使用存储过程
- 和实现有关的相同字符串存储方式检验的思考及c-string字符串
- SP笔记:交叉实现七行并成一行
- 关于交叉报表的动态实现
- 交叉表的实现,
- 通用动态交叉表的实现
- Jsp 验证码(检验码)的实现
- javascript实现多表头分类交叉报表之二:效果图
- javascript实现多表头分类交叉报表:html表格