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