數(shù)據(jù)分享|用加性多元線性回歸、隨機(jī)森林、彈性網(wǎng)絡(luò)模型預(yù)測(cè)鮑魚(yú)年齡和可視化|附代碼數(shù)
原文鏈接:http://tecdat.cn/?p=24127
最近我們被客戶(hù)要求撰寫(xiě)關(guān)于預(yù)測(cè)鮑魚(yú)年齡的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
鮑魚(yú)是一種貝類(lèi),在世界許多地方都被視為美味佳肴
養(yǎng)殖者通常會(huì)切開(kāi)貝殼并通過(guò)顯微鏡計(jì)算環(huán)數(shù)來(lái)估計(jì)鮑魚(yú)的年齡。因此,判斷鮑魚(yú)的年齡很困難,主要是因?yàn)樗鼈兊拇笮〔粌H取決于它們的年齡,還取決于食物的供應(yīng)情況。而且,鮑魚(yú)有時(shí)會(huì)形成所謂的“發(fā)育不良”種群,其生長(zhǎng)特征與其他鮑魚(yú)種群非常不同。這種復(fù)雜的方法增加了成本并限制了其普及。我們?cè)谶@份報(bào)告中的目標(biāo)是找出最好的指標(biāo)來(lái)預(yù)測(cè)鮑魚(yú)的環(huán),然后是鮑魚(yú)的年齡。
數(shù)據(jù)集
背景介紹
這個(gè)數(shù)據(jù)集?(?查看文末了解數(shù)據(jù)獲取方式?)?來(lái)自一項(xiàng)原始(非機(jī)器學(xué)習(xí))研究。
從原始數(shù)據(jù)中刪除了有缺失值的例子(大多數(shù)預(yù)測(cè)值缺失),連續(xù)值的范圍被縮放用于NA(通過(guò)除以200)。在本分析中,我們將通過(guò)乘以200的方式將這些變量恢復(fù)到其原始形式。
數(shù)據(jù)集中的觀測(cè)值總數(shù):4176
數(shù)據(jù)集中的變量總數(shù):8個(gè)
變量列表
變量數(shù)據(jù)類(lèi)型測(cè)量描述性別分類(lèi)(因子)M、F 和 I(嬰兒)長(zhǎng)度連續(xù)毫米最長(zhǎng)殼測(cè)量直徑連續(xù)毫米垂直長(zhǎng)度高度連續(xù)毫米帶殼肉整體重量連續(xù)克整只鮑魚(yú)去殼重量連續(xù)克肉的重量?jī)?nèi)臟重量連續(xù)克腸道重量外殼重量連續(xù)克曬干后鮑魚(yú)的環(huán)連續(xù)+1.5 給出以年為單位的年齡
下面是分析
“使用回歸預(yù)測(cè)鮑魚(yú)的年齡”
數(shù)據(jù)匯總與統(tǒng)計(jì)
balne$Sx?<-?s.acor(aalne$Sex)
kale(abaoe[1:10,],fomt?'madw')
分類(lèi)變量
數(shù)值變量
看一下數(shù)據(jù)集的摘要,我們可以看到,數(shù)據(jù)在雄性、雌性和嬰兒這三個(gè)因素水平之間的分布是相當(dāng)均勻的。
因變量
因果變量Rings包含在數(shù)據(jù)集中。它被測(cè)量為切割和檢查鮑魚(yú)后觀察到的環(huán)的數(shù)量。雖然它不能直接表示一個(gè)給定的鮑魚(yú)的年齡,但它可以或多或少完美地確定它。一個(gè)鮑魚(yú)的年齡等于環(huán)數(shù)+1.5。由于這種關(guān)系是可靠的,環(huán)數(shù)將被視為因變量。數(shù)據(jù)中測(cè)量的環(huán)數(shù)從1到29不等,大多數(shù)鮑魚(yú)的環(huán)數(shù)在5到15之間。分布也有輕微的正偏斜,但沒(méi)有問(wèn)題。(見(jiàn)下面的圖)
配對(duì)圖
pairs(aalone,?es(colour?=Sex,?aph?=?0.)
從配對(duì)圖中觀察到的情況。
首先要注意的是數(shù)據(jù)的高度相關(guān)性。例如,直徑和長(zhǎng)度之間的相關(guān)性非常高(約98.7)。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
r語(yǔ)言中對(duì)LASSO回歸,Ridge嶺回歸和彈性網(wǎng)絡(luò)Elastic Net模型實(shí)現(xiàn)
左右滑動(dòng)查看更多
01
02
03
04
同樣,Whole_weight似乎與其他重量預(yù)測(cè)因子高度相關(guān),是Shucked_weight、Viscera_weight和Shell_weight之和。
其次,預(yù)測(cè)因子Sex的分布與所有其他預(yù)測(cè)因子的因子水平值雌性和雄性非常相似。
對(duì)于雌性和雄性的因子水平,分布的形狀也是非常相似的。
我們可以考慮重新定義這一特征,將性別定義為嬰兒與非嬰兒(其中非嬰兒=雌性和雄性都是)。
大多數(shù)的abalones環(huán)都在5到15之間。
數(shù)據(jù)質(zhì)量
增加變量。我們將更新鮑魚(yú)數(shù)據(jù)集,創(chuàng)建名為 "嬰兒 "的新變量,它的值將基于性別變量的原始值。當(dāng)性別變量為I時(shí),它的值為I,否則為NI。
我們還觀察到,預(yù)測(cè)高度的最小值是0,實(shí)際上這是不可能的,我們將調(diào)查這些觀察結(jié)果,仔細(xì)研究。
##高度為0的數(shù)據(jù)質(zhì)量檢查kable(abloe[aban$Height?==?0,])
我們看到,有兩個(gè)觀測(cè)值的高度可能沒(méi)有被正確記錄,因?yàn)槠渌A(yù)測(cè)因子似乎都有有效的值。另外,如果我們看一下預(yù)測(cè)因子Whole_weight,我們會(huì)發(fā)現(xiàn)這些值與其他觀察值相比真的很小,而且低于第一個(gè)四分法。這告訴我們,這可能不是一個(gè)數(shù)據(jù)錯(cuò)誤,因此我們不能將這些數(shù)據(jù)從我們的數(shù)據(jù)集中排除。
我們還將添加一個(gè)名為weight.diff的新變量。我們可以在摘要中看到有四種不同的重量測(cè)量方法,即Whole_weight、Shucked_weight、Viscera_weight和Shell.weight。Whole_weight是其他重量預(yù)測(cè)因子的線性函數(shù),在剝殼過(guò)程中損失的水/血的質(zhì)量未知。
str(aane,?give.attr=?FASE)
我們看到變量Whole_weight應(yīng)該是Shucked_weight、Viscersa_weight和Shell_weight的線性函數(shù),我們可以寫(xiě)成Whole_weight = Shucked_weight + Viscera_weight + Shell_weight + 剝殼過(guò)程中損失的未知水/血質(zhì)量。
然而,當(dāng)我們計(jì)算Whole_weight和其他重量變量之間的差異時(shí),我們發(fā)現(xiàn)有153個(gè)觀測(cè)值違反了這一規(guī)定,也就是說(shuō),這似乎不符合邏輯,可能是記錄數(shù)據(jù)時(shí)的錯(cuò)誤。
如果我們繪制新添加的weight.diff變量的直方圖,我們可以看到,當(dāng)weight.diff為負(fù)數(shù)時(shí),有一些觀察結(jié)果。
#確定沒(méi)有正確記錄的觀察結(jié)果#不符合邏輯的觀察結(jié)果的柱狀圖ggplt(aalone,?as(x=weight.diff))?+,ill=rb(1,.4,0,.7),?bins?=?30)
我們來(lái)看看其中的一些記錄。
nrow(ablon[abaoneweihtdff?<?0,])
請(qǐng)注意,總共有153個(gè)觀測(cè)值的綜合權(quán)重超過(guò)了Whole_weight。當(dāng)我們看了10個(gè)這樣的觀測(cè)值時(shí),似乎其他的值都是正確的,沒(méi)有任何相似之處,所以我們確信這可能是一個(gè)數(shù)據(jù)輸入錯(cuò)誤。因此,我們將保留這些觀察結(jié)果,以便進(jìn)一步分析。
我們將首先在訓(xùn)練和測(cè)試中潛入我們的數(shù)據(jù)集。數(shù)據(jù)集將以70/30的比例在訓(xùn)練和測(cè)試之間進(jìn)行分割,并隨機(jī)選擇觀測(cè)值。
訓(xùn)練和測(cè)試拆分
set.ee(4)#使用70/30方法在訓(xùn)練和測(cè)試中分割數(shù)據(jù)ndxes?<-spl(1:owabaone,?size=?0.3??nrw(bone))
aboetrai?<-?ablon[-indxs,]abetest?<-?abloneindxe,]
我們已經(jīng)開(kāi)始用所有的變量擬合一個(gè)加法模型,并將研究參數(shù)的重要性。在此基礎(chǔ)上,我們將修改我們的模型?,F(xiàn)在我們將使用變量Sex的原始值,它的因子水平為F、I和M。
加性多元線性回歸模型
summary(abneadd)
在第一個(gè)加性模型中,注意因子水平雌性是性別變量的參考水平。
在用所有預(yù)測(cè)因子擬合加性模型后,我們可以看到,除了長(zhǎng)度之外,測(cè)試統(tǒng)計(jì)顯示所有變量都是顯著的。正如我們之前從配對(duì)圖中看到的那樣,長(zhǎng)度和直徑的預(yù)測(cè)因子是高度相關(guān)的。我們還看到,不同重量的預(yù)測(cè)因子也是顯著的,盡管它們應(yīng)該是彼此的線性函數(shù)。
RMSE 分?jǐn)?shù)
kable(rmse(aaloe_ad,"Aditve?odel"))
我們將計(jì)算方差膨脹因子,以發(fā)現(xiàn)數(shù)據(jù)集存在的多重共線性問(wèn)題。
多重共線性
vif
我們看了所有變量的變量膨脹系數(shù),似乎所有的預(yù)測(cè)因子都有多重共線性問(wèn)題,除了我們之前在配對(duì)圖中看到的性別和身高。預(yù)測(cè)因子Whole_weight的VIF值最高,因?yàn)樗瞧渌w重的線性函數(shù)。
Whole_weight & Rings 之間的偏相關(guān)系數(shù):我們將首先計(jì)算Whole_weight
?變量和因變量(Rings)的偏相關(guān)系數(shù)?。
#檢查高共線性關(guān)系變量的異方差性wole_wigt_it?<-?lm(holweight?~Sx?LnhDametr?+?eit?+Sucked_ght?+?Visrwght?Shl_wegh?data=alotrin)
變量添加圖
同樣地,變量添加圖將這些殘差相互之間的關(guān)系可視化。將因變量的殘差與預(yù)測(cè)的殘差進(jìn)行回歸,并將回歸線添加到圖中,也是有幫助的。
cor(resid(whole_weight),resid(addwtouwolwigh))
cre_plot(baead_itht_whe_eght,wleeghtfit)
沒(méi)有Whole_weight的加法模型的方差膨脹因子
但直徑和長(zhǎng)度的VIF還是很高。
vif(abaln_ddithu_whoeeiht)
直徑和環(huán)之間的偏相關(guān)系數(shù)
我們現(xiàn)在將?在模型中Diameter
?沒(méi)有Whole_weight
變量的情況下計(jì)算變量和因變量(環(huán))?的偏相關(guān)系數(shù)?。
mete_i?<-?lm(Diameter?~?Sex?+?Length?+?Height?+?Shucked_weight?+?Viscera_weight?+?Shell_weight)
?
abaoned_sal?<-?lm(Rings?~?Sex?+?Length?+?Height?+?Shucked_weight?+?Viscera_weight?+?Shell_weight)
這兩個(gè)殘差的相關(guān)性接近于零,這意味著未被性別、長(zhǎng)度、高度、去殼重量、內(nèi)臟重量和貝殼重量解釋的環(huán)的變化與未被性別、長(zhǎng)度、高度、去殼重量、內(nèi)臟重量和貝殼重量解釋的直徑的變化的相關(guān)性很小。因此,在模型中加入直徑可能沒(méi)有什么好處。
cor(resid(damer_it),resid(abonead_mll))
creaevarlt(ablone_d_smaldiaete_fi)
沒(méi)有 Whole_weight & Diameter 的加法模型的方差膨脹因子
vif(ablonadd_mll)
現(xiàn)在的VIF要低得多。我們將同時(shí)使用abalone_add和abalone_add_small進(jìn)行分析。
abalone_add_small 的 RMSE 分?jǐn)?shù)
kable(rmse(abalone_add_small
方差分析?F?檢驗(yàn)
anova(small,ablone_add)
根據(jù)Anova檢驗(yàn),我們可以拒絕無(wú)效假設(shè)。
現(xiàn)在讓我們嘗試對(duì)加性模型進(jìn)行AIC和BIC的參數(shù)選擇。
#在加性模型上運(yùn)行AIC和BICstep(abae_add,?dtonbackward"?trace0)
step(abalon_ad,?direction="backward"
我們使用之前Anova F測(cè)試中的最佳模型(abalone_add)運(yùn)行了AIC和BIC方法,AIC和BIC都選擇了沒(méi)有Length預(yù)測(cè)器的相同模型。
我們選擇了BIC的模型(因?yàn)閮蓚€(gè)模型都是一樣的),并將繪制擬合與殘差和QQ正態(tài)圖。
加性模型假設(shè)
assumptions(aln_odad_bic,"baln_meddbic")
這里我們看到,擬合圖與殘差圖表明,模型違反了恒定方差,似乎有一種模式,即殘差隨著擬合值的增加而增加。
正態(tài)QQ圖也有肥尾,表明誤差可能不是正態(tài)分布。
表明我們可能需要尋找改進(jìn)這個(gè)模型。盡管多重共線性對(duì)預(yù)測(cè)沒(méi)有影響,但這看起來(lái)是一個(gè)極端的案例,有一個(gè)明顯的模式違反了模型的假設(shè)。這可以通過(guò)幾種技術(shù)來(lái)實(shí)現(xiàn),例如變量選擇和轉(zhuǎn)換。讓我們來(lái)看看變量選擇方法,看看哪些變量可以用來(lái)創(chuàng)建另一個(gè)不違反恒定方差和正態(tài)性假設(shè)的模型。
窮舉搜索
#窮舉搜索?allabaone_add<-?sumr(ruetsings??Sex?+?Legth??Diamter?+?Hight?+?Whole_eght?+?Shllweigh?+?Shucke_weght?+?Viscea_weigh?,?data=ablontra))
for(i?in?c(1:8)){
??vr_nm[i]=sum(all_abwh[i,])-1}plot(var_num,all_a)
(besr?<-?which.max(adjr2))
alabaoe_ad$hch[bsj2,]
#畫(huà)出模型參數(shù)與AIC的關(guān)系圖n?*?log(a_aln_dd$rs?/?n)?+?2?*?(2:p)
plot(aloe_mo_ac?~?I(2:),?ylab?=?"AIC"???")
現(xiàn)在我們看到了一些有趣的結(jié)果。之前我們看到t檢驗(yàn)顯示一些預(yù)測(cè)因子是不顯著的,但是當(dāng)我們進(jìn)行窮舉搜索時(shí),它表明我們確實(shí)需要所有的預(yù)測(cè)因子來(lái)創(chuàng)建AIC值最低的模型。從圖中可以看出,AIC值隨著8個(gè)參數(shù)的模型大小而下降,并且是最小的。我們將再次使用數(shù)據(jù)集中的所有預(yù)測(cè)因子來(lái)創(chuàng)建模型,并尋找變量轉(zhuǎn)換技術(shù)。
接下來(lái),為了穩(wěn)定恒定的變化,我們將進(jìn)行一些因變量和預(yù)測(cè)變量的轉(zhuǎn)換。
因變量轉(zhuǎn)換
Box-Cox 變換
穩(wěn)定方差的方法之一是使用對(duì)數(shù)轉(zhuǎn)換因變量。為了得到正確的順序,我們使用了boxcox方法,該方法建議使用$0的值。因?yàn)樵?的值上,對(duì)數(shù)可能性最大,而且區(qū)間非常接近。因此,我們將使用log(Rings)形式的轉(zhuǎn)換,用于我們的加性模型。
boxcox(abloe_ad?lambda?=?seq(-0.1,?0.1,?by?=?0.1))
Additive 模型與對(duì)數(shù)因變量轉(zhuǎn)換
summary(abaone_dd_log)
將因變量進(jìn)行對(duì)數(shù)轉(zhuǎn)換后,我們看到t檢驗(yàn)是顯著的,它也增加了先前加法模型的調(diào)整r平方值。我們還看到,在這個(gè)模型中,幾乎所有的預(yù)測(cè)因子都是顯著的。讓我們檢查一下假設(shè)。
模型假設(shè)
下面的擬合與殘差圖和Q-Q圖顯示,對(duì)因變量進(jìn)行對(duì)數(shù)轉(zhuǎn)換后,結(jié)果有了很大的改善。
assumptionsba
均方根分?jǐn)?shù)
kable(log_rmse(abalo)
然而,我們沒(méi)有看到RMSE分?jǐn)?shù)有任何改善。恒定方差問(wèn)題似乎得到了改善,QQ圖也看起來(lái)不錯(cuò)。
下一步,我們將對(duì)預(yù)測(cè)器進(jìn)行一些轉(zhuǎn)換,并評(píng)估模型,看看這是否有助于進(jìn)一步提高預(yù)測(cè)的準(zhǔn)確性。
Predictor 轉(zhuǎn)換
回歸分析
為了使我們能夠進(jìn)行任何預(yù)測(cè)器的轉(zhuǎn)換,首先讓我們看看每個(gè)預(yù)測(cè)變量和因變量的關(guān)系。轉(zhuǎn)換將取決于數(shù)據(jù)的形狀以及預(yù)測(cè)因子和因變量之間的關(guān)系。
scatter(abale_tra$Lngt,abaone_train$Rngs,"Lenth""Rngs"),
我們可以看到環(huán)和預(yù)測(cè)指標(biāo)長(zhǎng)度、直徑、高度的關(guān)系幾乎是線性的。我們還可以看到,重量預(yù)測(cè)指標(biāo)之間的關(guān)系并不是真正的線性關(guān)系,而是可以從多項(xiàng)式轉(zhuǎn)換中受益。因此,讓我們使用高階多項(xiàng)式創(chuàng)建一個(gè)模型,即所有重量預(yù)測(cè)指標(biāo)Whole_weight、Viscera_weight、Shucked_weight和Shell_weight。
多項(xiàng)式
在模型中使用二階項(xiàng)后,模型假設(shè)相同。
asumptons(abloe_dd_oly2,"Poly2?Log?Model")
均方根分?jǐn)?shù)
kable(log_rmse(abaoly2,"Poly2?Log?Moel)
均方根分?jǐn)?shù)
在這里,我們進(jìn)行了一些變量轉(zhuǎn)換。首先,我們按照Boxcox方法的建議對(duì)因變量進(jìn)行了對(duì)數(shù)轉(zhuǎn)換,并按照對(duì)數(shù)圖的建議對(duì)權(quán)重預(yù)測(cè)因子進(jìn)行了多項(xiàng)式轉(zhuǎn)換。在擬合模型后,我們看到rmse比以前的模型要低,與以前擬合的加性模型相比,它也有更好的恒定方差和Q-Q圖。由于我們已經(jīng)進(jìn)行了程度為2的多項(xiàng)式轉(zhuǎn)換,讓我們嘗試擬合程度為3的另一個(gè)模型并檢查其意義。
方差分析?F?檢驗(yàn)
anova(abaloe_addpoy2,aalon_add_oy3)
均方根分?jǐn)?shù)
kable(log_rmse(abaloe_dd_pol4
方差分析?F?檢驗(yàn)
anova
均方根分?jǐn)?shù)
kable(log_rmse(abloneaddpoly5
方差分析?F?檢驗(yàn)
anova
我們?cè)俅慰吹綔y(cè)試對(duì)于較低的 rmse 是顯著的。讓我們嘗試擬合度數(shù)為 6 的模型。
均方根分?jǐn)?shù)
kable(log_rmseaban_dd_poly6
方差分析?F?檢驗(yàn)
anova
現(xiàn)在在用多項(xiàng)式次數(shù)為 6 進(jìn)行擬合后,我們看到即使 F 檢驗(yàn)表明它很重要,但檢驗(yàn)的 RMSE 上升了。這表明我們現(xiàn)在可能已經(jīng)開(kāi)始過(guò)度擬合數(shù)據(jù),即我們的模型非常接近地?cái)M合數(shù)據(jù),這是我們不希望發(fā)生的。
在此之前,我們看到多項(xiàng)式次數(shù)為 5 和 4 的測(cè)試和訓(xùn)練 RMSE 之間存在非常細(xì)微的差異。測(cè)試 RMSE 幾乎相同。因此,我們?cè)敢鉅奚鄬?duì)于更簡(jiǎn)單模型的 RMSE 非常微小的改進(jìn)(第三個(gè)小數(shù)點(diǎn))。因此我們選擇多項(xiàng)式次數(shù)為 4 的模型,即模型 abalone_add_poly4。
for(d?in?um_poly){
??abalone_add_polyestmodel(d)??
??rmse=g_log_mse(balone_ad_poly)
??train_rmse[d]rmse$tran??test_re[d]=rse$st}plot(train_rmse
我們看到多項(xiàng)式次數(shù)為 5 和 4 的測(cè)試和訓(xùn)練 RMSE 之間存在非常細(xì)微的差異。測(cè)試 RMSE 幾乎相同。因此,我們?cè)敢鉅奚鄬?duì)于更簡(jiǎn)單模型的 RMSE 非常微小的改進(jìn)。因此我們選擇多項(xiàng)式次數(shù)為 4 的模型,即模型 abalone_add_poly4。
既然我們已經(jīng)選擇了模型,讓運(yùn)行 AIC 和 BIC 方法進(jìn)一步選擇合適的模型,看看我們是否可以做進(jìn)一步的改進(jìn)。
現(xiàn)在讓我們計(jì)算和比較高階項(xiàng)的 RMSE,并繪制訓(xùn)練和測(cè)試數(shù)據(jù)的均方根誤差。
多加法模型上的 AIC 和 BIC:
既然我們已經(jīng)選擇了模型,讓我們運(yùn)行?
AIC
?和?BIC
?方法來(lái)進(jìn)一步選擇合適的模型。
step(abane_ad_poy4,?directin="backwrd",?trac=FALSE)
Compare AIC 與 BIC 模型參數(shù)
_aic$call[2]
add_bic$call[2]
Anove F 檢驗(yàn)
anova(abalone_mode
選擇的模型?
BIC
?中沒(méi)有預(yù)測(cè)器?Length
?。Anova F 檢驗(yàn)的 p 值很大,因此我們無(wú)法拒絕原假設(shè)。abalone_model_add_bic
?模型很重要,因此我們將繼續(xù)推進(jìn)并檢查模型假設(shè)。
模型假設(shè)(AIC 和 BIC):
model_assumption
在這種情況下,恒定方差和正態(tài)性看起來(lái)都不錯(cuò)。
RMSE 分?jǐn)?shù) - AIC
kable(log_rmse(abaone_mde_down')
RMSE 分?jǐn)?shù) - BIC
kable(log_rmse(abalone_model_add_bic,paste("Additive?Model?-?Degree?4?-?BIC")),?digits?=?4,format?=?'markdown')
在使用AIC 和 進(jìn)行變量選擇后 BIC,我們從中選擇了模型 BIC 并檢查了 t 統(tǒng)計(jì)量和假設(shè)。有趣的是, BIC 模型丟棄了很少的預(yù)測(cè)變量,但也具有與我們開(kāi)始使用的原始模型(多項(xiàng)式次數(shù)為 4 的模型)相似的測(cè)試 RMSE。這表明我們可以刪除一些變量并仍然保持較低的 RMSE。這將我們帶到下一個(gè)修改和引入BIC 上述模型選擇的變量之間的交互項(xiàng) 。
來(lái)自BIC 模型的模型假設(shè) 也看起來(lái)更好。
接下來(lái),我們將介紹交互項(xiàng),并將嘗試使用BIC 方法建議的預(yù)測(cè)變量來(lái)擬合模型 。
交互模型
log(Rings)?~??Height?+?Diameter?+?poly(Whole_weight,?4)?+
??poly(Viscera_weight,?4)?+?poly(Shucked_weight,4)?+?poly(Shell_weight,?4)?+?Sex?+?Diameter:poly(Shucked_weight,?4)?+?poly(Shucked_weight,??4):Sex
RMSE 分?jǐn)?shù)
方差分析?F?檢驗(yàn)
anova
在擬合交互模型并使用最佳可加模型執(zhí)行 F 檢驗(yàn)后,我們看到該檢驗(yàn)表明交互模型是一個(gè)顯著模型,具有改進(jìn)的調(diào)整 r 平方值。RMSE 也變低了 因?yàn)樗玫亟忉屃丝勺冃?,我們現(xiàn)在將選擇交互模型并嘗試在交互模型上運(yùn)行 AIC 和 BIC。
同時(shí),我們會(huì)比較交互模型的多個(gè)度數(shù),以計(jì)算和比較高階項(xiàng)的 RMSE,并繪制訓(xùn)練和測(cè)試數(shù)據(jù)的均方根誤差。
for(d?in?num_poly){
??ablone_int_poly=test_itmodel(d)
?
??rmse=et_lg_rmseaaloneint_poly)
??trainrse_int[d]=rmse$train??test_mse_it[d]=rme$tst}plot(tran_rse_n
我們可以看到,隨著多項(xiàng)式次數(shù)的增加,RMSE 越來(lái)越低。盡管對(duì)于此分析而言,RMSE 的這種改進(jìn)非常微小,我們可以忽略這種對(duì)模型簡(jiǎn)單性的改進(jìn)??紤]到這一點(diǎn),我們可以看到多項(xiàng)式次數(shù)為 4 的模型性能更好,因此我們將繼續(xù)使用該模型。
交互模型上的 AIC 和 BIC
step(aalone_int,?diretin="backar",?trac=FALSE)
step(aalone_nt,?diection="bacward",?=loce=ALE)
RMSE 分?jǐn)?shù) - BIC/AIC
kable(log_rmse(abalone_model_int_bic,paste("Interaction?Model?-?Degree?4?-?BIC")),?digits?=?4,format?=?'markdown')
在我們的交互模型上運(yùn)行 AIC 和 BIC 后,我們看到該模型選擇了相同的模型。由于這是我們迄今為止看到的最好的模型之一,具有合理的復(fù)雜性,我們將把它視為我們比較的候選模型之一,作為本分析的最佳擬合模型。
談到候選模型,在詳盡的搜索過(guò)程中,我們已經(jīng)看到,當(dāng)我們使用所有預(yù)測(cè)變量時(shí),模型附帶了最低的 AIC。我們可以嘗試構(gòu)建一個(gè)模型,其中包含所有具有交互作用和多項(xiàng)式次數(shù)的預(yù)測(cè)變量,并與我們選擇的第一個(gè)候選模型進(jìn)行比較,看看它的表現(xiàn)如何。因此,讓我們擬合一個(gè)包含所有預(yù)測(cè)變量的模型。
在最初的數(shù)據(jù)分析中,我們發(fā)現(xiàn)Sex 因子水平為 female 和 的分類(lèi)變量的分布 male 極其相似。因此,我們決定將這兩個(gè)因子水平合并為一個(gè),并且總因子水平為 2 infant 和 non-infant。我們創(chuàng)建了新變量 Infant。這里 non-infant 代表 female 和 male 兩者。我們也通過(guò)這種方法進(jìn)行了分析(可以在本報(bào)告的附錄部分找到)。
讓我們看看 Infant 模型分析,看看這個(gè)模型如何與我們上面選擇的模型相抗衡。
嬰兒模型分析
我們討論過(guò)針對(duì)此分析采用不同的方法。我們引入了一個(gè)新的分類(lèi)預(yù)測(cè)變量名稱(chēng) Infant。我們使用現(xiàn)有的Sex 具有 3 個(gè)因子水平的分類(lèi)預(yù)測(cè)變量,并創(chuàng)建了一個(gè)具有 2 個(gè)因子水平的新分類(lèi)預(yù)測(cè)變量 。我們這樣做是因?yàn)槲覀儚脑挤诸?lèi)預(yù)測(cè)變量female 和 中 確定了 2 個(gè)因子水平上的相似分布 male。新的因素水平現(xiàn)在是 I (嬰兒 = 雌性和雄性組合)和 NI (非嬰兒)。
這個(gè)新分類(lèi)的分析與上面的分析完全一樣,所以我們將用最少的解釋和細(xì)節(jié)快速進(jìn)行這個(gè)分析。
summary(abae_d_nf)
均方根分?jǐn)?shù)
rmse??<-?funcin(atual?predicted)?{
??sqrt(mean((actual?-?predicted?^?2))
}
加性模型假設(shè)
model_assumption
Box-Cox 變換
boxcox(abon_adinf,lmda??seq(-0.1,?0.1,?by?=?0.1))
具有對(duì)數(shù)因變量轉(zhuǎn)換的附加?jì)雰耗P?/p>
summary(abaln_ad_log)
均方根分?jǐn)?shù)
kable(log_mseabalone_d_lo_f,"")
加性模型假設(shè)
model_assumptions
多項(xiàng)式模型
lm(log(Rings)?~??Diameter?+?Length?+?Height?+?poly(Whol_weiht,3)?+?poly(Viscra_weight,3)?+?polyShuckwegt,3)?+?poly(Selweight,3)?+?Infant,?data=abaone_rain
均方根分?jǐn)?shù)
kable(log_rmse(abalnead_poly
多項(xiàng)式模型假設(shè)
model_assumption
方差分析 F 檢驗(yàn)
?``````anova
交互模型
lm(log(Rings)?~??Height?+?Diaeter?+?poly(Whole_weight,?4)?+
??poly(Viscera_weght,?4)?+?poly(Shucke_weght,4)?+?poly(Shel_weight,?4)?+?Infant?+?Diameter:poly(Shckedweight,?4)?+?poly(Shckd_weight,??4):Infant,?data=aboe_tain)
均方根分?jǐn)?shù)
kable(log_rms(abaoe_int_infan,"
交互模型假設(shè)
model_assumption
方差分析 F 檢驗(yàn)
anova
在這里,我們選擇性能最佳的交互模型作為我們的候選模型之一。該模型具有較低的復(fù)雜性以及最低的 rmse。
我們?cè)谶@里看到的是,與前兩個(gè)完整模型相比,該模型在未見(jiàn)數(shù)據(jù)(測(cè)試數(shù)據(jù))上的 rmse 最低。除此之外,這個(gè)模型也沒(méi)有前兩個(gè)復(fù)雜,這些特性使得這個(gè)模型成為我們選擇的候選模型之一。
現(xiàn)在,由于我們有一些我們喜歡的候選模型,讓我們將它們相互比較并尋找最佳模型。
候選模型
從上面的分析中,我們選擇了多項(xiàng)式次數(shù)為 4 的交互模型,因?yàn)槲覀円呀?jīng)看到它具有最低的測(cè)試 rmse 之一,并且具有良好的模型假設(shè)。我們將把它作為第一選擇的候選模型之一。該模型包含一些預(yù)測(cè)變量,而不是具有高度多重共線性的預(yù)測(cè)變量。這個(gè)模型是 abalone_model_int_bic。
另一個(gè)選定的模型是所有預(yù)測(cè)變量都具有相似較低 rmse 的交互模型。雖然這個(gè)模型將有更多的參數(shù),因此是一個(gè)比早期模型更復(fù)雜的模型,但由于我們的目標(biāo)是預(yù)測(cè),我們不關(guān)心模型的復(fù)雜性。這個(gè)型號(hào)是 abalone_int_full
另一種候選模型將是具有 2 個(gè)因子水平的分類(lèi)變量的交互模型。在開(kāi)始或我們的分析中,我們看到該預(yù)測(cè)變量的分布在級(jí)別之間相似 male , female 因此我們決定引入一個(gè)新變量,該變量基本上有 2 個(gè)級(jí)別,嬰兒和非嬰兒,其中非嬰兒 = 雄性和雌性。該模型也是多項(xiàng)式次數(shù)為4的交互模型 。這個(gè)模型是 abalone_int_infant。注:(附錄部分增加了使用嬰兒預(yù)測(cè)器的加法模型和相關(guān)分析)。使用分類(lèi)預(yù)測(cè)變量和具有3 值和 2 值的因子水平進(jìn)行分析的整個(gè)過(guò)程 是相同的。
候選模型的 RMSE 比較
候選模型1(abalone_model_int_bic)
?``````kable(log_rmseabaone_modlint_bic
候選模型2(abalone_int__candidate_full)
kable(log_rmse(aalone_int_l,pte
kable(log_rmse(abalone_nt_nan
候選模型 3 (abalone_int_infant)
從上面我們可以看到,?候選模型 3 (abalone_int_infant)?在所有三個(gè)模型中表現(xiàn)最好。
候選模型的模型假設(shè)
候選模型1(abalone_model_int_bic)
候選模型的模型假設(shè)
候選模型1(abalone_model_int_bic)
model_assumptions(abalone_model_int_bic,"Candidate?model?1")
候選模型 2 (abalone_int_full)
?``````model_assumption
候選模型 3 (abalone_int_infant)
model_assumption
基于這些圖,我們可以看到我們所有的候選模型都很好地滿(mǎn)足了恒定方差和正態(tài)性假設(shè)。
接下來(lái),我們將比較所有這些候選模型的預(yù)測(cè)和置信區(qū)間,并觀察數(shù)據(jù)中的任何影響點(diǎn)。讓我們看看它。
異常觀察樣本:高杠桿、離群點(diǎn)和影響點(diǎn)
我們將查看每個(gè)候選模型的訓(xùn)練數(shù)據(jù)集中存在的異常觀察結(jié)果。首先我們將分別尋找高杠桿點(diǎn)、離群點(diǎn)和影響點(diǎn),然后通過(guò)公共數(shù)據(jù)點(diǎn)得到具有高杠桿、離群點(diǎn)和影響力的數(shù)據(jù)點(diǎn)。
候選模型1(abalone_model_int_bic)
##?[1]?16
我們看到有 16 個(gè)觀察值是高杠桿、異常值和影響點(diǎn)。
候選模型2(abalone_int_full)
length(comon_mdel_2)
##?[1]?15
在這個(gè)模型中,我們看到有 15 個(gè)觀察值是高杠桿、異常值和有影響的點(diǎn)。
候選模型3(abalone_int_infant)
length(comon_odl_3)
##?[1]?19
這個(gè)模型有 19 個(gè)這樣的觀察結(jié)果,它們是高杠桿、離群點(diǎn)和有影響力的點(diǎn)。
所有候選模型之間的異常觀察
我們現(xiàn)在已經(jīng)編制了候選模型中常見(jiàn)的觀察結(jié)果列表。讓我們來(lái)看看這些,看看是否有任何相似之處。
?``````?intersect(commodl,intersect(commodel1,omomodl_2))length(cmmondaa)
##?[1]?13
我們立即注意到的第一件事是,我們最初在數(shù)據(jù)集中確定為不合邏輯或數(shù)據(jù)輸入錯(cuò)誤的觀察結(jié)果很少。這些觀察結(jié)果具有負(fù)權(quán)重差異,這是不可能的。這是有道理的,因?yàn)樵谟涗洿藬?shù)據(jù)時(shí)可能會(huì)出現(xiàn)一些錯(cuò)誤。
另一種模式是其中一些觀察結(jié)果的整體權(quán)重與平均整體權(quán)重相比超過(guò) 2。此外,這些觀察結(jié)果具有大量環(huán),即這些是較老的鮑魚(yú)。
由于存在其他符合異常觀察條件的觀察結(jié)果,因此總體而言,它們之間沒(méi)有特定的模式。因此,我們不能從我們正在考慮進(jìn)行預(yù)測(cè)的模型和分析中排除這些。
我們將使用平行坐標(biāo)圖來(lái)可視化結(jié)果部分中的任何明顯模式。
讓我們看看一旦我們刪除這些數(shù)據(jù)集,我們的候選模型的表現(xiàn)如何。
刪除異常觀察后的RMSE 分?jǐn)?shù)
接下來(lái),我們將通過(guò)從訓(xùn)練數(shù)據(jù)集中刪除異常觀察并計(jì)算測(cè)試數(shù)據(jù)集的 RMSE 分?jǐn)?shù)來(lái)執(zhí)行快速實(shí)驗(yàn)。
obs_rmse?<-?get_log_rmse_obs(lmlog(_updated)
result?<-?ata.frae(?"Mdel"?=?modelnames,
??????????????????????"RMSE?Train"?=?c(
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??),
?????????? ? ? ? ? ? ? ? ???"RMSE?Test"?=?c(
?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?????????? ? ? ? ? ? ? ? ? ? ???"RMSE?Train?all?Data"?=?c(?
?
?????????? ? ? ? ? ? ? ? ? ? ???"RMSE?Test?all?data"?=?c(
?????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?get_lo_ms(aaloe_modl_intbic)$test,??????????
有趣的是,所有在沒(méi)有異常觀察的情況下訓(xùn)練的模型在測(cè)試數(shù)據(jù)上產(chǎn)生了更好的 rmse。在上表中我們可以看到不同RMSE值的比較。
由于這些不尋常的觀察沒(méi)有揭示任何特定的模式或任何不尋常的行為,我們無(wú)法從我們的數(shù)據(jù)集中刪除這些,并將使用候選模型繼續(xù)我們的分析。
預(yù)測(cè)和置信區(qū)間
#model?1vif(abalone_mdl_ntbic)#model?2#model?3
讓我們從置信區(qū)間開(kāi)始。我們所有候選模型的置信區(qū)間都在相似的范圍內(nèi)。即平均而言,在任何一點(diǎn),所有模型的區(qū)間范圍似乎都相同。請(qǐng)注意,3 個(gè)候選模型中有 2 個(gè)使用了所有預(yù)測(cè)變量,因此具有非常高的共線性。由于我們的模型很好地?cái)M合了數(shù)據(jù),因此平均減少了任何點(diǎn)的方差范圍。這很好。
此外,與置信區(qū)間類(lèi)似,模型之間的預(yù)測(cè)區(qū)間也在相同的范圍內(nèi)。模型擬合再次對(duì)這個(gè)較窄的區(qū)間范圍產(chǎn)生影響。請(qǐng)注意,預(yù)測(cè)區(qū)間比我們預(yù)期的置信區(qū)間寬得多。由于所有模型的預(yù)測(cè)區(qū)間即使在高度共線性之后也處于相似的范圍內(nèi),我們會(huì)說(shuō)這些是好的。我們使用默認(rèn)的 95% 公式來(lái)計(jì)算所有候選模型的置信區(qū)間和預(yù)測(cè)區(qū)間。
基于我們對(duì)所有這些候選模型的分析,我們認(rèn)為候選模型 3 ?abalone_int_infant 將是預(yù)測(cè)鮑魚(yú)年齡的最佳選擇。與其他兩個(gè)候選模型相比,該模型更小,復(fù)雜度更低,但 rmse 最低。此外,模型之間的預(yù)測(cè)和置信區(qū)間非常相似。由于這些原因,我們將選擇模型 abalone_int_infant 作為我們分析的最佳模型。
預(yù)測(cè)鮑魚(yú)的年齡
現(xiàn)在讓我們使用我們選擇的模型預(yù)測(cè)鮑魚(yú)的年齡。我們將從測(cè)試數(shù)據(jù)中隨機(jī)選擇 5 個(gè)觀察值并嘗試預(yù)測(cè)年齡。請(qǐng)注意,該模型實(shí)際上預(yù)測(cè)了鮑魚(yú)中的環(huán)數(shù)。我們需要在環(huán)數(shù)中加上 1.5 才能確定鮑魚(yú)的真實(shí)年齡。所以本質(zhì)上,我們將比較模型預(yù)測(cè)的環(huán)數(shù)與測(cè)試數(shù)據(jù)集中的實(shí)際環(huán)數(shù)。
?``````#從測(cè)試數(shù)據(jù)中隨機(jī)抽取5個(gè)觀察值sample?<-?sample_n(test_data,?5)exp(predict(?ta=sample?)
我們可以從上面的例子中看到,我們從測(cè)試和模型中計(jì)算了環(huán)數(shù)和年齡,用于少數(shù)觀察。我們看到我們的模型正確預(yù)測(cè)了鮑魚(yú)的年齡,或者非常接近鮑魚(yú)的實(shí)際年齡。這些是模型以前從未見(jiàn)過(guò)的測(cè)試數(shù)據(jù)中的 5 個(gè)樣本觀察值。我們可以多取一些并執(zhí)行相同的過(guò)程,看看我們的模型對(duì)鮑魚(yú)年齡的預(yù)測(cè)效果如何。
在這份分析報(bào)告中,我們應(yīng)用了各種多元回歸技術(shù)和方法,但這并不意味著這個(gè)問(wèn)題不能使用其他更先進(jìn)的技術(shù)來(lái)解決。我們嘗試應(yīng)用一些超出本報(bào)告范圍的先進(jìn)方法,只是為了評(píng)估這些技術(shù)是否可以進(jìn)一步改進(jìn)我們的預(yù)測(cè)。
使用先進(jìn)技術(shù)
在本節(jié)中,我們超越了傳統(tǒng)的常見(jiàn)回歸技術(shù),并嘗試應(yīng)用一些先進(jìn)的技術(shù),看看我們是否可以創(chuàng)建一個(gè)具有較低測(cè)試 RMSE 的模型。
Elastic Net 彈性網(wǎng)絡(luò)是一種正則化回歸方法,它線性組合了 lasso 和 ridge 方法的 L1 和 L2 懲罰。
我們將嘗試使用彈性網(wǎng)絡(luò)來(lái)進(jìn)一步優(yōu)化我們的預(yù)測(cè)。
與 lasso 和 ridge 一樣,截距不會(huì)受到懲罰,并且 glment 在內(nèi)部負(fù)責(zé)標(biāo)準(zhǔn)化。
我們將使用與候選模型 3 (abalone_int_infant) 中相同的預(yù)測(cè)變量。
?train(
??Rings?~ke_ight,?4)?+?pol(Shell_weigh,?4)?+?Infant?+?Diameter:poly(Shucked_weight,?4)??poly(Shuckedwight,?4:Infant,daa=abalone_trai
??method?=?"glmnet",
??trControl?=?cv_10,
kable(result,?digit
我們看到訓(xùn)練和測(cè)試 rmse 結(jié)果都低于我們的候選模型。
隨機(jī)森林回歸
隨機(jī)森林或隨機(jī)決策森林是一種用于分類(lèi)、回歸和任務(wù)的集成學(xué)習(xí)方法,它通過(guò)在訓(xùn)練時(shí)構(gòu)建大量決策樹(shù)并輸出類(lèi)別(在分類(lèi)的情況下)或平均預(yù)測(cè)來(lái)進(jìn)行操作(在回歸的情況下)單個(gè)樹(shù)。隨機(jī)決策森林糾正了 Doe 決策樹(shù)過(guò)度擬合訓(xùn)練數(shù)據(jù)集的習(xí)慣。
我們?cè)谶@里實(shí)現(xiàn)了隨機(jī)森林回歸模型進(jìn)行預(yù)測(cè),看看我們是否可以進(jìn)一步改進(jìn)。隨機(jī)森林回歸模型的 RMSE 結(jié)果比候選模型的 RMSE Score 更好。
?bm(Rig?~,?daa??aloeran?stbton?=?"gausian",?ntre?=,?inrtindeth??3,?shrinkage?=?0.01)
以下是隨機(jī)森林方法的一些優(yōu)缺點(diǎn)
它不對(duì)數(shù)據(jù)分布做出任何假設(shè)。
自動(dòng)擬合高度非線性的交互。
通過(guò)接近度很好地處理缺失值。
即使對(duì)于大型數(shù)據(jù)集也能快速擬合。
已經(jīng)觀察到隨機(jī)森林對(duì)某些具有嘈雜分類(lèi)/回歸任務(wù)的數(shù)據(jù)集過(guò)度擬合。
如果樹(shù)不小就不容易解釋
結(jié)果
本報(bào)告系統(tǒng)地處理了預(yù)測(cè)鮑魚(yú)年齡的任務(wù)。探索了第一個(gè)數(shù)據(jù)集,發(fā)現(xiàn)了不尋常的觀察結(jié)果,并對(duì)變量進(jìn)行了適當(dāng)?shù)臉?biāo)準(zhǔn)化。
我們從一個(gè)加法模型開(kāi)始,該模型包含所有名為abalone_add的預(yù)測(cè)變量 。我們繼續(xù)檢查各種假設(shè)和測(cè)試,以進(jìn)一步提高模型的準(zhǔn)確性并降低 rmse。
然后,我們對(duì)因變量和預(yù)測(cè)變量進(jìn)行了多次轉(zhuǎn)換。當(dāng)我們執(zhí)行各種變量選擇程序時(shí),我們看到了 rmse 的改進(jìn)。
經(jīng)過(guò)我們的分析,我們找到了幾個(gè)不錯(cuò)的候選模型,我們選擇了模型 abalone_int_infant 作為我們的最佳模型。
以下是一些重要的關(guān)鍵點(diǎn),說(shuō)明了我們對(duì)這一結(jié)論的選擇。
應(yīng)用上述技術(shù)后,我們得出了 3 個(gè)可能的候選模型。
候選模型 1 是 abalone_model_int_bic ?,這是對(duì)交互模型的各種選擇過(guò)程的結(jié)果。我們看到這個(gè)模型 AIC 得分最低,rmse 排名第二。模型包含一些高共線預(yù)測(cè)變量,但當(dāng)檢查 rmse、預(yù)測(cè)和置信區(qū)間時(shí),這是一個(gè)合適的選擇。
候選模型 2 是 abalone_int_full?;叵胍幌?,詳盡的搜索過(guò)程表明,當(dāng)我們所有的預(yù)測(cè)變量,我們得到最好的模型。所以我們決定添加模型中交互項(xiàng)和多項(xiàng)式次數(shù)為 4 的所有預(yù)測(cè)變量。該模型具有最高的多重共線性,但從 rmse 和預(yù)測(cè)以及置信區(qū)間來(lái)看是非常合理的。
候選模型 3 是 abalone_int_infant。正如我們最初的數(shù)據(jù)分析表明分類(lèi)變量 Sex 有 3 個(gè)因子水平。female, male 和 infant。水平 female 和 male 我們?cè)诜植挤矫鏄O其相似,因此我們將這兩個(gè)水平合二為一,使預(yù)測(cè)變量的總水平為 Sex 兩個(gè)。由于這種級(jí)別的降低,與前兩個(gè)模型相比,該模型可能是最簡(jiǎn)單的模型。我們對(duì)此進(jìn)行了徹底的分析,最終模型具有相似的 rmse、預(yù)測(cè)和置信區(qū)間。這就是我們選擇該模型作為候選模型之一的原因。
在以上 3 個(gè)候選模型中,候選模型 3 ?abalone_int_infant 稍微好一點(diǎn),同時(shí)也不太復(fù)雜,因此它是我們進(jìn)行此分析的首選模型。這有很多原因。讓我們討論一下。
以下是為此分析選擇的模型的公式
?lm(log(Rings)?~??Height?+?Diameter?+?poly(Whole_weight,?4)?+
??poly(Viscera_weight,?4)?+?poly(Shucked_weight,4)?+?poly(Shell_weight,?4)?+?Infant?+?Diameter:poly(Shucked_weight,?4)?+?poly(Shucked_weight,??4):Infant
這是所有 3 個(gè)候選模型的測(cè)試/訓(xùn)練 RMSE 的快速比較。
下圖顯示了整個(gè)分析報(bào)告中所選模型的 rmse(以紅色標(biāo)記)、候選模型和模型的其余部分以及它們的測(cè)試 rmse 比較。我們可以清楚地看到,我們選擇的模型?abalone_int_infant?也在
int infant
?下面的圖中重命名?,其測(cè)試 rmse 最低。
這里一個(gè)明確的模式是,當(dāng)模型更小、更簡(jiǎn)單時(shí),測(cè)試 rmse 很高,但隨著我們改進(jìn)模型并開(kāi)始變得更加靈活(因此模型長(zhǎng)度更大),測(cè)試 rmse 下降。
以下是所選模型的正態(tài)性假設(shè)。我們可以清楚地看到,當(dāng)我們用對(duì)數(shù)變換和交互項(xiàng)擬合模型時(shí),常數(shù)變化和正態(tài)性假設(shè)變得越來(lái)越好。
這里要注意的一個(gè)關(guān)鍵點(diǎn)是,多重共線性的存在并沒(méi)有真正影響預(yù)測(cè)(這是我們分析的目標(biāo)),我們能夠?qū)⑵溆绊懡档偷揭欢ǔ潭?。我們通過(guò)擬合與殘差圖驗(yàn)證了這一點(diǎn),可以看出我們選擇的模型具有以殘差為中心的殘差, 0 并且大致是恒定的變化。
如果我們使用平行坐標(biāo)圖繪制異常觀測(cè)值,我們可以看到 Height 這些觀測(cè)值與鮑魚(yú)的平均高度相比更短。Whole_weight 和 Viscera_weight which as lower也是如此 。此外 weight.diff ,其中一些觀察結(jié)果是否定的,這是我們?cè)诔跏紨?shù)據(jù)分析期間發(fā)現(xiàn)的。
下面的平行坐標(biāo)圖描繪了這些異常觀察的特征,其中嬰兒 = 1(橙色線)和非嬰兒 [男/女] = 2(藍(lán)線)。
現(xiàn)在,如果我們只是從我們的訓(xùn)練數(shù)據(jù)中抽取一個(gè)樣本并使用平行坐標(biāo)繪圖,我們可以看到一般情況下?Height
,?Whole_weight
?并且?Viscera_weight
?均勻分布。
我們還看到從數(shù)據(jù)集中刪除異常觀察進(jìn)一步降低了測(cè)試 rmse,但是我們沒(méi)有從我們的數(shù)據(jù)集中刪除那些,因?yàn)樗鼈兯坪跏怯行У募僭O(shè)而不是極端情況。
我們可以看到的均方根誤差得分?
Elastic Net
?和?Random Forest
?比我們的候選模型較低,但差別不是很顯著。
討論
讓我們從我們正在分析的數(shù)據(jù)集開(kāi)始討論。從最初的匯總統(tǒng)計(jì)數(shù)據(jù)中,我們看到數(shù)據(jù)中存在非常高的共線性。幾乎所有的變量都有很高的 vif 值。
我們所做的另一個(gè)重要觀察是數(shù)據(jù)質(zhì)量。我們發(fā)現(xiàn)在某些情況下沒(méi)有正確記錄觀察結(jié)果。例如,對(duì)于 2 個(gè)觀察,高度為 0,這實(shí)際上是不可能的。但是當(dāng)我們查看整個(gè)觀察結(jié)果和其他變量時(shí),我們沒(méi)有發(fā)現(xiàn)任何異常模式。我們意識(shí)到這可能是數(shù)據(jù)輸入錯(cuò)誤,因此我們決定將它們保留在我們的數(shù)據(jù)集中進(jìn)行分析。以下是這 2 個(gè)觀察結(jié)果。
我們還看到,有些觀察結(jié)果不符合邏輯。預(yù)測(cè)器 Whole_weight 被認(rèn)為是預(yù)測(cè)的線性函數(shù) Shucked_weight, ?Viscera_weight, Shell_weight 并在去殼過(guò)程中損失的血液/水的加成未知質(zhì)量。換句話說(shuō),所有其他權(quán)重預(yù)測(cè)變量的總和應(yīng)該等于或小于 Whole_weight。但是我們發(fā)現(xiàn) 153 這樣的觀察違反了這個(gè)假設(shè)。仔細(xì)觀察后,我們發(fā)現(xiàn)觀察結(jié)果之間沒(méi)有相似之處或任何模式,因此我們得出結(jié)論,這可能只是數(shù)據(jù)記錄錯(cuò)誤,因此這些觀察結(jié)果并未從數(shù)據(jù)集中刪除。以下是這些 153 觀察結(jié)果。
我們?cè)谔剿餍苑治鲋邪l(fā)現(xiàn)的下一個(gè)有趣趨勢(shì)是預(yù)測(cè)Sex 因子水平的分布 。因子水平female 和 male 所有其他預(yù)測(cè)因子 都非常相似。此外,整體數(shù)據(jù)也大致均勻地分布在female、 male 和 的 水平值之間 infant。以下是水平之間的分布及其相對(duì)于其他預(yù)測(cè)變量和響應(yīng)變量的總體分布。
在上面的箱線圖中,我們可以看到
female
?和?的分布形狀?male
?對(duì)于所有預(yù)測(cè)變量都非常相似。現(xiàn)在讓我們來(lái)看看它的頻率。
同樣,它非常相似。這些結(jié)果為我們指明了另一個(gè)方向,通過(guò)將female 和 組合male 成一個(gè)級(jí)別名稱(chēng)作為 ,我們?cè)跀?shù)據(jù)集中創(chuàng)建了一個(gè)新變量 non-infant。所以現(xiàn)在新的分類(lèi)變量有兩個(gè)級(jí)別 infant 和 non-infant。在我們的一個(gè)候選模型中,我們使用這個(gè)新的分類(lèi)而不是原始的來(lái)查看其效果。最后,這是我們選擇的模型。
初始數(shù)據(jù)分析期間的下一個(gè)重要發(fā)現(xiàn)是預(yù)測(cè)變量之間存在非常高的多重共線性。這是有道理的,因?yàn)槲覀冎鞍l(fā)現(xiàn) Whole_weight 預(yù)測(cè)在某種程度上依賴(lài)于其他重量預(yù)測(cè)。Length 鮑魚(yú)的 Diameter. 以下是 來(lái)自加法模型的模型系數(shù)的 變異膨脹因子值。
##???????????SexI???????????SexM?????????Length???????Diameter?????????Height?##???????1.982824???????1.400405??????42.874862??????44.907429???????3.114493?##???Whole_weight?Shucked_weight?Viscera_weight???Shell_weight?##?????118.819537??????29.579686??????18.591058??????22.182789
初始模型違反了恒定方差和正態(tài)性假設(shè)。使用各種方差穩(wěn)定技術(shù)和轉(zhuǎn)換,我們能夠提出一個(gè)很好的模型。這些選定的候選模型使用了交互項(xiàng)、預(yù)測(cè)變量的多項(xiàng)式變換和響應(yīng)變量的對(duì)數(shù)變換。
有趣的是,即使存在高度多重共線性,在模型選擇過(guò)程中,我們最終還是選擇了具有所有 8 個(gè)參數(shù)的模型。即所有的選擇程序都表明當(dāng)使用模型中的所有預(yù)測(cè)變量時(shí),最低的 AIC 出現(xiàn)。盡管在我們使用各種響應(yīng)和預(yù)測(cè)變量轉(zhuǎn)換進(jìn)行模型選擇之后,我們能夠在保持相似的測(cè)試 rmse 的同時(shí)稍微減小模型的大小。
我們看到我們幾乎沒(méi)有對(duì)降低測(cè)試 rmse 有輕微影響的異常觀察,但由于這些觀察不代表顯著變化或移動(dòng)模型系數(shù),我們沒(méi)有將它們從數(shù)據(jù)集中刪除。
在數(shù)據(jù)的背景下談?wù)撨@個(gè)分析,我們可以從模型中看到, Length 變量可能不會(huì)成為預(yù)測(cè)鮑魚(yú)年齡的重要因素。我們可以看到我們沒(méi)有在我們的模型中選擇這個(gè)。這種情況是有意義的,因?yàn)?Length 或多或少地相關(guān) Diameter (即長(zhǎng)度越大直徑越大),并且由于我們已經(jīng)將直徑帶入我們的模型,所以我們不需要鮑魚(yú)數(shù)據(jù)集中的長(zhǎng)度。
預(yù)測(cè)時(shí)另一個(gè)非常有趣的事實(shí)是,不能單獨(dú)使用整個(gè)體重來(lái)預(yù)測(cè)年齡。我們知道,鮑魚(yú)的去殼過(guò)程會(huì)使鮑魚(yú)的血液和水分變干,然后再稱(chēng)重,不同階段(去皮、去殼、干燥)的重量組合也是決定鮑魚(yú)年齡的重要因素。
我們從測(cè)試數(shù)據(jù)中抽取了 10 個(gè)樣本觀察值,并使用我們選擇的模型 (abalone_int_infant) 預(yù)測(cè)了年齡,平均而言,它正確預(yù)測(cè)了 10 次中的第 3 次。從所選模型 (2.2021) 的測(cè)試 rmse 值考慮出響應(yīng)變量環(huán)的范圍(1 到 29),我們認(rèn)為我們的模型非常適合預(yù)測(cè)鮑魚(yú)的年齡。
數(shù)據(jù)獲取
在下面公眾號(hào)后臺(tái)回復(fù)“鮑魚(yú)數(shù)據(jù)”,可獲取完整數(shù)據(jù)。
本文摘選?《?R語(yǔ)言用加性多元線性回歸、隨機(jī)森林、彈性網(wǎng)絡(luò)模型預(yù)測(cè)鮑魚(yú)年齡和可視化?》?,點(diǎn)擊“閱讀原文”獲取全文完整資料。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語(yǔ)言高維數(shù)據(jù)懲罰回歸方法:主成分回歸PCR、嶺回歸、lasso、彈性網(wǎng)絡(luò)elastic net分析基因數(shù)據(jù)(含練習(xí)題)
Python中LARS和Lasso回歸之最小角算法Lars分析波士頓住房數(shù)據(jù)實(shí)例
R語(yǔ)言Bootstrap的嶺回歸和自適應(yīng)LASSO回歸可視化
R語(yǔ)言Lasso回歸模型變量選擇和糖尿病發(fā)展預(yù)測(cè)模型R語(yǔ)言實(shí)現(xiàn)貝葉斯分位數(shù)回歸、lasso和自適應(yīng)lasso貝葉斯分位數(shù)回歸分析
基于R語(yǔ)言實(shí)現(xiàn)LASSO回歸分析
R語(yǔ)言用LASSO,adaptive LASSO預(yù)測(cè)通貨膨脹時(shí)間序列
R語(yǔ)言自適應(yīng)LASSO 多項(xiàng)式回歸、二元邏輯回歸和嶺回歸應(yīng)用分析
R語(yǔ)言懲罰logistic邏輯回歸(LASSO,嶺回歸)高維變量選擇的分類(lèi)模型案例
Python中的Lasso回歸之最小角算法LARS
r語(yǔ)言中對(duì)LASSO回歸,Ridge嶺回歸和彈性網(wǎng)絡(luò)Elastic Net模型實(shí)現(xiàn)
r語(yǔ)言中對(duì)LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
R語(yǔ)言實(shí)現(xiàn)LASSO回歸——自己編寫(xiě)LASSO回歸算法
R使用LASSO回歸預(yù)測(cè)股票收益
python使用LASSO回歸預(yù)測(cè)股票收益