版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
R语⾔数据分析系列之⼋R语⾔数据分析系列之⼋——再谈多项式回归,本节再次提及多项式回归分析,理解过拟合现象,并深⼊cross-validation(交叉验证),regularization(正则化)框架,来避免产⽣过拟合现象,从更加深⼊的⾓度探讨理论基础以及基于R如何将理想照进现实。本节知识点,以及数据集⽣成1,2,3,4,ggplot2进⾏绘图;为了拟合更复杂的数据数据集采⽤sin函数加上服从正太分布的随机⽩噪声数据;poly函数进⾏⾼次拟合,transform进⾏数据集变换;理解过拟合,以及如何利⽤正则化框架避免过拟合.测试数据⽣成:library(ggplot2)x<-seq(0,1,by=0.01)y<-sin(2*pi*x)+rnorm(length(x),0,0.1)df<-data.frame(x,y)ggplot(df,aes(x=x,y=y),main="sin(x)")+geom_point()⾼次函数拟合先看⼀下直线拟合的效果:fit1<-lm(y~x,df)df<-transform(df,yy=predict(fit1))ggplot(df,aes(x=x,y=y))+geom_point()+geom_smooth(aes(x=x,y=yy),data=df)#利⽤函数poly进⾏⾼次拟合,该函数可以将⾃变量⾃动进⾏⾼次变化,degree参数控制着最⾼次项的次数如下:po<-poly(x,degree=3)fit3<-lm(y~poly(x,degree=3),df)df<-transform(df,yy3=predict(fit3))ggplot(df,aes(x=x,y=y))+geom_point()+geom_line(aes(x=x,y=yy3),data=df,col='blue')我们继续提⾼最⾼次的次数:fit26<-lm(y~poly(x,degree=26),df)df<-transform(df,yy26=predict(fit26))ggplot(df,aes(x=x,y=y))+geom_point()+geom_line(aes(x=x,y=yy26),data=df,col='blue')从图中我们可以明显看到,并不是次数越⾼越好,那么如何确定合适得次数呢,⼀般认为次数越⾼,我们认为模型越复杂,复杂的模型能很好的拟合原始数据但泛化能⼒不⼀定最好,我倾向于找到⼀个简单,并且拥有良好的泛化能⼒的模型。我们可以⾸先从数字⾓度去分析,我们调⽤summary函数看结果可以得知这些参数中只有1,3,5次⽅项通过了t验证,其他项⽬均未通过。那么我们如何保证模型的可⽤性呢,下⾯就介绍⽅法cross-validation和正则化框架。模型验证,cross-validation为了能够更好的选择适合的模型,我们引模型评价⽅法RMSE(均⽅根误差)均⽅根误差可以⽤来⽐较两个模型的好坏。我们⽤R来实现这个评价⽅法:rmse<-function(y,ry){return(sqrt(sum((y-ry)^2))/length(ry))}cross-validation的思想是将⼀份数据集,分成两份,⼀份⽤来训练模型叫训练集df$train,⼀份⽤来测试叫测试集df$test,下边的函数将数据集切分为两部分:split<-function(df,rate){n<-length(df[,1])index<-sample(1:n,round(rate*n))train<-df[index,]test<-df[-index,]df<-list(train=train,test=test,data=df)return(df)}下⾯我们来看⼀下在不同的次数变换下,rmse的分布对⽐情况:performance_Gen<-function(df,n){performance<-data.frame()for(indexin1:n){fit<-lm(y~poly(x,degree=index),data=df$train)performance<-rbind(performance,data.frame(degree=index,type='train',rmse=rmse(df$train['y'],predict(fit))))performance<-rbind(performance,data.frame(degree=index,type='test',rmse=rmse(df$test['y'],predict(fit,newdata=df$test))))}return(performance)}df_split<-split(df,0.5)performance<-performance_Gen(df_split,10)ggplot(performance,aes(x=degree,y=rmse,linetype=type))+geom_point()+geom_line()从图中可以看出当degree=3时模型对测试集已经表现的很好,当degree增加时,rmse变得越来越⼤,这说明模型的误差越来越⼤,⽽模型对训练集的拟合却变现的⾮常好。所以这种⽅案是选择degree=3时的模型。那么有没有更好的⽅法呢,正则化框架为我们提供了另外⼀种避免过拟合的⽅法下⾯⼀起来看⼀下。正则化框架那么我现在引⼊模型复杂度的概念来改进我们得模型损失函数,这个复杂度也是越⼩越好,即如果复杂度越⼤说明我们的模型是不好的,如果复杂度越⼩同时模型对训练集拟合的⽐较好,那说明我们的模型是好的,以此来避免过拟合和增加模型的泛化能⼒。于是我们的正则化框架改造如下:这⾥的lambda其实是正则化框架的惩罚因⼦,lambda越⼤证明我们对模型复杂度越关⼼,lambda越⼩证明我们对模型复杂度不关⼼。f(w)是⼀个关于参数w的函数。1,2,3,L1范式,如果我们对w参数取绝对值累加,即为L1范式L2范式,如果我们对w参数取平⽅和,那即为L2范式Lp范式,如果我们对w参数取p⽅次累加和,即为Lp范式当然范式的选择是根据经验和你的模型的作⽤来最终确定的,函数的形式也可以更加复杂,以便于进⾏特殊作⽤的处理。这⾥以上⾯已经有数据集进⾏绘图说明l1<-abs(sort(coef(fit3)))df_l1<-data.frame(x=sort(coef(fit3)),y=l1)ggplot(df_l1,aes(x=x,y=y))+geom_line()l2<-(coef(fit3)^2)df_l2<-data.frame(x=sort(coef(fit3)),y=l2)ggplot(df_l2,aes(x=x,y=y))+geom_smooth()+ggtitle('L2norm')L1范式可以进⾏参数选择,使得某些不重要的参数为零,这样就可以简化我们得模型,使得模型有更好的泛化能⼒但是这⾥的lambda的值如何选取呢,不同得lambda代表着我们对模型复杂度的关⼼程度。这⾥⼜要⽤来cross-validation来验证那个lambda适合我们。在R语⾔⾥glmnet包已经实现了正则化框架,我们这⾥安装并加载他。并调⽤glmnet函数,该函数只要调⽤⼀次就可以拿到所有可能的lambda值和对应的模型,那么我们可以上⾯的⽅法,把rmse的结果评测和lambda的关系通绘制出来,看看效果:install.packages(glmnet)library(glmnet)getperform<-function(df){fit<-with(df$train,glmnet(poly(x,degree=10),y))lambdas<-fit$lambdaperformance<-data.frame()for(lambdainlambdas){performance<-rbind(performance,data.frame(lambda=lambda,rmse=rmse(df$test['y'],with(df$test,predict(fit,poly(x,degree=10),s=lambda)))))}return(performance)}p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻风溃疡创面护理新技术应用探讨
- 产后新生儿护理:产褥期护理须知
- 小儿重症肺炎的护理与社区健康
- 口服百赛诺护理
- 临澧考编美术试题及答案
- 胸痛患者管理培训考测试题(含答案)
- 堆取料机司机岗位工作流程考核试卷含答案
- 云母电容器制造工操作规范模拟考核试卷含答案
- 交换机务员操作水平模拟考核试卷含答案
- 船舶电讯工复试竞赛考核试卷含答案
- 城市级客流时空建模
- 5.2《比较线段的长短》(课件)-2025-2026学年三年级上册数学 人教版
- 工程项目安全费用提取标准
- 护理SBAR查房模式
- SA8000-2026社会责任管理体系内审检查表完整内容
- 艾梅乙反歧视培训
- AI基础知识培训课件教学
- 2025年中小学体育教师招聘考试学科专业基础知识考试卷库(650题)附答案
- 水厂污泥排放管理办法
- 学堂在线 唐宋词鉴赏 期末考试答案
- 兵棋测试题及答案
评论
0/150
提交评论