1. 程式人生 > >機器學習演算法(二)——決策樹分類演算法及R語言實現方法

機器學習演算法(二)——決策樹分類演算法及R語言實現方法

決策樹演算法是分類演算法中最常用的演算法之一。決策樹是一種類似流程圖的樹形結構,可以處理高維資料,直觀易理解,且準確率較高,因此應用廣泛。本篇小博就決策樹的若干演算法:ID3演算法、C4.5演算法以及分類迴歸樹(CART)、C5.0進行對比介紹,並對比C4.5與C5.0處理較大資料集時的效率,觀察C5.0效率提升了多少。

一、概況

演算法名稱 分類屬性選取標準 標準描述 優點 缺點
ID3 資訊增益 該分類屬性帶來的熵的變化 。。 ① 只能描述屬性為離散型的變數;②偏向具有許多輸出的測試,即總是傾向於選擇包含多取值的引數,因為引數的取值越多,其分割後的子節點純度可能越高。採用極限思維,若分類屬性為一種唯一標識的屬性,每個取值分別對應一種最終分類型別,那麼以此屬性分類後得到的每個子集都只有一個元組,必然是純的,這種劃分顯然是沒有意義的。
C4.5 資訊增益率 在資訊增益的基礎上,除以分裂資訊熵,即該分類屬性下各種取值數量的熵 ①以資訊增益率代替資訊增益,準確率提升;②可處理連續變數的分類;③可處理有缺失值的資料;④可以邊構造樹邊剪枝; ①對於連續屬性最優分割閾值選擇比較耗時;②不具備增量式學習能力;③ 在構造樹的過程中,需要對資料集進行多次的順序掃描和排序,因而導致演算法的低效
CART 基尼係數 即不純度 抽取規則簡便且易於理解;面對存在缺失值、變數數多等問題時非常穩健。 偏向於多值屬性,並且當類的數量很大時會有困難。
C5.0 資訊增益率 在資訊增益的基礎上,除以分裂資訊熵,即該分類屬性下各種取值數量的熵 適用於處理大資料及,採用boosting方式提高模型準確率,速度比較快,佔用記憶體比較少。 。。


二、演算法步驟

1、ID3演算法

① 計算對D中原組分類所需要的期望資訊,即明確要分為幾類後,不同型別元組數目的資訊熵。

② 計算每個屬性的期望資訊需求。要加上分類屬性A中不同類別的佔比作為每一個子資料集Dj熵的比重。

③ 計算資訊增益。即按照A屬性分類後得到的熵減去1中的熵,選擇資訊增益最大的作為分裂屬性。

④ 若屬性A為連續的,則掃描A一次,對於每一個準分裂點,按2進行計算,也是一種離散化處理。

2、C4.5演算法

分類屬性選取標準改為增益率。

3、CART

分類屬性選取標準改為基尼係數。

三、對比C4.5演算法以及C5.0演算法

1、資料集如下


十折交叉檢驗實驗結果如下:


執行時間對比:


可見C5.0處理較大資料集的速度提升還是很多的。

四、決策樹的剪枝

為了防止因噪聲或離群點導致的過擬合,決策樹要進行剪枝操作,常用的剪枝策略包含先剪枝和後剪枝。

1、先剪枝

通過提前停止樹的構建而對樹進行剪枝,設定一個合理的閾值,如果通過該屬性劃分後的元組的某些統計特性(如統計顯著性、資訊增益以及基尼係數等)低於設定的閾值,則不再進行樹的構建。

2、後剪枝

對已完全生長的樹進行剪枝,通過刪除節點的分支,用葉子節點(即類標號)來代替它完成剪枝。例如CART的代價複雜度剪枝演算法,其剪枝的依據為樹的代價複雜度,依賴於樹的節點個數以及分類錯誤率,如果剪枝後能夠帶來更小的代價複雜度,那麼就執行剪枝。