機器學習演算法(二)——決策樹分類演算法及R語言實現方法
阿新 • • 發佈:2019-01-03
決策樹演算法是分類演算法中最常用的演算法之一。決策樹是一種類似流程圖的樹形結構,可以處理高維資料,直觀易理解,且準確率較高,因此應用廣泛。本篇小博就決策樹的若干演算法: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的代價複雜度剪枝演算法,其剪枝的依據為樹的代價複雜度,依賴於樹的節點個數以及分類錯誤率,如果剪枝後能夠帶來更小的代價複雜度,那麼就執行剪枝。