R教材11.1 分類與決策樹
阿新 • • 發佈:2018-11-26
- 分類目的:根據一組預測變數來預測相對應的分類結果,實現對新出單元的準確分類
- 有監督學習:基於已知類的資料樣本,將全部資料分為訓練集和驗證集
- 用到的包:rpart,rpart.plot,party,randomForest,e1071
- 隨機抽樣:
- set.seed(1234)
- sample(nrow(物件),present*nrow(物件)),結果是抽樣的內建ID
- sample(資料物件,抽樣個數)資料物件可以是連續資料或資料分佈
- 邏輯迴歸glm(),自動將預測變數中的分類變數編碼為數值型,廣義線性模型
- glm(formula,data,family),family指連線函式,資料服從的分佈型別,binomial二項分佈(在每次試驗中只有兩種可能的結果,而且兩種結果發生與否互相對立,並且相互獨立,與其它各次試驗結果無關),模型按數值大小分01,模型再將假設結果為正負
- predict(fit,data,type="response")
- response按資料正負轉化為概率0~1
- class即輸出變數為分類型別
- table(class1,class2,dnn=c()),dnn為維度名,class分類型別
- step(fit),模型的逐步法,去除多餘的屬性
- 決策樹:預設二分樹演算法
- 經典樹:不希望有大量的測試條件的劃分,即CART演算法,二分樹,classify and regression tree分類迴歸樹
- 步驟
- 選定一個最佳預測變數將樣本單元分為兩類,對子類別繼續分類,遞迴
- 直到結束條件成立:節點樣本量過少,繼續分類的不純度提升過少等
- 葉節點中的多數類即該葉節點的類
- 改進:過擬合現象,採用k折交叉驗證法選擇預測誤差最小的樹,剪枝後即為最優樹
- R中的rpart()和prune():
- rpart(formula,data,method,parm)構造決策樹
- *na. action 缺失資料的處理辦法:預設辦法是刪除因變數缺失的觀測而保留自變數缺失的觀測
- method劃分樹時,根據樹末端的資料型別選擇相應變數分割方法;程式會根據因變數的型別自動選擇方法, 但一般情況下較好還是指明本引數, 以便讓程式清楚做哪一種樹模型
- "anova"連續型
- "poisson"計數型(泊松過程)
- "class"離散型
- "exp"生存分析型
- parm=list(split="",...)設定先驗概率、損失矩陣、分類純度的度量方法
- split可以是gini(基尼係數)或者information(資訊增益)
- rpart()返回的cptable值中包括不同大小的樹對應的預測誤差
- cp複雜度引數,懲罰過大的樹
- nsplit劃分個數,n個分支的樹有n+1個葉節點
- rel error訓練集中的樹的誤差(應該是對單個樹,可能是該節點數下的最優樹)
- xerror交叉驗證誤差,k折總誤差
- xstd交叉驗證誤差的標準差
- plotcp(rpart)
- size of tree樹大小
- y軸交叉驗證誤差
- x軸複雜度引數
- 最優樹:最小交叉驗證誤差的±1個標準差範圍內的樹,規模最小的樹即最優;影象的虛線即基於一個標準差準則得到的上限
- prune(rpart,cp=)決策樹剪枝,將樹的大小控制在理想範圍內,最優樹對應的cp
- rpart.plot::prp(fit,type,extra,fallen.leaves)
- type分割標籤顯示型別
- extra每個節點的樣本佔比和型別佔比
- fallen.leaves=T垂直作圖|斜線連線
- predict(fit,data,type="class")對應rpart的method
- rpart(formula,data,method,parm)構造決策樹
- 步驟
- 條件推斷樹:類似於決策樹,但變數和分割的選取是基於顯著性檢驗,而不是不純性度量
- 演算法:
- 對輸出變數和每個預測變數間的關係計算p值(顯著性檢驗)
- 選擇p_value最小的變數
- 嘗試所有的二元分割,選擇p_value最小的分割
- 重複分割直到所有分割都不顯著或達到最小節點為止
- 實現
- party::ctree(formula,data)
- plot(fit)
- predict(fit,data,type)type選擇response,演算法將結果變數當做二項分佈
- 條件推斷樹的剪枝是不必要的,生成過程中就有對不顯著變數的去除
- 演算法:
- 經典樹:不希望有大量的測試條件的劃分,即CART演算法,二分樹,classify and regression tree分類迴歸樹