機器學習-決策樹算法+代碼實現(基於R語言)


分類樹(決策樹)是一種十分常用的分類方法。核心任務是把數據分類到可能的對應類別。

他是一種監管學習,所謂監管學習就是給定一堆樣本,每個樣本都有一組屬性和一個類別,這些類別是事先確定的,通過學習得到一個分類器,這個分類器能夠對新出現的對象給出正確的分類。

 

決策樹的理解

熵的概念對理解決策樹很重要

決策樹做判斷不是百分之百正確,它只是基於不確定性做最優判斷。

熵就是用來描述不確定性的。

 案例:找出共享單車用戶中的推薦者

解析:求出哪一類人群更可能成為共享單車的推薦者。換句話說是推薦者與其他變量之間不尋常的關系。

 

步驟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)

 

 

決策樹小結

本質是一種映射關系,將對象的一組屬性和對象的值映射到一起,決策樹可以和概率完美結合。

優點是:適合處理多類變量,對異常值不敏感,准確度高。

缺點是:

作為一種典型的監督學習算法,在訓練時需要大規模數據和計算空間。為了得到最好的決策變量排列順序,決策樹需要反復計算變量的熵信息增益,很耗時間。

決策樹是一種貪心算法,每一次決策都謀求最優,追求局部最優的結果是決策樹達不到全局最優(與遺傳算法比,這是難以回避的缺點)。

決策樹剪枝葉技術幫助決策樹使用最少的節點完成分類任務,但錯誤剪枝會使得決策樹結果准確性大幅降低,同時剪枝過程也需要大量計算。

決策樹不擅長處理連續型變量。當樹中連續變量過多時候,決策樹犯錯誤的可能就會增大


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM