分類樹(決策樹)是一種十分常用的分類方法。核心任務是把數據分類到可能的對應類別。
他是一種監管學習,所謂監管學習就是給定一堆樣本,每個樣本都有一組屬性和一個類別,這些類別是事先確定的,通過學習得到一個分類器,這個分類器能夠對新出現的對象給出正確的分類。


決策樹的理解
熵的概念對理解決策樹很重要
決策樹做判斷不是百分之百正確,它只是基於不確定性做最優判斷。
熵就是用來描述不確定性的。

案例:找出共享單車用戶中的推薦者
解析:求出哪一類人群更可能成為共享單車的推薦者。換句話說是推薦者與其他變量之間不尋常的關系。
步驟1
測量節點對應的人群的熵
對於是否推薦這樣兩分的結果,推薦者比例趨近於0或者1時,熵都為0,推薦者比例趨近於50%時,熵趨近1。
分析師需要根據用戶特征,區分出推薦者。通過決策樹可以盡可能降低節點人群熵的值(通過決策樹不斷的分叉)。
步驟2
節點的分叉
不同的分叉方式會得到不同的增益值,計算機會選擇最大的增益值,即最優的分叉方式。
詳情見后文信息增益相關內容。
步驟3
在特定情況下停止分叉。
注意:分支節點太多會把情況搞復雜,反而不利於決策,需要在適當時候停止分叉。

信息增益(IG)的概念
表示經過決策樹一次決策后,整個分類數據信息熵下降的大小。


上面求得的IG是母節點的熵減去子節點熵的加權和,得到的結果,是經過一次分叉后所降低的熵的值。
不同的分叉方式會得到不同的增益值,計算機會選擇最大的增益值,即最優的分叉方式。
R語言實現
> bike.data <- read.csv(Shared Bike Sample Data - ML.csv)
> library(rpart)
> library(rpart.plot)
> library(rpart.plot)
> bike.data$推薦者 <- bike.data$分數>=9
> rtree_fit <- rpart(推薦者 ~城區+年齡+組別,data=bike.data)
> rpart.plot(rtree_fit)

決策樹小結
本質是一種映射關系,將對象的一組屬性和對象的值映射到一起,決策樹可以和概率完美結合。
優點是:適合處理多類變量,對異常值不敏感,准確度高。
缺點是:
作為一種典型的監督學習算法,在訓練時需要大規模數據和計算空間。為了得到最好的決策變量排列順序,決策樹需要反復計算變量的熵信息增益,很耗時間。
決策樹是一種貪心算法,每一次決策都謀求最優,追求局部最優的結果是決策樹達不到全局最優(與遺傳算法比,這是難以回避的缺點)。
決策樹剪枝葉技術幫助決策樹使用最少的節點完成分類任務,但錯誤剪枝會使得決策樹結果准確性大幅降低,同時剪枝過程也需要大量計算。
決策樹不擅長處理連續型變量。當樹中連續變量過多時候,決策樹犯錯誤的可能就會增大
