導航:首頁 > 源碼編譯 > 綜述決策樹演算法總結

綜述決策樹演算法總結

發布時間:2023-04-03 22:34:35

Ⅰ 決策樹的原理及演算法

決策樹基本上就是把我們以前的經驗總結出來。我給你准備了一個打籃球的訓練集。如果我們要出門打籃球,一般會根據「天氣」、「溫度」、「濕度」、「刮風」這幾個條件來判斷,最後得到結果:去打籃球?還是不去?

上面這個圖就是一棵典型的決策樹。我們在做決策樹的時候,會經歷兩個階段:構造和剪枝。

構造就是生成一棵完整的決策樹。簡單來說,構造的過程就是選擇什麼屬性作為節點的過程,那麼在構造過程中,會存在三種節點:
根節點:就是樹的最頂端,最開始的那個節點。在上圖中,「天氣」就是一個根節點;
內部節點:就是樹中間的那些節點,比如說「溫度」、「濕度」、「刮風」;
葉節點:就是樹最底部的節點,也就是決策結果。

剪枝就是給決策樹瘦身,防止過擬合。分為「預剪枝」(Pre-Pruning)和「後剪枝」(Post-Pruning)。

預剪枝是在決策樹構造時就進行剪枝。方法是在構造的過程中對節點進行評估,如果對某個節點進行劃分,在驗證集中不能帶來准確性的提升,那麼對這個節點進行劃分就沒有意義,這時就會把當前節點作為葉節點,不對其進行劃分。

後剪枝就是在生成決策樹之後再進行剪枝,通常會從決策樹的葉節點開始,逐層向上對每個節點進行評估。如果剪掉這個節點子樹,與保留該節點子樹在分類准確性上差別不大,或者剪掉該節點子樹,能在驗證集中帶來准確性的提升,那麼就可以把該節點子樹進行剪枝。

1是欠擬合,3是過擬合,都會導致分類錯誤。

造成過擬合的原因之一就是因為訓練集中樣本量較小。如果決策樹選擇的屬性過多,構造出來的決策樹一定能夠「完美」地把訓練集中的樣本分類,但是這樣就會把訓練集中一些數據的特點當成所有數據的特點,但這個特點不一定是全部數據的特點,這就使得這個決策樹在真實的數據分類中出現錯誤,也就是模型的「泛化能力」差。

p(i|t) 代表了節點 t 為分類 i 的概率,其中 log2 為取以 2 為底的對數。這里我們不是來介紹公式的,而是說存在一種度量,它能幫我們反映出來這個信息的不確定度。當不確定性越大時,它所包含的信息量也就越大,信息熵也就越高。

ID3 演算法計算的是信息增益,信息增益指的就是劃分可以帶來純度的提高,信息熵的下降。它的計算公式,是父親節點的信息熵減去所有子節點的信息熵。

公式中 D 是父親節點,Di 是子節點,Gain(D,a) 中的 a 作為 D 節點的屬性選擇。

因為 ID3 在計算的時候,傾向於選擇取值多的屬性。為了避免這個問題,C4.5 採用信息增益率的方式來選擇屬性。信息增益率 = 信息增益 / 屬性熵,具體的計算公式這里省略。

當屬性有很多值的時候,相當於被劃分成了許多份,雖然信息增益變大了,但是對於 C4.5 來說,屬性熵也會變大,所以整體的信息增益率並不大。

ID3 構造決策樹的時候,容易產生過擬合的情況。在 C4.5 中,會在決策樹構造之後採用悲觀剪枝(PEP),這樣可以提升決策樹的泛化能力。

悲觀剪枝是後剪枝技術中的一種,通過遞歸估算每個內部節點的分類錯誤率,比較剪枝前後這個節點的分類錯誤率來決定是否對其進行剪枝。這種剪枝方法不再需要一個單獨的測試數據集。

C4.5 可以處理連續屬性的情況,對連續的屬性進行離散化的處理。比如打籃球存在的「濕度」屬性,不按照「高、中」劃分,而是按照濕度值進行計算,那麼濕度取什麼值都有可能。該怎麼選擇這個閾值呢,C4.5 選擇具有最高信息增益的劃分所對應的閾值。

針對數據集不完整的情況,C4.5 也可以進行處理。

暫無

請你用下面的例子來模擬下決策樹的流程,假設好蘋果的數據如下,請用 ID3 演算法來給出好蘋果的決策樹。

「紅」的信息增益為:1「大」的信息增益為:0
因此選擇「紅」的作為根節點,「大」沒有用,剪枝。

數據分析實戰45講.17 丨決策樹(上):要不要去打籃球?決策樹來告訴你

Ⅱ 決策樹演算法-原理篇

關於決策樹演算法,我打算分兩篇來講,一篇講思想原理,另一篇直接擼碼來分析演算法。本篇為原理篇。
通過閱讀這篇文章,你可以學到:
1、決策樹的本質
2、決策樹的構造過程
3、決策樹的優化方向

決策樹根據使用目的分為:分類樹和回歸樹,其本質上是一樣的。本文只講分類樹。

