过拟合中模型复杂度和预测误差的曲线图:bias variance trade off

# bias variance trade off -------------------------------------------------set.seed(1)
test_size <- 50
sigma <- 0.5
test_x <- matrix(rnorm(test_size*35,0,1),test_size)
test_y <- ifelse(apply(test_x,1,sum)>0 , 1 , 0)library(glmnet)
pnum <- 35
train_error_all <- matrix(NaN,100,pnum)
test_error_all <- matrix(0,100,pnum)
for( i in (1:100)){flag = 1while (flag  == 1){train_x <- matrix(rnorm(50*35,0,1),nrow = 50)train_y <- ifelse(apply(train_x,1,sum)>0 , 1 , 0)lasso <- glmnet(train_x,train_y,alpha = 1, nlambda = 10000, family = 'gaussian',pmax = pnum)lambdas <- data.frame(df = lasso$df,lambda = lasso$lambda)ld <- aggregate(lambdas,by = list(lambdas$df),mean)ld <-  ld[-1,]if(dim(ld)[1] == pnum){flag = 0}}lasso1 <- glmnet(train_x,train_y,alpha = 1, lambda = ld$lambda, family = 'gaussian')result_train <- predict(lasso1, newx = train_x,type = 'response',s = ld$lambda)result_test <- predict(lasso1, newx = test_x,type = 'response',s = ld$lambda)train_error <- apply(abs(result_train - train_y),2,mean)test_error <- apply(abs(result_test - test_y),2,mean)train_error_all[i,ld$df] <- train_errortest_error_all[i,ld$df] <- test_errorprint(i)
}train_error_mean <- apply(train_error_all,2,mean)
test_error_mean <- apply(test_error_all,2,mean)library(ggplot2)
library(animation)
g1 <- ggplot()
saveGIF({for (i in 1:100){print(i)train_data <- data.frame(train_error_all[i,])train_data$num <- 1:35names(train_data) <- c('predict error','model complexity')train_data$type <- 'train_error'test_data <- data.frame(test_error_all[i,])test_data$num <- 1:35names(test_data) <- c('predict error','model complexity')test_data$type <- 'test_error'train_all <- data.frame(train_error)train_all$num <- 1:35names(train_all) <- c('predict error','model complexity')train_all$type <- 'average(train_error)'test_all <- data.frame(test_error)test_all$num <- 1:35names(test_all) <- c('predict error','model complexity')test_all$type <- 'average(test_error)'g1 <- g1  + geom_line(data = train_data,aes(x='model complexity',y='predict error'),lwd = 1,colour = 'lightblue') +geom_line(data = test_data,aes(x='model complexity',y='predict error'),lwd = 1,colour = 'lightpink') +geom_line(data = train_all,aes(x='model complexity',y='predict error'),lwd = 2,colour = 'blue') +geom_line(data = test_all,aes(x='model complexity',y='predict error'),lwd = 2,colour = 'red') print(g1)}
},movie.name='Bias-Variance-Trade-Off.gif',interval=0.5,ani.width=700,ani.height=600)######静态#########
for (i in 1:100){plot(1:pnum,train_error_all[i,],xlab = '',ylab = '',xlim = c(0,pnum),ylim = c(0,0.6),type = 'l',col = 'lightblue')par(new = T)plot(1:pnum,test_error_all[i,],xlab = '',ylab = '',xlim = c(0,pnum),ylim = c(0,0.6),type = 'l',col = 'lightpink')par(new = T)
}plot(ld$df,train_error,xlab = '',ylab = '',xlim = c(0,pnum),ylim = c(0,0.6),type = 'l',col = 'blue',lwd = 2)
par(new = T)
plot(ld$df,test_error,xlab = 'Model Complexity (df)',ylab = 'Prediction Error',xlim = c(0,pnum),ylim = c(0,0.6),type = 'l',col = 'red',lwd = 2)
box()

PS.本文代码是在一个公众号上看到的(名称我忘了T_T很久之前看的了),当时做了笔记。后来找不到了,保存代码于此。

