R語言數(shù)據(jù)分析系列之八_第1頁
R語言數(shù)據(jù)分析系列之八_第2頁
R語言數(shù)據(jù)分析系列之八_第3頁
R語言數(shù)據(jù)分析系列之八_第4頁
R語言數(shù)據(jù)分析系列之八_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

R語?數(shù)據(jù)分析系列之?R語?數(shù)據(jù)分析系列之?——再談多項(xiàng)式回歸,本節(jié)再次提及多項(xiàng)式回歸分析,理解過擬合現(xiàn)象,并深?cross-validation(交叉驗(yàn)證),regularization(正則化)框架,來避免產(chǎn)?過擬合現(xiàn)象,從更加深?的?度探討理論基礎(chǔ)以及基于R如何將理想照進(jìn)現(xiàn)實(shí)。本節(jié)知識點(diǎn),以及數(shù)據(jù)集?成1,2,3,4,ggplot2進(jìn)?繪圖;為了擬合更復(fù)雜的數(shù)據(jù)數(shù)據(jù)集采?sin函數(shù)加上服從正太分布的隨機(jī)?噪聲數(shù)據(jù);poly函數(shù)進(jìn)??次擬合,transform進(jìn)?數(shù)據(jù)集變換;理解過擬合,以及如何利?正則化框架避免過擬合.測試數(shù)據(jù)?成: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()?次函數(shù)擬合先看?下直線擬合的效果: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)#利?函數(shù)poly進(jìn)??次擬合,該函數(shù)可以將?變量?動(dòng)進(jìn)??次變化,degree參數(shù)控制著最?次項(xiàng)的次數(shù)如下: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')我們繼續(xù)提?最?次的次數(shù):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')從圖中我們可以明顯看到,并不是次數(shù)越?越好,那么如何確定合適得次數(shù)呢,?般認(rèn)為次數(shù)越?,我們認(rèn)為模型越復(fù)雜,復(fù)雜的模型能很好的擬合原始數(shù)據(jù)但泛化能?不?定最好,我傾向于找到?個(gè)簡單,并且擁有良好的泛化能?的模型。我們可以?先從數(shù)字?度去分析,我們調(diào)?summary函數(shù)看結(jié)果可以得知這些參數(shù)中只有1,3,5次?項(xiàng)通過了t驗(yàn)證,其他項(xiàng)?均未通過。那么我們?nèi)绾伪WC模型的可?性呢,下?就介紹?法cross-validation和正則化框架。模型驗(yàn)證,cross-validation為了能夠更好的選擇適合的模型,我們引模型評價(jià)?法RMSE(均?根誤差)均?根誤差可以?來?較兩個(gè)模型的好壞。我們?R來實(shí)現(xiàn)這個(gè)評價(jià)?法:rmse<-function(y,ry){return(sqrt(sum((y-ry)^2))/length(ry))}cross-validation的思想是將?份數(shù)據(jù)集,分成兩份,?份?來訓(xùn)練模型叫訓(xùn)練集df$train,?份?來測試叫測試集df$test,下邊的函數(shù)將數(shù)據(jù)集切分為兩部分: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)}下?我們來看?下在不同的次數(shù)變換下,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()從圖中可以看出當(dāng)degree=3時(shí)模型對測試集已經(jīng)表現(xiàn)的很好,當(dāng)degree增加時(shí),rmse變得越來越?,這說明模型的誤差越來越?,?模型對訓(xùn)練集的擬合卻變現(xiàn)的?常好。所以這種?案是選擇degree=3時(shí)的模型。那么有沒有更好的?法呢,正則化框架為我們提供了另外?種避免過擬合的?法下??起來看?下。正則化框架那么我現(xiàn)在引?模型復(fù)雜度的概念來改進(jìn)我們得模型損失函數(shù),這個(gè)復(fù)雜度也是越?越好,即如果復(fù)雜度越?說明我們的模型是不好的,如果復(fù)雜度越?同時(shí)模型對訓(xùn)練集擬合的?較好,那說明我們的模型是好的,以此來避免過擬合和增加模型的泛化能?。于是我們的正則化框架改造如下:這?的lambda其實(shí)是正則化框架的懲罰因?,lambda越?證明我們對模型復(fù)雜度越關(guān)?,lambda越?證明我們對模型復(fù)雜度不關(guān)?。f(w)是?個(gè)關(guān)于參數(shù)w的函數(shù)。1,2,3,L1范式,如果我們對w參數(shù)取絕對值累加,即為L1范式L2范式,如果我們對w參數(shù)取平?和,那即為L2范式Lp范式,如果我們對w參數(shù)取p?次累加和,即為Lp范式當(dāng)然范式的選擇是根據(jù)經(jīng)驗(yàn)和你的模型的作?來最終確定的,函數(shù)的形式也可以更加復(fù)雜,以便于進(jìn)?特殊作?的處理。這?以上?已經(jīng)有數(shù)據(jù)集進(jìn)?繪圖說明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范式可以進(jìn)?參數(shù)選擇,使得某些不重要的參數(shù)為零,這樣就可以簡化我們得模型,使得模型有更好的泛化能?但是這?的lambda的值如何選取呢,不同得lambda代表著我們對模型復(fù)雜度的關(guān)?程度。這??要?來cross-validation來驗(yàn)證那個(gè)lambda適合我們。在R語??glmnet包已經(jīng)實(shí)現(xiàn)了正則化框架,我們這?安裝并加載他。并調(diào)?glmnet函數(shù),該函數(shù)只要調(diào)??次就可以拿到所有可能的lambda值和對應(yīng)的模型,那么我們可以上?的?法,把rmse的結(jié)果評測和lambda的關(guān)系通繪制出來,看看效果: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論