日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

决策树是如何选择特征和分裂点?

發布時間:2024/10/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 决策树是如何选择特征和分裂点? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?PaperWeekly 原創 ·?作者|賁忠奇

單位|便利蜂算法工程師

研究方向|推薦算法、反作弊

緣起

在解決回歸和分類問題的時候,一般會使用 Random Forest、GBDT、XGBoost、LightGBM 等算法,這類算法因為性能好,被業界廣泛采用。突然想到樹類型的算法都需要明白一個基本問題,樹是如何選擇特征和分裂點的?其根本要追溯到決策樹的種類,每種是如何劃分特征和分裂點,以及如何剪枝的。

決策樹分為三類:ID3、C4.5、CART。提出時間卻是 1984 年提出 CART,1986年提出的 ID3,1993 年提出的 C4.5。在介紹決策樹之前需要了解一些信息論的知識,信息、熵、條件熵、信息增益。決策樹中的 ID3 和 C4.5 與信息論息息相關。

信息論基礎

信息是雜亂無章數據的一種度量方式。在分類問題中,如果待分類的事物可以劃分在多個分類中,那么某個分類 的信息定義為:


其中, 是某個分類的信息; 是選擇該分類的概率。

熵是信息的期望,也就是計算所有分類包含信息的期望值:

其中,H(Y) 表示分類數據集的熵。

條件熵是在特征 X 給定條件下,類別 Y 的條件概率分布的熵對特征 X 的數學期望。

其中, 表示在特征 X 下的條件熵; 表示特征下 具體特征值的條件熵; 表示 x 和 y 的聯合概率分布。

在劃分數據集之前之后信息發生的變化叫做信息增益,信息增益是熵的減少或者說是數據無序程度的減少。熵減去條件熵就是信息增益。

其中, 表示信息增益。

數據說明

在講完一些信息論的基礎知識的基礎上,由于原始論文中公式的表示不是同一個體系,為了更加方便理解這三者,因此下文中三個算法的介紹都以下面數據集為基礎。

訓練數據集 , 表示訓練樣本總數,數據共有 個類別,類別 的樣本集合分別用 表示,那么 ,如果特征A有n個不同類型的取值分別為 ,特征 A 可以將 D 劃分為 n 個子集,, 為 的樣本個數,并且 ,子集 屬于類別 的樣本集合為 , 即為子集 中屬于類別 的樣本集合:。用 表示 集合樣本的個數。

ID3

4.1 算法思路

利用訓練數據集 D 與特征 A 來表示信息增益的計算方式,那么需要以下幾個步驟:

1)計算訓練集合 的熵 :

當 H(D) 的值越小,說明樣本集合 D 的純度就越高。

2)選擇用樣本的某一個特征 A 來劃分樣本集合 D 時,就可以得出特征 A 對樣本 D 劃分所帶來的信息增益。特征 A 把 D 劃分為 n 個子集,計算特征 A 對數據集 D 的條件熵 H(D|A):

3)計算信息增益 IG:

信息增益越大,說明用特征 A 來劃分數據集 D,信息混亂程度越小。我們需要對樣本的所有特征計算信息增益情況,選擇信息增益大的特征來作為決策樹的一個結點,或者可以說那些信息增益大的特征往往離根結點越近。

當一個特征已經作為劃分的依據,在下面遞歸過程就不在參與了。經過根結點下面特征各個取值后樣本又可以按照相應特征值進行劃分,并且在當前的樣本下利用剩下的特征再次計算信息增益來進一步選擇劃分的結點,ID3 決策樹就是這樣建立起來的。

4.2 決策樹生成過程

大概創建分支 createBranch() 偽代碼的意思如下:

檢測數據集中的每個子項是否屬于同一分類:if?so?return?類標簽else尋找劃分數據集的最好特征劃分數據集創建分支節點for每個劃分的子集調用函數createBranch并增加返回結果到分支節點中retrun?分支節點

也就是說,遍歷每一個特征,遍歷每一個特征值,如果計算出來信息增益最大,那么該特征就是最佳特征;接下來每個特征和特征值遞歸調用,構建下面的子樹,再次選取特征和特征值,直到劃分的子項屬于同一類別或者遍歷完所有特征,返回出現次數最多的類別。

4.3 示例

選用原始論文中的一個示例:

假設有兩個分類,一個是 N,一個是 P,Outlook 表示天氣情況,Temperature 表示氣溫情況,Humidity 表示濕度,Windy 表示有風,這四個作為特征,每個特征下面的離散值作為特征值。那么數據的熵 :

在 Outlook 的值 sunny 中 P 出現了 2 次,N 出現了 3 次,因此 ,那么數據集在 sunny 下的熵表示為 同理:在 overcast 下 ;在 rain 下 。那么數據集 D 在 Outlook 特征的條件熵表示為:

那么 outlook 的信息增益表示為:

同理其他特征的信息增益結果為:

可以發現 Outlook 的信息增益最大,優先在這個特征上劃分,在遞歸到其他特征上最終形成的決策樹圖如下:?


C4.5

ID3 算法中當一個特征的可取值數目較多時,而對應的特征值下面的的樣本很少,這個時候它的信息增益是非常高的。ID3 會認為這個特征很適合劃分,但是較多取值的特征來進行劃分帶來的問題是它的泛化能力比較弱,不能夠對新樣本進行有效的預測。為了解決這個問題,C4.5 決策樹不直接使用信息增益來作為劃分樣本的主要依據,采用信息增益率來劃分樣本。

特征 A 對訓練數據集合D的信息增益比 定義為特征 A 的信息增益 IG(D,A) 與訓練數據集 D 關于特征 A 的取值熵 之比,即:

如果特征 A 有 n 個取值,則其中數據集 D 關于特征 A 的熵為:

上面的過程相當于對特征值多的特征做了一個歸一化,校正信息增益容易偏向于取值較多的特征的問題。但是同樣增益率對可取值數目較少的特征有所偏好,因此 C4.5 決策樹先從候選劃分屬性中找出信息增益高于平均水平的特征,在從中選擇增益率最高的。關于 C4.5 的剪枝問題,在 CART 樹中一并介紹。

CART樹

ID3 和 C4.5 需要把連續特征離散化才能在回歸數據中使用(ID3 需要人工處理,C4.5 算法自帶處理);使用熵來度量信息的混亂程度還是復雜了些;最佳特征取值可以是多個,切分成復雜的多叉樹。由于他們存在一些問題,下面還有一種決策樹模型,CART 樹。雖然 ID3 和 C4.5 存在很多問題,但是我不認為 CART 樹是為了解決這些問題的,因為 CART 論文是發表的最早的,這邊只是為了介紹他們對比不同。

CART(Classification And Regression Trees,分類回歸樹),采用二元切分的方法,如果數據切分特征值等于切分要求進入左子樹,否則進入右子樹。CART 樹即可以處理分類問題,又可以處理回歸問題。分類問題采用基尼系數來選擇最優特征和分裂點,回歸問題采用平方誤差的總值(總方差)來選擇最優特征和分裂點。

6.1 CART數據集混亂程度衡量

6.1.1 CART分類樹

基尼指數是 1912 年意大利統計與社會學家 Corrado Gini 提出的。基尼系數(Gini index、Gini Coefficient)用來衡量一個國家或地區居民收入差距的指標,值越大表示收入越懸殊。在 CART 分類樹中,采用基尼系數衡量數據集的不純度(混亂程度),基尼系數越小說明數據不純度低,特征越顯著。

那么分類數據集 D 的基尼系數可以表示為:

在特征A下,將數據劃分成兩類,一類是 ,一類是 ,那么在特征 A 下的基尼系數為:

6.1.2 CART回歸樹

