決策樹又稱為判定樹,是運用於分類的一種樹結構,其中的每個內部節點代表對某一屬性的一次測試,每條邊代表乙個測試結果,葉節點代表某個類或類的分布。決策樹的決策過程需要從決策樹的根節點開始,待測資料與決策樹中的特徵節點進行比較,並按照比較結果選擇選擇下一比較分支,直到葉子節點作為最終的決策結果。
常見的決策樹有id3、c4.5和cart
id3以資訊增益度量屬性選擇(選擇資訊增益最大的屬性作為**屬性)、c4.5以資訊增益率度量屬性選擇(選擇資訊增益率最大的屬性作為**屬性)、cart用gini係數度量屬性選擇(選擇基尼係數最小的屬性作為**屬性、基尼係數越大,樣本的不確定性越大)
1.1、計算公式
1)計算類別資訊熵
類別資訊熵表示所有樣本中各類別出現的不確定性,熵越大、不確定性越大
2)計算屬性資訊熵
屬性資訊熵表示在某種屬性的條件下,各類別出現的不確定性之和,屬性資訊熵越大,表示這個屬性擁有的樣本類別越不純
3)計算資訊增益
資訊增益表示不確定性減少的程度,如果乙個屬性的資訊增益越大,就表示用這個屬性進行樣本劃分可以更好的減少劃分後樣本的不確定性,也就是說,選擇資訊增益大的屬性可以更快的完成分類任務,但如果每個屬性中每種類別都只有乙個樣本,那麼屬性的資訊熵為0,根據資訊增益無法選擇出有效的分類特徵,c4.5選擇資訊增益率來對id3進行改進。
1.2、id3的缺點:
1、沒有剪枝過程,為了去除過渡資料匹配的問題,可通過裁剪合併相鄰的無法產生大量資訊增益的葉子節點;
2、資訊增益的方法偏向選擇具有大量值的屬性,也就是說某個屬性特徵索取的不同值越多,那麼越有可能作為**屬性,這樣是不合理的;
3、只可以處理離散分布的資料特徵;
4、沒有考慮缺失值的情況;
2.1計算公式
1)計算類別資訊熵
2)計算屬性資訊熵
3)計算資訊增益
4)計算屬性**度量
用**資訊度量考慮某種屬性進行**是分支的數量資訊和尺寸資訊,把這些資訊稱為內在資訊
5)計算資訊增益率
(選擇具有最大資訊增益率的屬性作為**屬性)
資訊增益率會導致屬性的重要性隨著資訊增益率的增大而減小,也就是說『如果這個屬性本身的不確定性很大,就不傾向於選它
2.2、c4.5的優缺點:
優點:產生的分類規則易於理解,準確率高;
缺點:在構造樹的過程中,需要對資料集進行多次的順序掃瞄和排序,導致演算法低效;
只能用於分類;
涉及大量的對數運算;
2.3、連續變數離散化,如何選擇連續變數的分割閾值?
把需要處理的樣本屬性按照連續變數的大小,從小到大進行排序,假設該屬性有n個,那麼總共有n-1個可能的獲選分割閾值點,每個候選的分割閾值點的值為上述排序後的屬性值列表中兩兩前後連續元素的中點,從這n-1個候選閾值點中選擇出乙個增益最大的作為分割閾值。
2.4、連續屬性的改進:
相對於那些離散值屬性,分類樹演算法傾向於選擇那些連續值屬性,因為連續值屬性會有更多的分支,熵增益也最大。演算法需要克服這種傾向。利用增益率來克服這種傾向。增益率也可以用來克服連續值屬性傾向。增益率作為選擇屬性的依據克服連續值屬性傾向,這是沒有問題的。但是如果利用增益率來選擇連續值屬性的分界點,會導致一些***。分界點將樣本分成兩個部分,這兩個部分的樣本個數之比也會影響增益率。根據增益率公式,我們可以發現,當分界點能夠把樣本分成數量相等的兩個子集時(我們稱此時的分界點為等分分界點),增益率的抑制會被最大化,因此等分分界點被過分抑制了。子集樣本個數能夠影響分界點,顯然不合理。因此在決定分界點是還是採用增益這個指標,而選擇屬性的時候才使用增益率這個指標。這個改進能夠很好得抑制連續值屬性的傾向。當然還有其它方法也可以抑制這種傾向,比如mdl
2.5、為減少過擬合風險,採用剪枝技術(前剪枝和後剪枝)
前剪枝:控制決策樹的生長
後剪枝:對完全生成的決策樹進行修剪
2.6、id3有四個不足,c4.5針對這四個不足進行改進
(1)id3的第乙個不足:不能處理連續型特徵
c4.5的思路是將連續型特徵離散化,比如有m個樣本的連續型特徵a有m個,從小到大進行排列,取相鄰兩個樣本值的平均值,一共有m-1個分割點,分別計算以這些分割點作為二分類時的資訊增益,選擇資訊增益最大的點作為該連續型特徵的分割點。
(2)id3的第二個不足:當每種屬性中每個類別都只有乙個樣本時,資訊增益為0
c4.5的改進:使用資訊增益率作為特徵選擇的評價標準,選擇資訊增益率最大的屬性作為**屬性。
(3)id3的第三個不足:沒有考慮缺失值
c4.5的改進:對缺失值進行填充,或者丟棄含有缺失值的樣本,或者給屬性的每個可能值賦予乙個概率。
(4)id3的第四個不足:沒有考慮過擬合
c4.5的改進:採用剪枝方法來防止過擬合
from sklearn.datasets import load_iris
from sklearn.tree import decisiontreeclassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# 載入資料
iris = load_iris()
# 樣本特徵
x = iris.data
# 樣本標籤
y = iris.target
# 劃分訓練集、測試集
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=2)
# 決策樹、使用entropy作為評價標準,當然也可以使用gini係數
dt = decisiontreeclassifier(criterion='entropy')
# 訓練
dt.fit(x_train, y_train)
# **
y_pred = dt.predict(x_test)
# 評估
print(accuracy_score(y_pred, y_test))
在id3演算法中使用了資訊增益來選擇特徵,資訊增益大的優先選擇。在c4.5演算法中,採用了資訊增益率來選擇特徵,以減少資訊增益容易選擇特徵值多的特徵的問題。但是無論是id3還是c4.5,都是基於資訊理論的熵模型的,這裡面會涉及大量的對數運算。cart分類樹演算法使用基尼係數來代替資訊增益率,基尼係數代表了模型的不純度,基尼係數越小,則不純度越低,特徵越好。這和資訊增益(比)是相反的。 機器學習 決策樹 ID3, C4 5
概念 決策樹 節點間的組織方式像一棵倒樹,以attribute 為節點,以 attribute 的不同值為分支。重點概念 1.資訊熵 熵是無序性 或不確定性 的度量指標。假如事件a 的全概率劃分是 a1,a2,an 每部分發生的概率是 p1,p2,pn 那資訊熵定義為 通常以 2為底數,所以資訊熵的...
機器學習 決策樹(ID3,C4 5)演算法解析
機器學習 決策樹 id3,c4.5 演算法解析 label 機器學習 決策樹 解析 決策樹實現思路 假設有已知的資料集x 例如某些人的集合,資料內容包括用於描述他們的特徵屬性及特徵屬性值,如性別 男 女 年齡 整數 收入 較低 中等 較高 等 以及資料集的分類標籤y 是否是某俱樂部的成員 是 否 對...
決策樹演算法 ID3 C4 5和CART
線性模型與決策樹模型的對比 線性模型是將所有的特徵轉變為概率,並對所有的特徵加權求和,從而對模型進行分類,只能找到線性分割,而決策樹模型是乙個乙個特徵的進行處理,對每乙個特徵進行劃分,可以找到非線性分割 id3演算法是一種貪心演算法,用來構建決策樹,id3起源於概念學習系統,以資訊熵的下降速度為選取...