本內(nèi)容為【科研私家菜】R語言機(jī)器學(xué)習(xí)與臨床預(yù)測(cè)模型系列課程
R小鹽準(zhǔn)備介紹R語言機(jī)器學(xué)習(xí)與預(yù)測(cè)模型的學(xué)習(xí)筆記
你想要的R語言學(xué)習(xí)資料都在這里斩披, 快來收藏關(guān)注【科研私家菜】
[圖片上傳失敗...(image-fd5bf4-1648433074208)]
01 什么是分類回歸樹CART堆巧?
分類回歸樹(Classification and Regression Tree, CART)是一種經(jīng)典的決策樹,可以用來處理涉及連續(xù)數(shù)據(jù)的分類或者回歸任務(wù)闯割。分類回歸樹 既可以用于創(chuàng)建分類樹 (classification tree),也可以用于創(chuàng)建回歸樹 (regression Tree)
回歸樹:用平方殘差 (square of residual) 最小化準(zhǔn)則來選擇特征,葉子上是實(shí)數(shù)值
分類樹:用基尼指數(shù) (Gini index) 最小化準(zhǔn)則來選擇特征官扣。葉子上是類別值
分類樹與回歸樹的區(qū)別在樣本的輸出墩莫,如果樣本輸出是離散值芙委,這是分類樹;樣本輸出是連續(xù)值狂秦,這是回歸樹灌侣。分類樹的輸出是樣本的類別,回歸樹的輸出是一個(gè)實(shí)數(shù)裂问。
分類模型:采用基尼系數(shù)的大小度量特征各個(gè)劃分點(diǎn)的優(yōu)劣侧啼。
回歸模型:采用誤差平方和度量牛柒。
CART算法步驟:
- 特征選擇;
- 遞歸建立決策樹慨菱;
- 決策樹剪枝焰络;
02 CART分類樹算法
CART分類樹算法使用基尼系數(shù)選擇特征,基尼系數(shù)代表了模型的不純度符喝,基尼系數(shù)越小闪彼,不純度越低,特征越好协饲。這和信息增益(率)相反畏腕。
基尼系數(shù)
數(shù)據(jù)集D的純度可用基尼值來度量
[圖片上傳失敗...(image-199e9f-1648433074208)]
[圖片上傳失敗...(image-47dc2d-1648433074208)]
[圖片上傳失敗...(image-d9ac21-1648433074208)]
建立CART分類樹步驟
[圖片上傳失敗...(image-9dac9e-1648433074208)]
03 CART回歸樹算法
建立CART回歸樹步驟
[圖片上傳失敗...(image-7a5d24-1648433074208)]
04 CART的R語言實(shí)現(xiàn)
####加載程序包
library(rpart) #classification and regression trees
library(partykit) #treeplots
library(MASS) #breast and pima indian data
library(ElemStatLearn) #prostate data
library(randomForest) #random forests
library(xgboost) #gradient boosting
library(caret) #tune hyper-parameters
###########CART first
data(prostate)
prostate$gleason <- ifelse(prostate$gleason == 6, 0, 1)
pros.train <- subset(prostate, train == TRUE)[, 1:9]
pros.test = subset(prostate, train == FALSE)[, 1:9]
set.seed(123)
tree.pros <- rpart(lpsa ~ ., data = pros.train)
tree.pros$cptable
plotcp(tree.pros)
cp <- min(tree.pros$cptable[5, ])
prune.tree.pros <- prune(tree.pros, cp = cp)
plot(as.party(tree.pros))
plot(as.party(prune.tree.pros))
party.pros.test <- predict(prune.tree.pros,
newdata = pros.test)
rpart.resid <- party.pros.test - pros.test$lpsa #calculate residual
mean(rpart.resid^2)
########CART breast cancer
data(biopsy)
biopsy <- biopsy[, -1]
names(biopsy) <- c("thick", "u.size", "u.shape", "adhsn", "s.size", "nucl", "chrom", "n.nuc", "mit", "class")
biopsy.v2 <- na.omit(biopsy)
set.seed(123) #random number generator
ind <- sample(2, nrow(biopsy.v2), replace = TRUE, prob = c(0.7, 0.3))
biop.train <- biopsy.v2[ind == 1, ] #the training data set
biop.test <- biopsy.v2[ind == 2, ] #the test data set
str(biop.test)
set.seed(123)
tree.biop <- rpart(class ~ ., data = biop.train)
tree.biop$cptable
cp <- min(tree.biop$cptable[3, ])
prune.tree.biop = prune(tree.biop, cp <- cp)
# plot(as.party(tree.biop))
plot(as.party(prune.tree.biop))
rparty.test <- predict(prune.tree.biop, newdata = biop.test,
type = "class")
table(rparty.test, biop.test$class)
(136+64)/209
[圖片上傳失敗...(image-c9582e-1648433074208)]
[圖片上傳失敗...(image-f5586c-1648433074208)]
[圖片上傳失敗...(image-7e7f72-1648433074208)]
[圖片上傳失敗...(image-557545-1648433074208)]
05 總結(jié)
數(shù)據(jù)集中會(huì)包含一些復(fù)雜的相互關(guān)系,使輸入數(shù)據(jù)和目標(biāo)變量之間存在非線性的關(guān)系茉稠。對(duì)于這種復(fù)雜關(guān)系的建模描馅,一種可行的方式是使用樹來對(duì)預(yù)測(cè)值分段,包括分段常數(shù)(回歸樹)和分段直線(模型樹)而线。
CART算法可以用于構(gòu)建二元樹并處理離散型或連續(xù)型數(shù)據(jù)的切分铭污。若使用不同的誤差準(zhǔn)則,就可以通過CART算法構(gòu)建模型樹和回歸樹膀篮。但是嘹狞,該算法構(gòu)建的樹傾向于對(duì)數(shù)據(jù)過擬合,可采用剪枝的方法解決該問題誓竿。剪枝分為預(yù)剪枝(在樹的構(gòu)建過程中就就進(jìn)行剪枝)和后剪枝(樹構(gòu)建完畢進(jìn)行剪枝)磅网。預(yù)剪枝更有效但需要用戶定義一些參數(shù)。一般地筷屡,為了尋找最佳模型可以同時(shí)使用兩種剪枝技術(shù)涧偷。
CART可以被看做決策樹的升級(jí)版本,用于處理連續(xù)數(shù)據(jù)毙死。
決策樹的思想雖然比較粗暴燎潮,但是可解釋很強(qiáng)、計(jì)算效率也比較高规哲,應(yīng)用非常廣泛跟啤。如果配合剪枝、集成等策略唉锌,我們可以基于C4.5隅肥、CART這類模型構(gòu)建出很多非常優(yōu)秀的模型,比如隨機(jī)森林袄简、隨機(jī)梯度上升樹等等腥放。
在構(gòu)建決策樹的過程中,我們?cè)u(píng)估了每一種特征绿语,在對(duì)樣本進(jìn)行分組時(shí)的能力大小——這個(gè)分?jǐn)?shù)可以作為特征工程中秃症,特征選擇的依據(jù)候址。因此,有時(shí)候我們也會(huì)使用決策樹來做特征選擇种柑。
參考資料:
https://zhuanlan.zhihu.com/p/139523931
https://zhuanlan.zhihu.com/p/139519852
關(guān)注R小鹽岗仑,關(guān)注科研私家菜(VX_GZH: SciPrivate),有問題請(qǐng)聯(lián)系R小鹽聚请。讓我們一起來學(xué)習(xí) R語言機(jī)器學(xué)習(xí)與臨床預(yù)測(cè)模型