決策樹,根據名字來解釋就是,使用樹型結構來模擬決策。
用圖形表示就是下面這樣。

其中橢圓形代表:特徵或屬性。長方形代表:類別結果。
面對一堆數據(含有特徵和類別),決策樹就是根據這些特徵(橢圓形)來給數據歸類(長方形)
例如,信用貸款問題,我根據《神奇動物在哪裡》的劇情給銀行造了個決策樹模型,如下圖:

然而,決定是否貸款可以根據很多特徵,然麻雞銀行選擇了:(1)是否房產價值>100w;(2)是否有其他值錢的抵押物;(3)月收入>10k;(4)是否結婚;這四個特徵,來決定是否給予貸款。
先不管是否合理,但可以肯定的是,決策樹做了特徵選擇工作,即選擇出類別區分度高的特徵。

由此可見, 決策樹其實是一種特徵選擇方法。 (特徵選擇有多種,決策樹屬於嵌入型特徵選擇,以後或許會講到,先給個圖)即選擇區分度高的特徵子集。

那麼, 從特徵選擇角度來看決策樹,決策樹就是嵌入型特徵選擇技術

同時,決策樹也是機器學習中經典分類器演算法,通過決策路徑,最終能確定實例屬於哪一類別。
那麼, 從分類器角度來看決策樹,決策樹就是樹型結構的分類模型

從人工智慧知識表示法角度來看,決策樹類似於if-then的產生式表示法。
那麼, 從知識表示角度來看決策樹,決策樹就是if-then規則的集合

由上面的例子可知,麻雞銀行通過決策樹模型來決定給哪些人貸款,這樣決定貸款的流程就是固定的,而不由人的主觀情感來決定。
那麼, 從使用者角度來看決策樹,決策樹就是規范流程的方法

最後我們再來看看決策樹的本質是什麼已經不重要了。
決策樹好像是一種思想,而通過應用在分類任務中從而成就了「決策樹演算法」。

下面內容還是繼續講解用於分類的「決策樹演算法」。

前面講了決策樹是一種 特徵選擇技術

既然決策樹就是一種特徵選擇的方法,那麼經典決策樹演算法其實就是使用了不同的特徵選擇方案。
如:
(1)ID3:使用信息增益作為特徵選擇
(2)C4.5:使用信息增益率作為特徵選擇
(3)CART:使用GINI系數作為特徵選擇
具體選擇的方法網上一大把,在這里我提供幾個鏈接,不細講。

但,不僅僅如此。
決策樹作為嵌入型特徵選擇技術結合了特徵選擇和分類演算法,根據特徵選擇如何生成分類模型也是決策樹的一部分。
其生成過程基本如下:

根據這三個步驟,可以確定決策樹由:(1)特徵選擇;(2)生成方法;(3)剪枝,組成。
決策樹中學習演算法與特徵選擇的關系如下圖所示:

原始特徵集合T:就是包含收集到的原始數據所有的特徵,例如:麻瓜銀行收集到與是否具有償還能力的所有特徵,如:是否結婚、是否擁有100w的房產、是否擁有汽車、是否有小孩、月收入是否>10k等等。
中間的虛線框就是特徵選擇過程,例如:ID3使用信息增益、C4.5使用信息增益率、CART使用GINI系數。
其中評價指標(如:信息增益)就是對特徵的要求,特徵需要滿足這種條件(一般是某個閾值),才能被選擇,而這一選擇過程嵌入在學習演算法中,最終被選擇的特徵子集也歸到學習演算法中去。
這就是抽象的決策樹生成過程,不論哪種演算法都是將這一抽象過程的具體化。
其具體演算法我將留在下一篇文章來講解。

而決策樹的剪枝,其實用得不是很多,因為很多情況下隨機森林能解決決策樹帶來的過擬合問題,因此在這里也不講了。

決策樹的優化主要也是圍繞決策樹生成過程的三個步驟來進行優化的。
樹型結構,可想而知,演算法效率決定於樹的深度,優化這方面主要從特徵選擇方向上優化。
提高分類性能是最重要的優化目標,其主要也是特徵選擇。
面對過擬合問題,一般使用剪枝來優化,如:李國和基於決策樹生成及剪枝的數據集優化及其應用。
同時,決策樹有很多不足,如:多值偏向、計算效率低下、對數據空缺較為敏感等,這方面的優化也有很多,大部分也是特徵選擇方向,如:陳沛玲使用粗糙集進行特徵降維。
由此,決策樹的優化方向大多都是特徵選擇方向,像ID3、C4.5、CART都是基於特徵選擇進行優化。

參考文獻
統計學習方法-李航
特徵選擇方法綜述-李郅琴
決策樹分類演算法優化研究_陳沛玲
基於決策樹生成及剪枝的數據集優化及其應用-李國和

Ⅲ 決策樹基本概念及演算法優缺點

分類決策樹模型是一種描述對實例進行分類的樹形結構. 決策樹由結點和有向邊組成. 結點有兩種類型: 內部結點和葉節點. 內部節點表示一個特徵或屬性, 葉節點表示一個類.
決策樹(Decision Tree),又稱為判定樹, 是一種以樹結構(包括二叉樹和多叉樹)形式表達的預測分析模型.

