決策樹是一種基於規則的方法,它用一組巢狀的規則進行。在樹的每個決策節點處,根據判斷結果進入乙個分支,反覆執行這種操作直到到達葉子節點,得到**結果。這些規則是通過訓練得到的而不是人工制定的。
一般將決策樹設計成二叉樹。與樹的葉子節點,非葉子節點相對應,決策樹的的節點,分為兩種型別。
(1)決策節點
在這些節電處,需要進行判斷以決定進入哪個分支,如用乙個特徵和設定好的閾值進行比較。決策幾點一定有兩個子節點,它是非葉子節點。
(2)葉子節點
表示最終的決策結果,他們沒有子節點。對於分類問題,葉子節點中儲存的是類別標籤。
典型的決策樹又id3,c4.5,cart(分類回歸樹)等,他們的區別在於樹的結構與構造算噶,分類回歸樹既支援分類問題又支援回歸問題。
分類回歸樹是二叉決策樹,**時從根節點開始,每次只對乙個特徵進行判斷,然後進入左子節點或者右子節點,直到到達乙個葉子節點處,得到類別值或者回歸函式值.**演算法的時間複雜度與樹的深度有關,判定的執行次數不超過決策樹的深度。
2.1建立分類回歸樹
通過計算每個特徵的gini指數,來選擇劃分節點的最優特徵。選擇gini指數小的特徵作為切分點。
假設有 n
nn個類,樣本屬於第n
nn 類的概率為p
np_n
pn,則基尼指數為:
g in
i(p)
=∑n=
1ppn
(1−p
n)
gini(p)=\sum_^pp_n(1-p_n)
gini(p
)=∑n
=1p
pn(
1−pn
)若資料集按特徵 a 取值是否等於切分點值劃分為 d
1d_1
d1和 d
2d_2
d2 兩部分,則在特徵 a 下,集合 d 的基尼指數為:
g in
i(d,
a)=∣
d1∣d
gini
(d1)
+∣d2
∣dgi
ni(d
2)
gini(d,a)=\fracgini(d1)+\fracgini(d2)
gini(d
,a)=
d∣d1
∣g
ini(
d1)+
d∣d2
∣g
ini(
d2)然後按最優特徵劃分資料集
2.2減枝
由於分類回歸樹對特徵空間不斷劃分,這很容易造成過擬合的問題。處理過擬合不僅需要預剪枝,還需要後剪枝。預剪枝是在建立模型階段通過制定終止條件來提早完成劃分。後剪枝則是在模型建立後,利用測試資料計算剪除部分葉節點是否會造成模型誤差減少,如果是,則剪除對應的葉節點。當然,後剪枝時不僅要考慮誤差是否減少,還需考慮正則項,即模型的大小。最後綜合選擇模型誤差較小且模型簡單的分類回歸樹
python的sklearn庫中自帶有決策樹的函式,可通過from sklearn.tree import decisiontreeclassifier載入。
criterion:gini或者entropy,前者是基尼係數,後者是資訊熵。
splitter: best or random 前者是在所有特徵中找最好的切分點 後者是在部分特徵中,預設的」best」適合樣本量不大的時候,而如果樣本資料量非常大,此時決策樹構建推薦」random」 。
max_features:none(所有),log2,sqrt,n 特徵小於50的時候一般使用所有的
max_depth: int or none, optional (default=none) 設定決策隨機森林中的決策樹的最大深度,深度越大,越容易過擬合,推薦樹的深度為:5-20之間。
min_samples_split:設定結點的最小樣本數量,當樣本數量可能小於此值時,結點將不會在劃分。
min_samples_leaf: 這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小於樣本數,則會和兄弟節點一起被剪枝。
min_weight_fraction_leaf: 這個值限制了葉子節點所有樣本權重和的最小值,如果小於這個值,則會和兄弟節點一起被剪枝預設是0,就是不考慮權重問題。
max_leaf_nodes: 通過限制最大葉子節點數,可以防止過擬合,預設是"none」,即不限制最大的葉子節點數。
class_weight: 指定樣本各類別的的權重,主要是為了防止訓練集某些類別的樣本過多導致訓練的決策樹過於偏向這些類別。這裡可以自己指定各個樣本的權重,如果使用「balanced」,則演算法會自己計算權重,樣本量少的類別所對應的樣本權重會高。
min_impurity_split: 這個值限制了決策樹的增長,如果某節點的不純度(基尼係數,資訊增益,均方差,絕對差)小於這個閾值則該節點不再生成子節點。即為葉子節點 。
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...
機器學習 決策樹
一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...