數(shù)據(jù)分享|R語言用主成分PCA、 邏輯回歸、決策樹、隨機(jī)森林分析心臟病數(shù)據(jù)并高維可視化
全文鏈接:http://tecdat.cn/?p=22262
最近我們被客戶要求撰寫關(guān)于心臟病數(shù)據(jù)的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
在討論分類時(shí),我們經(jīng)常分析二維數(shù)據(jù)(一個(gè)自變量,一個(gè)因變量)
但在實(shí)際生活中,有更多的觀察值,更多的解釋變量。隨著兩個(gè)以上的解釋變量,它開始變得更加復(fù)雜的可視化。
數(shù)據(jù)
我們使用心臟病數(shù)據(jù)?(?查看文末了解數(shù)據(jù)獲取方式?)?,預(yù)測急診病人的心肌梗死,包含變量:
心臟指數(shù)
心搏量指數(shù)
舒張壓
肺動(dòng)脈壓
心室壓力
肺阻力
是否存活
其中我們有急診室的觀察結(jié)果,對于心肌梗塞,我們想了解誰存活下來了,以得到一個(gè)預(yù)測模型。但是在運(yùn)行一些分類器之前,我們先把我們的數(shù)據(jù)可視化。
主成分PCA
由于我們有7個(gè)解釋變量和我們的因變量(生存或死亡),我們可以去做一個(gè)PCA。
acp=PCA(X)
添加死亡生存變量,就把它當(dāng)作數(shù)字0,1變量。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
數(shù)據(jù)分享|R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病
左右滑動(dòng)查看更多
01
02
03
04
?是否存活=?是否存活=="存活")*1
結(jié)果不錯(cuò),我們看到因變量與部分自變量是同向的。也可以可視化樣本和類別
plot(cp??)
我們可以在這里推導(dǎo)出一個(gè)不錯(cuò)的分類器。至少,在前兩個(gè)成分上投影時(shí),我們可以看到我們的類別。
現(xiàn)在,我們不能在前兩個(gè)主成分上得到一個(gè)分類器并將其可視化嗎????因?yàn)镻CA是簡單的基于正交投影的,所以我們可以(這里的數(shù)據(jù)是標(biāo)準(zhǔn)化的)。給定前兩個(gè)分量平面上的兩個(gè)坐標(biāo),給定我們的變換矩陣、歸一化分量和一個(gè)分類器(這里是基于邏輯回歸),我們可以回到原始空間,并對新數(shù)據(jù)進(jìn)行分類。
PCA(X,ncp=ncol(X))function(d1,d2,Mat,reg){
??z=Mat?%*%?c(d1,d2,rep(0,ncol(X)-2))
??newd=data.frame(t(z*s+m))pred(reg,?newd??}
?邏輯回歸
現(xiàn)在考慮一個(gè)邏輯回歸。只是為了簡化(去掉非顯著變量),我們使用一個(gè)逐步回歸的程序來簡化模型。
reg_tot=step(glm(是否存活~.?,family=binomial))
可視化等概率線(如個(gè)人有50%的生存機(jī)會(huì))使用以下
xgrid=seq(-5,5,length=25?)ygrid=seq(-5,5,length=25?)zgrid=ter(xgrid,ygrid,p)
然后,我們在之前的圖形上添加一條等高線
PCA(data,quali.sup=8?)contour(?zgrid?)
結(jié)果不差,但我們應(yīng)該可以做得更好。如果我們把所有的變量都保留在這里(即使它們不重要),會(huì)怎么樣呢?
?glm(是否存活~.,?
????????????family=binomial)
?contour(xgrid,ygrid,zgrid?)
在現(xiàn)實(shí)生活中,要想真正說出我們的分類器的一些相關(guān)信息,我們應(yīng)該在觀測值的一個(gè)子集上擬合我們的模型,然后在另一個(gè)子集上測試它。在這里,我們的目標(biāo)更多的是在某個(gè)投影空間上得到一個(gè)函數(shù)來可視化我們的分類。
決策樹
默認(rèn)分類樹
>?plot(?re,type=4,extra=6)
我們可以在此更改選項(xiàng),例如每個(gè)節(jié)點(diǎn)的最小觀察數(shù)
rpart(factor(是否存活)~?,
+???????control=rpart.control(minsplit=10))
或者
?rpart(?
+????????control=rpart.control(minsplit=5))
要將該分類可視化,獲得前兩個(gè)成分的投影
>?p=function(d1,d2)?pred2(d1,d2?)
>?zgrid=Outer(xgrid,ygrid,p)
?PCA(??quali.sup=8,graph=TRUE)
>?image(xgrid,ygrid,zgrid?)
>?contour(xgrid,ygrid,zgrid,add=TRUE,levels=.5)
也可以考慮這種情況
?rpart(?control=rpart.control(minsplit=5))
最后,我們還可以生成更多的樹,通過采樣獲得。這就是bagging的概念:我們boostrap 觀測值,生長一些樹,然后,我們將預(yù)測值進(jìn)行匯總。在網(wǎng)格上
?>?for(i?in?1:1200){
+?indice?=?sample(1:nrow(MYOCARDE),
?+?arbre_b?=?rpart(factor(是否存活)~.,
+}
>Zgrid?=?Z/1200
可視化
最后,可以使用隨機(jī)森林算法。
>?fore=?randomForest(factor(是否存活)~.,
>?pF=function(d1,d2)?pred2(d1,d2,Minv,fore)
>?zgridF=Outer(xgrid,ygrid,pF)
PCA(data,.sup=8,graph=TRUE)
>?image(xgrid,ygrid,Zgrid,add=TRUE,
>?contour(xgrid,ygrid,zgridF,
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析案例報(bào)告
R語言懲罰logistic邏輯回歸(LASSO,嶺回歸)高維變量選擇的分類模型案例
R語言有RStan的多維驗(yàn)證性因子分析(CFA)
主成分分析(PCA)原理及R語言實(shí)現(xiàn)及分析實(shí)例
R語言無監(jiān)督學(xué)習(xí):PCA主成分分析可視化
R語言使用Metropolis- Hasting抽樣算法進(jìn)行邏輯回歸
R語言多元Logistic邏輯回歸 應(yīng)用案例
R語言自適應(yīng)LASSO 多項(xiàng)式回歸、二元邏輯回歸和嶺回歸應(yīng)用分析
R語言用邏輯回歸、決策樹和隨機(jī)森林對信貸數(shù)據(jù)集進(jìn)行分類預(yù)測
R語言基于樹的方法:決策樹,隨機(jī)森林,Bagging,增強(qiáng)樹
spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測ST的股票
R語言中自編基尼系數(shù)的CART回歸決策樹的實(shí)現(xiàn)
python在Scikit-learn中用決策樹和隨機(jī)森林預(yù)測NBA獲勝者
matlab使用分位數(shù)隨機(jī)森林(QRF)回歸樹檢測異常值
基于隨機(jī)森林、svm、CNN機(jī)器學(xué)習(xí)的風(fēng)控欺詐識(shí)別模型
R語言懲罰logistic邏輯回歸(LASSO,嶺回歸)高維變量選擇的分類模型案例
R語言用標(biāo)準(zhǔn)最小二乘OLS,廣義相加模型GAM?,樣條函數(shù)進(jìn)行邏輯回歸LOGISTIC分類