分類樹--對離散變數做決策樹

回歸樹--對連續變數做決策樹

優點:
(1)速度快: 計算量相對較小, 且容易轉化成分類規則. 只要沿著樹根向下一直走到葉, 沿途的分裂條件就能夠唯一確定一條分類的謂詞.
(2)准確性高: 挖掘出來的分類規則准確性高, 便於理解, 決策樹可以清晰的顯示哪些欄位比較重要, 即可以生成可以理解的規則.
(3)可以處理連續和種類欄位
(4)不需要任何領域知識和參數假設
(5)適合高維數據
缺點:
(1)對於各類別樣本數量不一致的數據, 信息增益偏向於那些更多數值的特徵
(2)容易過擬合
(3)忽略屬性之間的相關性

若一事假有k種結果, 對應概率為 , 則此事件發生後所得到的信息量I為:

給定包含關於某個目標概念的正反樣例的樣例集S, 那麼S相對這個布爾型分類的熵為:

其中 代表正樣例, 代表反樣例

假設隨機變數(X,Y), 其聯合分布概率為P(X=xi,Y=yi)=Pij, i=1,2,...,n;j=1,2,..,m
則條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性, 其定義為X在給定條件下Y的條件概率分布的熵對X的數學期望

在Hunt演算法中, 通過遞歸的方式建立決策樹.

使用信息增益, 選擇 最高信息增益 的屬性作為當前節點的測試屬性

ID3( Examples,Target_attribute,Attributes )

Examples 即訓練樣例集. Target_attribute 是這棵樹要預測的目標屬性. Attributes 是除目標屬性外供學習到的決策樹測試的屬性列表. 返回能正確分類給定 Examples 的決策樹.

class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)

限制決策樹層數為4的DecisionTreeClassifier實例

This plot compares the decision surfaces learned by a dcision tree classifier(first column), by a random forest classifier(second column), by an extra-trees classifier(third column) and by an AdaBoost classifier(fouth column).

Output:

A comparison of a several classifiers in scikit-learn on synthetic datasets.
The point of this examples is to illustrate the nature of decision boundaries of different classifiers.

Particularly in high-dimensional spaces, data can more easily be separated linearly and the simplicity of classifiers such as naive Bayes and linear SVMs might lead to better generalization than is achieved by other classifiers.

This example fits an AdaBoost decisin stump on a non-linearly separable classification dataset composed of two "Gaussian quantiles" clusters and plots the decision boundary and decision scores.

Output:

Ⅳ 決策樹演算法

決策樹演算法的演算法理論和應用場景

演算法理論:

我了解的決策樹演算法,主要有三種,最早期的ID3,再到後來的C4.5和CART這三種演算法。

這三種演算法的大致框架近似。

決策樹的學習過程

1.特徵選擇

在訓練數據中 眾多X中選擇一個特徵作為當前節點分裂的標准。如何選擇特徵有著很多不同量化評估標准,從而衍生出不同的決策樹演算法。

2.決策樹生成

根據選擇的特徵評估標准,從上至下遞歸生成子節點,直到數據集不可分或者最小節點滿足閾值,此時決策樹停止生長。

3.剪枝

決策樹極其容易過擬合,一般需要通過剪枝,縮小樹結構規模、緩解過擬合。剪枝技術有前剪枝和後剪枝兩種。

有些演算法用剪枝過程,有些沒有,如ID3。

預剪枝:對每個結點劃分前先進行估計,若當前結點的劃分不能帶來決策樹的泛化性能的提升,則停止劃分,並標記為葉結點。

後剪枝:現從訓練集生成一棵完整的決策樹,然後自底向上對非葉子結點進行考察,若該結點對應的子樹用葉結點能帶來決策樹泛化性能的提升,則將該子樹替換為葉結點。

但不管是預剪枝還是後剪枝都是用驗證集的數據進行評估。

ID3演算法是最早成型的決策樹演算法。ID3的演算法核心是在決策樹各個節點上應用信息增益准則來選擇特徵,遞歸構建決策樹。缺點是,在選擇分裂變數時容易選擇分類多的特徵,如ID值【值越多、分叉越多,子節點的不純度就越小,信息增益就越大】。

ID3之所以無法 處理缺失值、無法處理連續值、不剪紙等情況,主要是當時的重點並不是這些。

C4.5演算法與ID3近似,只是分裂標准從 信息增益 轉變成  信息增益率。可以處理連續值,含剪枝,可以處理缺失值,這里的做法多是 概率權重。

CART:1.可以處理連續值 2.可以進行缺失值處理 3.支持剪枝 4.可以分類可以回歸。

缺失值的處理是 作為一個單獨的類別進行分類。

建立CART樹

我們的演算法從根節點開始,用訓練集遞歸的建立CART樹。

1) 對於當前節點的數據集為D,如果樣本個數小於閾值或者沒有特徵,則返回決策子樹,當前節點停止遞歸。

2) 計算樣本集D的基尼系數, 如果基尼系數小於閾值 (說明已經很純了!!不需要再分了!!),則返回決策樹子樹,當前節點停止遞歸。

3) 計算當前節點現有的各個特徵的各個特徵值對數據集D的基尼系數。

4) 在計算出來的各個特徵的各個特徵值對數據集D的基尼系數中,選擇 基尼系數最小的特徵A和對應的特徵值a。根據這個最優特徵和最優特徵值,把數據集劃分成兩部分D1和D2,同時建立當前節點的左右節點,做節點的數據集D為D1,右節點的數據集D為D2。 (註:注意是二叉樹,故這里的D1和D2是有集合關系的,D2=D-D1)

5) 對左右的子節點遞歸的調用1-4步,生成決策樹。

CART採用的辦法是後剪枝法,即先生成決策樹,然後產生所有可能的剪枝後的CART樹,然後使用交叉驗證來檢驗各種剪枝的效果,選擇泛化能力最好的剪枝策略。

應用場景

比如欺詐問題中,通過決策樹演算法簡單分類,默認是CART的分類樹,默認不剪枝。然後在出圖後,自行選擇合適的葉節點進行拒絕操作。

這個不剪枝是因為欺詐問題的特殊性,欺詐問題一般而言較少,如數據的萬幾水平,即正樣本少,而整個欺詐問題需要解決的速度較快。此時只能根據業務要求,迅速針對已有的正樣本情況,在控制准確率的前提下,盡可能提高召回率。這種情況下,可以使用決策樹來簡單應用,這個可以替代原本手工選擇特徵及特徵閾值的情況。

Ⅳ 決策樹總結

參考鏈接: https://www.cnblogs.com/yonghao/p/5061873.html

樹:由節點和邊兩種元素組成。
父節點、子節點是相對的,子節點由父節點根據某一規則分裂而來。
根節點:沒有父節點的節點,初始分裂節點。
葉子節點:沒有子節點的節點。

決策樹: 利用樹形結構進行決策,每一個非葉子節點是一個判斷條件,每一個葉子節點是結論。從根節點開始,經過多次判斷得出結論。

每次選擇一個屬性進行判斷(如何選擇?),如果不能得出結論,繼續選擇其他屬性進行判斷,知道能夠肯定地判斷出用戶類型或者上述屬性都已使用完畢。

在決策樹的過程中,三個問題最為關鍵:

貪婪思想:選擇可以得到最有分裂結果的屬性進行分裂。每一次分裂之後孩子節點的數據盡量「純」。

信息增益
信息增益率

信息增益作為選擇分裂的條件有一個不可避免的缺點:傾向選擇分支比較多的屬性進行分裂。(為什麼?)

表示分列前後的數據復雜度和分裂節點數據復雜度的變化值:

Gain表示節點復雜度,Gain越大復雜度越高。
信息增益大 ,分裂後復雜度減小得多, 分類效果明顯 。

復雜度的兩種計算方式:
熵和基尼指數,主要區別在於,熵達到峰值的過程要相對慢一些。因此,熵對於混亂集合的判罰要更重一些。
a)熵Entropy
取值范圍:[0,1]
熵大,混亂程度高,純度低。v.v.

pi表示第i類的數量佔比。Entropy也記為H(X)。
二分類中:如果兩類數量相同,純度最低,熵為1 。如果全部數據都屬於一個類,及誒單純度最高,熵為0 。

pi<1, 由上圖可知,pi log(pi)為負值,故熵為pi log(pi)的和乘以-1。

條件熵:
隨機變數X在給定條件下隨機變數Y的條件熵。
X給定條件下Y的條件干率分布的熵對X的數學期望,在機器學習中為選定某個特徵後的熵,公式如下:

b)基尼指數 Gini Index
取值范圍:[0,1]
是一種不等性度量
總體內包含的類別越雜亂,gini指數越大,數據越不純。

pi依舊為第i類的數量佔比

使用信息增益作為選擇分裂的條件傾向選擇分支比較多的屬性進行分裂。
為了解決這個問題,引入了信息增益率這個概念。信息增益率是在信息增益的基礎上除以分裂節點數據量的信息增益。

InstrinsicInfo:分裂子節點數據量的信息增益
m:子節點數量
ni:第i個子節點的數據量
N:父節點數據量

離散型屬性:按照屬性值進行分裂,每一種屬性值對應一個分裂節點。
連續性屬性:按照該屬性進行排序,並分為若干區間,每個區間對應一個節點。(區間大小如何選擇?)

1)最小節點數
當街點數據量小於一個指定的數據量時,不繼續分裂。
原因:

分類樹:輸出具體的類別
回歸樹:輸出確定的數值
構建方法主要有三種:

預剪枝(Pre-Pruning)
後剪枝(Post-Pruning)

Ⅵ 決策樹演算法原理

決策樹是通過一系列規則對數據進行分類的過程。它提供一種在什麼條件下會得到什麼值的類似規則的方法。決策樹分為分類樹和回歸樹兩種,分類樹對離散變數做決策樹,回歸樹對連續變數做決策樹。

