概要:
- 是一種分類算法,它基於特徵對實例進行分類。
- 決策樹的學習通常包括3個步驟:特徵選擇、決策樹的生成和決策樹的修剪。
應用場景:
分類。
優點:
- 模型具有可讀性、準確性高。
- 分類速度快。
缺點:
- 處理缺失值有困難。
- 存在過擬合的問題。
- 對噪聲敏感。
關於特徵選擇:
計算每一個特徵的信息增益(或信息增益比),選擇其中值最大的一個特徵來進行分裂。
ID3算法:
ID3算法採用了信息增益準則來進行特徵的選擇,其步驟如下:
第一步:輸入訓練數據集D,特徵集A,閥值e
第二步:若D中所有實例都屬於同一類Ck,則決策樹T爲單節點樹,並將Ck作爲該節點的類標記,返回決策樹T。
第三步:若特徵集A爲空集,那麼T爲單節點樹,並將D中的實例數最大的類Ck作爲該節點的類標記,返回T。
第四步:若第二步與第三步都不滿足,則計算特徵集A中各個特徵對D的信息增益,選擇信息增益最大的特徵Ag。
第五步:如果Ag的信息增益小於閥值e,則T爲單節點樹,並將D中的實例數最大的類Ck作爲該節點的類標記,返回T。
第六步:若Ag的信息增益大於等於閥值e,對Ag的每一個可能值ai都分在一個子節點Di,將Di中實例數最大的類作爲該子節點的標記。由結點與其子結點構成了樹T,返回T。
第七步,對第i個結點,以Di爲-訓練數據集,A-{Ag}爲特徵集,遞歸地調用第二步–>第六步,得到樹Ti,返回Ti。
C4.5決策樹生成算法僞代碼:
# ==============================================
# 輸入:
# 數據集
# 輸出:
# 構造好的決策樹(也即訓練集)
# ==============================================
def創建決策樹:
'創建決策樹'
if (數據集中所有樣本分類一致):
創建攜帶類標籤的葉子節點
else:
尋找劃分數據集的最好特徵
根據最好特徵劃分數據集
創建分支節點
for 每個劃分的子集:
創建決策子樹(遞歸方式)
Return分支節點
CART迴歸決策樹算法:略。
CART分類決策樹生成算法:
輸入:訓練數據集D,停止計算的條件。
輸出:CART決策樹。
根據訓練數據集,從根節點開始,遞歸地對每個結點進行以下操作,構建二叉決策樹:
(1)設結點的訓練數據集爲D,計算現有特徵對該數據集的基尼指數。此時,對每一個特徵A,對其可能取的每個值a,根據樣本點對A=a的測試爲“是”或“否”將D分割成D1和D2兩部分,利用式Gini(D,A)=(|D1|/|D|)Gini(D1)+(|D2|/|D|)Gini(D2)計算A=a時的基尼指數。
(2)在所有可能的特徵A以及它們所有可能的切分點a中,選擇基尼指數最小的特徵及其對應的切分點作爲最優特徵與最優切分點。依最優特徵與最優切分點,從現結點生成兩個子節點,將訓練數據集依特徵分配到兩個子節點中去。
(3)對兩個子節點遞歸地調用(1)(2),直至滿足停止條件。
(4)生成CART決策樹。
算法停止的條件是結點中的樣本個數小於預定閾值,或樣本集的基尼指數小於預定閾值(樣本基本屬於同一類)或者沒有更多特徵。