秒懂機器學習---分類回歸樹CART
一、總結
一句話總結:
用決策樹來模擬分類和預測,那些人還真是聰明:其實也還好吧,都精通的話想一想,混一混就好了
用決策樹模擬分類和預測的過程:就是對集合進行歸類的過程(歸類自然也就給出了預測,因為某類的結果一般是一樣的)
1、CART( Classification And Regression Tree)算法是什么?
分類回歸樹算法
決策樹的一種實現
2、CART( Classification And Regression Tree)算法的實質是什么?
二分·遞歸·分割技術
CART算法是一種二分遞歸分割技術,把當前樣本划分為兩個子樣本,使得生成的每個非葉子結點都有兩個分支,因此CART算法生成的決策樹是結構簡潔的二叉樹。由於CART算法構成的是一個二叉樹,它在每一步的決策時只能為“是”或者“否”,即使一個feature有多個取值,也是把數據分為兩部分。
3、通常決策樹主要有哪三種實現?
ID3算法
CART算法
C4.5算法
4、在CART算法中主要的兩個步驟是什么?
(1)決策樹生成(決策樹要盡量大):將樣本遞歸划分進行建樹過程,生成的決策樹要盡量大;
(2)決策樹剪枝(使損失函數最小):用驗證數據進行剪枝,這時損失函數最小作為剪枝的標准。
5、CART算法的適用情況是什么?
分類和回歸:CART既可以用於分類也可以用於回歸
6、CART算法的算法流程是什么?
1、計算Gini系數 + 二分分割樣本
2、選擇Gini系數最小的特征及其對應的切分點作為最優特征與最優切分點
3、遞歸調用1、2
1、設結點的訓練數據集為D,計算現有特征對該數據集的Gini系數,此時,對每一個特征A,對其可能取的每個值a,根據樣本點對A=a的測試為“是”或“否”將D分割成D_{1}和D_{2}兩部分,計算A=a時的Gini系數。 2、在所有可能的特征A以及它們所有可能的切分點a中,選擇Gini系數最小的特征及其對應的切分點作為最優特征與最優切分點,依最優特征與最優切分點,從先結點生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去。 3、對兩個子結點遞歸地調用步驟1-2,直至滿足停止條件。 4、生成CART決策樹。 算法停止計算的條件是結點中的樣本個數小於預定閾值,或樣本集的Gini系數小於預定閾值(樣本基本屬於同一類),或者沒有更多特征。
7、CART算法的停止計算的條件是什么?
結點中的樣本個數小於預定閾值
樣本集的Gini系數小於預定閾值
沒有更多特征
算法停止計算的條件是結點中的樣本個數小於預定閾值,或樣本集的Gini系數小於預定閾值(樣本基本屬於同一類),或者沒有更多特征。
8、GINI指數是什么?
1、是一種不等性度量;
2、通常用來度量收入不平衡,可以用來度量任何不均勻分布;
3、是介於0~1之間的數,0-完全相等,1-完全不相等;
4、總體內包含的類別越雜亂,GINI指數就越大(跟熵的概念很相似)
9、為什么決策樹需要剪枝?
決策樹很容易發生過擬合,也就是由於對train數據集適應得太好,反而在test數據集上表現得不好。
10、剪枝常用思路有哪些?
1:使用訓練集合(Training Set)和驗證集合(Validation Set),來評估剪枝方法在修剪結點上的效用
2:使用所有的訓練集合進行訓練,但是用統計測試來估計修剪特定結點是否會改善訓練集合外的數據的評估性能,如使用Chi-Square(Quinlan,1986)測試來進一步擴展結點是否能改善整個分類數據的性能,還是僅僅改善了當前訓練集合數據上的性能。
3:使用明確的標准來衡量訓練樣例和決策樹的復雜度,當編碼長度最小時,停止樹增長,如MDL(Minimum Description Length)准則。
二、機器學習十大算法之CART
轉自或參考:機器學習十大算法之CART
https://blog.csdn.net/qq_33273962/article/details/83818353
一、概述
CART( Classification And Regression Tree)即分類回歸樹算法,它是決策樹的一種實現,通常決策樹主要有三種實現,分別是ID3算法,CART算法和C4.5算法。CART算法是一種二分遞歸分割技術,把當前樣本划分為兩個子樣本,使得生成的每個非葉子結點都有兩個分支,因此CART算法生成的決策樹是結構簡潔的二叉樹。由於CART算法構成的是一個二叉樹,它在每一步的決策時只能為“是”或者“否”,即使一個feature有多個取值,也是把數據分為兩部分。在CART算法中主要分為兩個步驟:
(1)決策樹生成:將樣本遞歸划分進行建樹過程,生成的決策樹要盡量大;
(2)決策樹剪枝:用驗證數據進行剪枝,這時損失函數最小作為剪枝的標准。
二、算法流程
CART決策樹的生成就是遞歸地構建二叉樹的過程,CART既可以用於分類也可以用於回歸,這里我們對分類進行討論,對分類而言,CART用Gini系數最小化准則來進行特征選擇,生成二叉樹。CART算法如下:
輸入:訓練數據集D,停止計算的條件;
輸出:CART決策樹。
根據訓練數據集,從根結點開始遞歸地對每個節點進行一下操作,構建二叉決策樹:
1、設結點的訓練數據集為D,計算現有特征對該數據集的Gini系數,此時,對每一個特征A,對其可能取的每個值a,根據樣本點對A=a的測試為“是”或“否”將D分割成和
兩部分,計算A=a時的Gini系數。
2、在所有可能的特征A以及它們所有可能的切分點a中,選擇Gini系數最小的特征及其對應的切分點作為最優特征與最優切分點,依最優特征與最優切分點,從先結點生成兩個子結點,將訓練數據集依特征分配到兩個子結點中去。
3、對兩個子結點遞歸地調用步驟1-2,直至滿足停止條件。
4、生成CART決策樹。
算法停止計算的條件是結點中的樣本個數小於預定閾值,或樣本集的Gini系數小於預定閾值(樣本基本屬於同一類),或者沒有更多特征。我們對Gini系數做簡單介紹:
GINI指數:
1、是一種不等性度量;
2、通常用來度量收入不平衡,可以用來度量任何不均勻分布;
3、是介於0~1之間的數,0-完全相等,1-完全不相等;
4、總體內包含的類別越雜亂,GINI指數就越大(跟熵的概念很相似)
分類問題中,假設有 K 個類,樣本屬於第 k 類的概率為 pk,則概率分布的基尼指數為:
樣本集合 D 的基尼指數為:
其中 Ck 為數據集 D 中屬於第 k 類的樣本子集。
如果數據集 D 根據特征 A 在某一取值 a 上進行分割,得到 D1 ,D2 兩部分后,那么在特征 A 下集合 D 的基尼指數為:
具體算法流程如下面的例子:
首先對數據集非類標號屬性{是否有房,婚姻狀況,年收入}分別計算他們的Gini系數增益,取Gini系數增益值最大的屬性作為決策樹的根結點屬性。根結點的Gini系數:
當根據是否有房來進行划分時,Gini系數增益計算過程為
若按照婚姻狀況來划分,屬性婚姻狀況有三個可能的取值{married,single,divorced},分別計算划分后的
{married}|{single,divorced}
{single}|{married,divorced}
{devorced}|{single,married}的Gini系數
當分組為{married}|{single,divorced}時,表示婚姻狀況取值為married的分組,
表示婚姻狀況取值為single或者divorced的分組
當分組為 {single}|{married,divorced}時,
當分組為{devorced}|{single,married}時,
最后考慮年收入屬性,我們發現它是一個連續的數值類型。對於年收入屬性為數值型屬性,首先需要對數據按升序排序,然后從小到大一次用相鄰值的中間值作為分割將樣本划分為兩組。例如當面對年收入為60和70這兩個值時,我們計算中間值為65。倘若以中間值65作為分割點,作為年收入小於65的樣本,
表示年收入大於等於65的樣本,於是則有Gini系數增益為
其他值的計算同理,下面列出計算結果如下(我們取其中使增益最大化的那個二分准則作為構建二叉樹的准則):
同樣,我們計算剩下的屬性,其中根結點的Gini系數為
和前面的計算過程類似,對是否有房,可得
對於年收入屬性則有
三、剪枝
決策樹很容易發生過擬合,也就是由於對train數據集適應得太好,反而在test數據集上表現得不好。這個時候我們要么是通過閾值控制終止條件避免樹形結構分支過細,要么就是通過對已經形成的決策樹進行剪枝來避免過擬合。另外一個克服過擬合的手段就是基於Bootstrap的思想建立隨機森林(Random Forest)。
先剪枝:在構造過程中,當某個節點滿足剪枝條件,則直接停止此分支的構造。
后剪枝:先構造完成完整的決策樹,再通過某些條件遍歷樹進行剪枝。
其實剪枝的准則是如何確定決策樹的規模,可以參考的剪枝思路有以下幾個:
1:使用訓練集合(Training Set)和驗證集合(Validation Set),來評估剪枝方法在修剪結點上的效用
2:使用所有的訓練集合進行訓練,但是用統計測試來估計修剪特定結點是否會改善訓練集合外的數據的評估性能,如使用Chi-Square(Quinlan,1986)測試來進一步擴展結點是否能改善整個分類數據的性能,還是僅僅改善了當前訓練集合數據上的性能。
3:使用明確的標准來衡量訓練樣例和決策樹的復雜度,當編碼長度最小時,停止樹增長,如MDL(Minimum Description Length)准則。
參考:
https://blog.csdn.net/ACdreamers/article/details/44664481