如果不考慮效率等,那麼樣本所有特徵的判斷級聯起來終會將某一個樣本分到一個類終止塊上。實際上,樣本所有特徵中有一些特徵在分類時起到決定性作用,決策樹的構造過程就是找到這些具有決定性作用的特徵,根據其決定性程度來構造一個倒立的樹--決定性作用最大的那個特徵作為根節點,然後遞歸找到各分支下子數據集中次大的決定性特徵,直至子數據集中所有數據都屬於同一類。所以,構造決策樹的過程本質上就是根據數據特徵將數據集分類的遞歸過程,我們需要解決的第一個問題就是,當前數據集上哪個特徵在劃分數據分類時起決定性作用。

一棵決策樹的生成過程主要分為以下3個部分:

特徵選擇:特徵選擇是指從訓練數據中眾多的特徵中選擇一個特徵作為當前節點的分裂標准,如何選擇特徵有著很多不同量化評估標准標准,從而衍生出不同的決策樹演算法。

決策樹生成: 根據選擇的特徵評估標准,從上至下遞歸地生成子節點,直到數據集不可分則停止決策樹停止生長。 樹結構來說,遞歸結構是最容易理解的方式。

剪枝:決策樹容易過擬合,一般來需要剪枝,縮小樹結構規模、緩解過擬合。剪枝技術有預剪枝和後剪枝兩種。

劃分數據集的最大原則是:使無序的數據變的有序。如果一個訓練數據中有20個特徵,那麼選取哪個做劃分依據?這就必須採用量化的方法來判斷,量化劃分方法有多重,其中一項就是「資訊理論度量信息分類」。基於資訊理論的決策樹演算法有ID3、CART和C4.5等演算法,其中C4.5和CART兩種演算法從ID3演算法中衍生而來。

CART和C4.5支持數據特徵為連續分布時的處理,主要通過使用二元切分來處理連續型變數,即求一個特定的值-分裂值:特徵值大於分裂值就走左子樹,或者就走右子樹。這個分裂值的選取的原則是使得劃分後的子樹中的「混亂程度」降低,具體到C4.5和CART演算法則有不同的定義方式。

ID3演算法由Ross Quinlan發明,建立在「奧卡姆剃刀」的基礎上:越是小型的決策樹越優於大的決策樹(be simple簡單理論)。ID3演算法中根據資訊理論的信息增益評估和選擇特徵,每次選擇信息增益最大的特徵做判斷模塊。ID3演算法可用於劃分標稱型數據集,沒有剪枝的過程,為了去除過度數據匹配的問題,可通過裁剪合並相鄰的無法產生大量信息增益的葉子節點(例如設置信息增益閥值)。使用信息增益的話其實是有一個缺點,那就是它偏向於具有大量值的屬性--就是說在訓練集中,某個屬性所取的不同值的個數越多,那麼越有可能拿它來作為分裂屬性,而這樣做有時候是沒有意義的,另外ID3不能處理連續分布的數據特徵,於是就有了C4.5演算法。CART演算法也支持連續分布的數據特徵。

C4.5是ID3的一個改進演算法,繼承了ID3演算法的優點。C4.5演算法用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足在樹構造過程中進行剪枝;能夠完成對連續屬性的離散化處理;能夠對不完整數據進行處理。C4.5演算法產生的分類規則易於理解、准確率較高;但效率低,因樹構造過程中,需要對數據集進行多次的順序掃描和排序。也是因為必須多次數據集掃描,C4.5隻適合於能夠駐留於內存的數據集。

CART演算法的全稱是Classification And Regression Tree,採用的是Gini指數(選Gini指數最小的特徵s)作為分裂標准,同時它也是包含後剪枝操作。ID3演算法和C4.5演算法雖然在對訓練樣本集的學習中可以盡可能多地挖掘信息,但其生成的決策樹分支較大,規模較大。為了簡化決策樹的規模,提高生成決策樹的效率,就出現了根據GINI系數來選擇測試屬性的決策樹演算法CART。

決策樹演算法的優點:

(1)便於理解和解釋,樹的結構可以可視化出來

(2)基本不需要預處理,不需要提前歸一化,處理缺失值

(3)使用決策樹預測的代價是O(log2m),m為樣本數

(4)能夠處理數值型數據和分類數據

(5)可以處理多維度輸出的分類問題

(6)可以通過數值統計測試來驗證該模型,這使解釋驗證該模型的可靠性成為可能

(7)即使該模型假設的結果與真實模型所提供的數據有些違反,其表現依舊良好

決策樹演算法的缺點:

(1)決策樹模型容易產生一個過於復雜的模型,這樣的模型對數據的泛化性能會很差。這就是所謂的過擬合.一些策略像剪枝、設置葉節點所需的最小樣本數或設置數的最大深度是避免出現該問題最為有效地方法。

(2)決策樹可能是不穩定的,因為數據中的微小變化可能會導致完全不同的樹生成。這個問題可以通過決策樹的集成來得到緩解。