偏倚方差分解——R code相关推荐

  1. R语言VAR模型方差分解代码

    好的,您可以使用以下代码来进行 VAR 模型的方差分解: library(vars)# 建立 VAR 模型 model <- VAR(data, p = 2)# 进行方差分解 irf <- ...

  2. R语言 VAR 模型的方差分解

    可以使用以下代码来进行 VAR 模型的方差分解: library(vars)# 建立 VAR 模型 model <- VAR(data, p = 2)# 进行方差分解 irf <- irf ...

  3. 深度学习模型在训练集上很好而在测试集表现得不好而拟合次数并不多_机器学习中的过拟合,欠拟合和偏倚方差折衷...

    过度拟合在机器学习中很重要. 很直观的解释过拟合:假设我们现在让机器学习考试做题,想象一种情况,机器逐字记住每个问题的答案(拟合非常好-完美).然后,我们可以在练习题上得分很高:我们这样做是基于希望实 ...

  4. python 方差分解_干货 :教你用Python来计算偏差-方差权衡

    原标题:干货 :教你用Python来计算偏差-方差权衡 作者:Jason Brownlee 翻译:吴振东 本文约3800字,建议阅读8分钟. 本文为你讲解模型偏差.方差和偏差-方差权衡的定义及联系,并 ...

  5. 机器学习之过拟合与欠拟合以及偏差-方差分解

    1.过拟合 所谓过拟合就是:把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致训练出的模型其泛化能力降低,这就是过拟合. 如何解决? 1)Early stopping Earl ...

  6. UA MATH571A 回归分析 概念与R code总结

    UA MATH571A 回归分析 概念与R code总结 Simple Linear Regression Multivariate Linear Regression Part 0 Basic R ...

  7. var模型的matlab实现_Eviews中VAR模型的操作、脉冲响应分析和方差分解的实现

    打开文件所在位置,获取数据.选中变量右键open打开var 操作EViews,在VAR对象的工具栏中选择"View"|"Lag Structure"|" ...

  8. 【机器学习-西瓜书】二、偏差-方差分解;泛化误差

    2.5偏差与方差 关键词:偏差-方差分解:泛化误差 . 偏差-方差分解是解释算法泛化性能的一种重要工具.偏差-方差分解试图对学习算法的期望泛化错误率进行拆解. 泛化误差可分解为:偏差,方差与噪声之和. ...

  9. R code execution error处理

    R code execution error 解决方法: Ctrl + Shift + F10 to restart your R session

  10. 偏差-方差分解,学习和验证曲线评估模型

    偏差-方差分解 参考链接:https://www.zhihu.com/question/20448464 https://blog.csdn.net/simple_the_best/article/d ...

最新文章

  1. Adam那么棒,为什么还对SGD念念不忘 (3)—— 优化算法的选择与使用策略
  2. Mac中将delete键定义为删除键
  3. 荐读 | 9篇近期社会化推荐论文
  4. 花费一天时间基于Vue创建的epub小说阅读器效果展示及源码分享
  5. java 超时中断_JAVA 超时中断处理
  6. Spring依赖注入技术的发展
  7. web.config forms节点中的属性的含义和用途
  8. 谷歌浏览器chrome设置特定网页使用Https(ssl)访问
  9. mirror - 映射在远端节点上的档案
  10. 华为机试HJ33:整数与IP地址间的转换
  11. 流浪猫的故事看质量人员需求
  12. 餐饮业进销存软件哪个好用?推荐这十款
  13. 2019年美国大联盟美国总决赛小学组获奖牌名单
  14. 命名实体如何进行概念消歧?
  15. 2021年3月7日 蚂蚁金服的OceanBase Java后端开发实习面经(一面)
  16. Excel中身份证号码验证,那些不得不说的事
  17. android allapp图标拖动,RecyclerView 拖拽移动,长按小图标拖拽,侧滑删除
  18. python做网站开发_如何用Python做网站开发
  19. 全球区块链农业技术平台Dimitra与 Morpheus AMA回顾
  20. 春节祝福短信怎么发?付详细文案

热门文章

  1. react 跨域—— jsonp 跨域
  2. 匿名四轴上位机使用方法
  3. 规范化理论:候选键的求解理论和算法
  4. 镜头相关的基本参数总结
  5. 十一种常见的光纤网络传输方案
  6. 精神分析理论-弗洛伊德
  7. 96309245通讯异常工行_工商银行信息代码 96309245 是什么意思
  8. 筚路蓝缕的十九年,天翎经历了什么?
  9. 解决企业繁杂表单问题,还得看天翎表单引擎
  10. linux查看外网IP