計算回歸數據真實目標值中所有數據的均值,每條數據真實目標值減去均值。使用差值的絕對值或者差值的平方來衡量回歸數據的混亂程度。若果采用差值的平方來衡量,那么就是平方誤差的總值(總方差)。

6.2 樹的生成過程

函數 createTree() 的偽代碼大致如下:

找到最佳的待切分特征:????如果該節點不能再分,將該節點存為葉節點????執行二元切分????在右子樹調用createTree()方法????在左子樹調用createTree()方法????那么如何找到最佳的待切分特征和特征值呢????每個特征:????每個特征值:????將數據切分成兩份????計算切分的誤差????如果當前誤差小于當前最小誤差,那么將當前切分設定為最佳切分并更新最小誤差???? 返回最佳切分的特征和特征值

如果是分類樹,那么誤差指的的基尼系數,如果是回歸樹,誤差值的是總方差。節點不能再分有兩種情況:一是切分后的數據真實目標值為同一個,那么此時葉節點就是當前值;二是預剪枝切分后的樣本很少或者迭代時總誤差下降不滿足閾值,此時用切分后的數據真實值的平均值作為葉節點。

6.3 樹的剪枝

樹的剪枝分為預剪枝和后剪枝,一般為了尋求模型的最佳效果可以同時使用兩種剪枝技術。


預剪枝過程相對簡單,在生成樹的過程中,如果某個特征和特征值切分的樣本小于最小樣本數或迭代誤差下降值小于設置的最小下降值,就停止切分。預剪枝可以降低過擬合的風險并減少決策樹的訓練時間,但是也會帶來欠擬合的問題。

下面重點講后剪枝,訓練集訓練一個決策樹。在驗證集上,對于一顆子樹 ,其損失函數為:

其中, 為正則化參數, 為驗證集的預測誤差, 是子樹 T 葉節點的數量。

如果將 T 的子樹減掉,那么損失函數為:

如果剪枝后損失函數變小,或者損失函數相等但是葉節點的數量變少,這兩種情況都滿足剪枝條件,具體后剪枝過程如下:

基于已有的樹切分驗證集數據:如果存在任一子集是一棵樹,則在該子集遞歸剪枝過程計算將當前兩個葉節點合并后的誤差計算不合并的誤差如果合并會降低誤差的話,就將葉節點合并


決策樹算法小結

在樣本量比較小的情況下建議使用 C4.5,大樣本的情況下使用 CART。C4.5 需要對數據進行多次排序,處理成本耗時較高;CART 樹是一種大樣本的統計方法,小樣本處理下泛化誤差較大。


目前這三種算法都是一棵樹中的特征來決定最后的結果,后來發展成一組樹來決定最后的結果。如果這些樹是并行投票,就是每個樹的投票權重相同,形成了 bagging 類的算法,最有代表性的是 Random Forest;如果這些樹是串行投票,每個樹的投票權重不同,通過擬合殘差的方式,形成了 boosting 類的算法,最有代表性的是 GBDT、XGBoost、LightGBM。

參考文獻

[1] Leo Breiman, Jerome H. Friedman, Richard A. Olshen, Charles J. Stone.(1984).
[2] Classification And Regression Trees Quinlan1986_Article_InductionOfDecisionTrees
[3] C4.5: by J. Ross Quinlan. Inc., 1993. Programs for Machine Learning Morgan Kaufmann Publishers
[4]《機器學習實戰》
[5] https://www.cnblogs.com/pinard/p/6053344.html
[6] 周志華西瓜書《機器學習》

更多閱讀

#投 稿?通 道#

?讓你的論文被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術干貨。我們的目的只有一個,讓知識真正流動起來。

?????來稿標準:

? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?

? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?

? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志

?????投稿郵箱:

? 投稿郵箱:hr@paperweekly.site?

? 所有文章配圖,請單獨在附件中發送?

? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

總結

以上是生活随笔為你收集整理的决策树是如何选择特征和分裂点?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。