(3)在多方面性能最優和簡單化概念的要求下,學習一棵最優決策樹通常是一個NP難問題。因此,實際的決策樹學習演算法是基於啟發式演算法,例如在每個節點進行局部最優決策的貪心演算法。這樣的演算法不能保證返回全局最優決策樹。這個問題可以通過集成學習來訓練多棵決策樹來緩解,這多棵決策樹一般通過對特徵和樣本有放回的隨機采樣來生成。

(4)有些概念很難被決策樹學習到,因為決策樹很難清楚的表述這些概念。例如XOR,奇偶或者復用器的問題。

(5)如果某些類在問題中佔主導地位會使得創建的決策樹有偏差。因此,我們建議在擬合前先對數據集進行平衡。

(1)當數據的特徵維度很高而數據量又很少的時候,這樣的數據在構建決策樹的時候往往會過擬合。所以我們要控制樣本數量和特徵的之間正確的比率;

(2)在構建決策樹之前,可以考慮預先執行降維技術(如PCA,ICA或特徵選擇),以使我們生成的樹更有可能找到具有辨別力的特徵;

(3)在訓練一棵樹的時候,可以先設置max_depth=3來將樹可視化出來,以便我們找到樹是怎樣擬合我們數據的感覺,然後在增加我們樹的深度;

(4)樹每增加一層,填充所需的樣本數量是原來的2倍,比如我們設置了最小葉節點的樣本數量,當我們的樹層數增加一層的時候,所需的樣本數量就會翻倍,所以我們要控制好樹的最大深度,防止過擬合;

(5)使用min_samples_split(節點可以切分時擁有的最小樣本數) 和 min_samples_leaf(最小葉節點數)來控制葉節點的樣本數量。這兩個值設置的很小通常意味著我們的樹過擬合了,而設置的很大意味著我們樹預測的精度又會降低。通常設置min_samples_leaf=5;

(6)當樹的類比不平衡的時候,在訓練之前一定要先平很數據集,防止一些類別大的類主宰了決策樹。可以通過采樣的方法將各個類別的樣本數量到大致相等,或者最好是將每個類的樣本權重之和(sample_weight)規范化為相同的值。另請注意,基於權重的預剪枝標准(如min_weight_fraction_leaf)將比不知道樣本權重的標准(如min_samples_leaf)更少偏向主導類別。

(7)如果樣本是帶權重的,使用基於權重的預剪枝標准將更簡單的去優化樹結構,如mn_weight_fraction_leaf,這確保了葉節點至少包含了樣本權值總體總和的一小部分;

(8)在sklearn中所有決策樹使用的數據都是np.float32類型的內部數組。如果訓練數據不是這種格式,則將復制數據集,這樣會浪費計算機資源。

(9)如果輸入矩陣X非常稀疏,建議在調用fit函數和稀疏csr_matrix之前轉換為稀疏csc_matrix,然後再調用predict。 當特徵在大多數樣本中具有零值時,與密集矩陣相比,稀疏矩陣輸入的訓練時間可以快幾個數量級。

Ⅶ 決策樹的理解與應用

決策樹🌲是一種基本的分類和回歸的方法【以前總是下意識以為決策樹只能用於分類,事實上還可以用於回歸】。在分類問題中,決策樹基於特徵對實例進行分類,這個分類過程可以認為是if-then的規則集合,也可以認為是特徵空間與類空間上的條件概率分布。

NOTE:
if—then規則集合具有一個重要的特徵:互斥且完備,即每個實例都被一條路徑或者一條規則所覆蓋,而且只能被一條路徑或一條規則所覆蓋

優點 :簡單易理解、分類速度快

過程 :利用損失函數最小化原則對訓練集進行建模,再利用建立好的模型進行分類。決策樹的學習演算法通常是遞歸地選擇最優特徵,並根據特徵對訓練集進行分割,最終形成從【根結點->葉子結點】的樹模型, 但是這樣生成的樹可以容易發生過擬合,所以需要自底向上修剪✋

決策樹學習包括三個步驟:特徵選擇、決策樹生成、決策樹修剪
1.當特徵數量較多時,在學習之前先進行特徵選擇
2.決策樹生成對應局部最優
3.決策樹修剪對應全局最優

目標 :選擇一個與訓練數據矛盾較小的決策樹,同時具有很好的泛化能力。

通常,特徵選擇的准則是 信息增益或者信息增益比

先介紹基本概念:

決策樹的生成過程僅考慮到對訓練數據集分類的准確性,這樣生成的樹模型容易出現過擬合且構建的樹過於復雜,所以有必要對其進行剪枝。

剪枝 :從已生成的樹上裁掉一些子樹或者葉結點,並將其根結點或者父結點作為新的葉結點,從而簡化分類樹模型。 剪枝往往是通過極小化決策樹的整體損失函數來實現的

定義損失函數
設樹 的葉結點個數為 , 是樹的葉結點,該葉結點有 個樣本點,其中 類的樣本點有 ,其中 是葉子結點 的經驗熵, 為參數,決策樹學習的損失函數為:

其中
所以最終的損失函數表示為:

公式解釋: 是表示模型對訓練集的預測誤差,即模型與訓練集的擬合程度, 表示模型的復雜度,葉子節點數越大模型越復雜, 是調節參數,控制模型的擬合和復雜程度。
當 確定時,選擇損失函數最小的模型,這里定義的損失函數其實等價於正則化的極大似然估計。

演算法:
INPUT: 生成演算法產生的整個樹 ,參數
OUPUT: 修剪後的子樹
1.計算每個結點的經驗熵
2.遞歸地從樹的葉結點向上回縮
回縮前後整體樹的損失函數比較,如果回縮前的損失函數大於回縮後,進行剪枝。
3.重復2,直到不能繼續為止,得到損失函數最小的子樹

後期加入

總結:決策樹是一種簡單快速的分類演算法,本文不僅把熵相關的概念給整理了一遍,文中信息增益和信息增益比也可以用於其他模型的特徵選擇,而最後剪枝部分提到的決策樹的損失函數是我之前在專門寫的《詳述機器學習中的損失函數》博客中沒有提到的,這里也是一個補充。

Ⅷ 決策樹演算法總結

目錄

一、決策樹演算法思想

二、決策樹學習本質

三、總結

一、決策樹(decision tree)演算法思想:

決策樹是一種基本的分類與回歸方法。本文主要討論分類決策樹。決策樹模型呈樹形結構,在分類問題中,表示基於特徵對實例進行分類的過程。 它可以看做是if-then的條件集合,也可以認為是定義在特徵空間與類空間上的條件概率分布 。決策樹由結點和有向邊組成。結點有兩種類型:內部結點和葉結點,內部結點表示一個特徵或屬性,葉結點表示一個類。(橢圓表示內部結點,方塊表示葉結點)

         決策樹與if-then規則的關系

決策樹可以看做是多個if-then規則的集合。將決策樹轉換成if-then規則的過程是:由決策樹的根結點到葉結點的每一條路徑構建一條規則;路徑上的內部結點的特徵對應著規則的條件,而葉結點的類對應著規則的結論。決策樹的路徑或其對應的if-then規則集合具有一個重要的性質:互斥且完備。這就是說,每一個實例都被一條路徑或一條規則所覆蓋,且只被一條路徑或一條規則所覆蓋。這里的覆蓋是指實例的特徵與路徑上的特徵一致或實例滿足規則的條件。

         決策樹與條件概率分布的關系

決策樹還表示給定特徵條件下類的條件概率分布。這一條件概率分布定義在特徵空間的一個劃分上。將特徵空間劃分為互不相交的單元或區域,並在每個單元定義一個類的概率分布,就構成一個條件概率分布。決策樹的一條路徑對應於劃分中的一個單元。決策樹所表示的條件概率分布由各個單元給定條件下類的條件概率分布組成。

         決策樹模型的優點

決策樹模型具有可讀性,分類速度快。學習時,利用訓練數據,根據損失函數最小化原則建立決策樹模型;預測時,對新的數據,利用決策樹模型進行分類 。

二、決策樹學習本質:

決策樹學習是從訓練數據集中歸納一組分類規則、與訓練數據集不相矛盾的決策樹可能有多個,也可能一個沒有。我們需要訓練一個與訓練數據矛盾較小的決策樹,同時具有很好的泛化能力。從另一個角度看 決策樹學習是訓練數據集估計條件概率模型 。基於特徵空間劃分的類的條件概率模型有無窮多個。我們選擇的條件概率模型應該是不僅對訓練數據有很好的擬合,而且對未知數據有很好的預測。 決策樹的學習使用損失函數表示這一目標,通常的損失函數是正則化的極大似然函數。決策樹的學習策略是以損失函數為目標函數的最小化。當損失函數確定後,決策樹學習問題變為損失函數意義下選擇最優決策樹的問題。這一過程通常是一個遞歸選擇最優特徵,並根據特徵對訓練數據進行分割,使得對各個子數據集有一個最好分類的過程。這一過程對應著特徵選擇、決策樹的生成、決策樹的剪枝。

         特徵選擇 : 在於選擇對訓練數據具有分類能力的特徵,這樣可以提高決策樹的學習效率。

         決策樹的生成 : 根據不同特徵作為根結點,劃分不同子結點構成不同的決策樹。

         決策樹的選擇 :哪種特徵作為根結點的決策樹信息增益值最大,作為最終的決策樹(最佳分類特徵)。

         信息熵 : 在資訊理論與概率統計中,熵是表示隨機變數不確定性的度量。設X是一個取有限個值的離散隨機變數,其概率分布為P(X= ) = ,i=1,2,3...n,則隨機變數X的熵定義為

        H(X) =  —  ,0 <=  H(X) <= 1,熵越大,隨機變數的不確定性就越大。

        條件熵(Y|X) : 表示在已知隨機變數X的條件下隨機變數Y的不確定性。

         信息增益  : 表示得知特徵X的信息而使得類Y的信息的不確定性減少的程度。

        信息增益  = 信息熵(父結點熵 ) — 條件熵(子結點加權熵)

