基于R语言分析决策树和随机森林(1)
決策樹和隨機(jī)森林是機(jī)器學(xué)習(xí)的一個重要內(nèi)容。今天主要來說說決策樹,決策樹分為傳統(tǒng)的決策樹和條件決策樹,傳統(tǒng)決策樹(rpart包實(shí)現(xiàn))主要是基于:基尼不純度(Gini Impurity)或信息增益(Information Gain)等標(biāo)準(zhǔn)對節(jié)點(diǎn)進(jìn)行遞歸分割。條件決策樹會根據(jù)條件分布測量變量與響應(yīng)值(分類)之間的相關(guān)關(guān)系,選擇分割節(jié)點(diǎn)中要使用的變量,可以改善rpart包過度擬合的問題。今天我們主要來聊聊條件決策樹,假如你是一個銀行的經(jīng)理,有客戶來向你貸款,對于還款能力強(qiáng)(低風(fēng)險)的客戶,你肯定愿意貸款給他,而對于還款能力差(高風(fēng)險)的客戶,你肯定不愿意貸款給他。那么,我們怎么評定對一個客戶進(jìn)行風(fēng)險評估呢,肯定是基于既往的數(shù)據(jù)根據(jù)他的職業(yè)、收入、負(fù)債、資產(chǎn)等等做評估,大概就是下圖這樣做了一個分類的決策,我們的決策樹大概就是這樣的一個操作原理 ,等于機(jī)器算法幫你做了決策。
我們今天來使用SPSS自帶的一個銀行1500例客戶進(jìn)行風(fēng)險劃分的數(shù)據(jù)集,來做一個條件決策樹,R語言需要使用到party、caret、pROC、foreign包需要事先下載好
我們先導(dǎo)入數(shù)據(jù)看下數(shù)據(jù)結(jié)構(gòu)
前面3項是ID號,后面3項是預(yù)測概率和權(quán)重,我們先不理他。我們來看看中間的項目指標(biāo):Age年齡,ed教育程度,employ在職雇主的年限,address在這個地方住的時間income收入,debtinc債務(wù)收入比,creddebt信用卡債務(wù),othdebt其他債務(wù),最后一個default是我們的結(jié)局指標(biāo),即是否是高風(fēng)險客戶。
其中ed教育程度、default是分類變量,我們要進(jìn)行轉(zhuǎn)換一下
接下來要把數(shù)據(jù)分成預(yù)測集和驗證集(就是一個建模,一個驗證),要先設(shè)一個種子,這樣有可重復(fù)性
###建立預(yù)測和驗證集 sub<-sample(1:nrow(bc),round(nrow(bc)*2/3)) length(sub) data_train<-bc[sub,]#取2/3的數(shù)據(jù)做訓(xùn)練集 data_test<-bc[-sub,]#取1/3的數(shù)據(jù)做測試集 ###訓(xùn)練集建立模型 fit<-ctree(default ~age+ed+employ+address+income+debtinc+creddebt+othdebt,data=data_train,controls = ctree_control(maxsurrogate = 3)) fit plot(fit)得到如下結(jié)果,可以看到第一級的分支從debtinc債務(wù)收入比是否大于16進(jìn)行分割
表不好理解的話看圖就容易理解多了,債務(wù)比大于16的對工作年限進(jìn)行了劃分,小于6年的就是高風(fēng)險人群,屬于不能貸款類型。
接下來我們進(jìn)行交叉驗證評估模型的驗證能力,先在驗證集生成預(yù)測模型的概率
我們可以看到預(yù)測0還是挺準(zhǔn)的,1就差點(diǎn)了,通過混淆矩陣可以計算出AUC和95%CI
我們還可以通過treeresponse函數(shù)把概率提取出來
和混淆矩陣算出來的AUC差不多,稍微高了一點(diǎn),我看別人算也是高了一點(diǎn),個人感覺這樣提取概率算出來更加準(zhǔn)確,決策樹由于隨機(jī)性導(dǎo)致誤差稍高,我們可以通過隨機(jī)森林來減少誤差和優(yōu)化模型,下節(jié)將繼續(xù)介紹隨機(jī)森林。
更多精彩文章請關(guān)注公眾號:零基礎(chǔ)說科研
總結(jié)
以上是生活随笔為你收集整理的基于R语言分析决策树和随机森林(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高等数学(上)思维导图
- 下一篇: 3D模型欣赏:《Sword girl》古