三、 總結 :

        優點

        1、可解釋性高,能處理非線性的數據,不需要做數據歸一化,對數據分布沒有偏好。

        2、可用於特徵工程,特徵選擇。

        3、可轉化為規則引擎。

        缺點

        1、啟發式生成,不是最優解。

        2、容易過擬合。

        3、微小的數據改變會改變整個數的形狀。

        4、對類別不平衡的數據不友好。

Ⅸ 機器學習系列(三十六)——回歸決策樹與決策樹總結

回歸決策樹樹是用於回歸的決策樹模型,回歸決策樹主要指CART演算法, 同樣也為二叉樹結構。以兩個特徵預測輸出的回歸問題為例,回歸樹的原理是將特徵平面劃分成若干單元,每一個劃分租派耐單元都對應一個特定的輸出。因為每個結點都是yes和no的判斷,所以劃分的邊界是平行於坐標軸的。對於測試數據,我們只要將特徵按照決策過程將其歸到某個單元,便得到對應的回歸輸出值。

如上圖所示的劃分和相應的回歸樹,如果現在新來一個數據的特徵是(6,7.5),按照回歸樹,它對應的回歸結果就是C5。節點的劃分的過程也就是樹的建立過程,每劃分一次,隨即確定劃分單元對應的輸出,也就多了一個結點。當根據相應的約束條件終止劃分的時候,最終每個單元的輸出也就確定了,輸出也就是葉結點。這看似和分類樹差不多,實則有很大的區別。劃分點的尋找和輸出值的確定羨慎是回歸決策樹的兩個核心弊春問題。
一個輸入空間的劃分的誤差是用真實值和劃分區域的預測值的最小二乘來衡量的:

其中, 是每個劃分單元的預測值,這個預測值是該單元內每個樣本點的值的某種組合,比如可取均值:

(輸入特徵空間劃分為 )
那麼求解最優劃分即是求解最優化問題:

其中, 和 是每次劃分形成的兩個區域。
關於該最優化問題的求解這里不再介紹,下面直接使用skleaen中的決策回歸樹來看一下決策樹的回歸效果,數據集使用Boston房價數據:

不進行調參的話,可以看到在測試集上R方是0.59,顯然這是不太好的結果,但是一個有趣的現象是,在訓練集上:

R方值是1.0,也就是在訓練集上決策樹預測的回歸結果完全吻合毫無偏差,這顯然是過擬合。這個例子也說明了決策樹演算法是非常容易產生過擬合的,當然我們可以通過調參來緩解過擬合。

下面繪制學習曲線來直觀看一下決策樹回歸模型的表現,首先繪制基於MSE的學習曲線:

學習曲線如下:

再繪制基於R方的學習曲線:

上面兩種都是在默認情況下也就是不進行決策樹深度和葉子節點個數等條件的限製得到的結果。發現在訓練集上,如果不進行限制,可以做到0偏差,這是明顯的過擬合。接下來調節參數再繪制學習曲線,為節約篇幅,只調節決策樹深度這一個參數,而且只繪制基於R方的學習曲線:
max_depth=1時

max_depth=3時

max_depth=5時

隨著深度的增加,模型復雜度越來越高,過擬合現象也越來越明顯,可以測試,當max_depth=20時,在訓練集上又為一條y=1的無偏差直線。有興趣的仍然可以修改其它參數繪制學習曲線。

決策樹的局限性:

使用本系列上篇文章中的鳶尾花數據,來看一下決策樹對個別數據敏感會導致的結果,在本系列上篇文章中,使用信息熵劃分,其餘參數默認情況下繪制的決策邊界是:

接著我們刪除索引為138的數據,再來繪制決策邊界:

發現此時的決策邊界已經完全不同了,而這僅僅只是一個數據點的影響。

綜上我們知道決策樹實際是一種不夠穩定的演算法,它的表現極度依賴調參和數據,不過雖然決策樹本身不是一種高效的機器學習演算法,但是它們基於集成學習的組合——隨機森林(RF)卻是一個很魯棒的機器學習演算法,這將在下篇開始介紹。

閱讀全文

與綜述決策樹演算法總結相關的資料

熱點內容
dd命令u盤 瀏覽:568
單片機生日快樂程序 瀏覽:891
安卓手機連車載的叫什麼 瀏覽:223
怎麼讓自己的手機鍵盤變得好看app 瀏覽:53
能看qq的文件夾 瀏覽:515
android二維碼生成代碼 瀏覽:567
焦爐氣壓縮機 瀏覽:402
imap接收郵件伺服器地址 瀏覽:291
小喬肖恩解壓密碼 瀏覽:645
php網頁網盤源碼 瀏覽:181
簽到任務源碼 瀏覽:814
母親節的文案怎麼寫app 瀏覽:984
加密協議aes找不到 瀏覽:250
java伺服器端開發源碼 瀏覽:551
編譯器編譯運行快捷鍵 瀏覽:333
住房app怎麼快速選房 瀏覽:174
怎麼在電腦上編譯成功 瀏覽:214
單片機可調時鍾設計方案 瀏覽:192
qq文件夾密碼忘記怎麼找回 瀏覽:683
php擴展插件 瀏覽:608