機器學習演算法 模型 決策樹(2)深入理解

2021-10-03 10:34:50 字數 2287 閱讀 4194

訓練演算法

決策樹是最簡單的機器學習演算法,它易於實現,可解釋性強,完全符合人類的直觀思維,有著廣泛的應用。決策樹到底是什麼?簡單地講,決策樹是一棵二叉或多叉樹(如果你對樹的概念都不清楚,請先去學習資料結構課程),它對資料的屬性進行判斷,得到分類或回歸結果。**時,在樹的內部節點處用某一屬性值(特徵向量的某一分量)進行判斷,根據判斷結果決定進入哪個分支節點,直到到達葉子節點處,得到分類或回歸結果。這是一種基於if-then-else規則的有監督學習演算法,決策樹的這些規則通過訓練得到,而不是人工制定的。

決策樹出現於2023年代。決策樹的實現有id3,c4.5,cart(classification and regression tree,分類與回歸樹)等方法,它們的區別在於樹的結構構造演算法

決策樹是一種判別模型,天然支援多類分類問題。如果用於分類問題,決策樹稱為分類樹;如果用於回歸問題,則稱為回歸樹。

分類樹對應的對映函式是多維空間的分段線性劃分,即用平行於各個座標軸的超平面對空間進行切分;回歸樹的對映函式是分段常數函式

決策樹是分段線性函式但不是線性函式,它具有非線性建模的能力。只要劃分的足夠細,分段常數函式可以逼近閉區間上任意函式到任意指定精度,因此決策樹在理論上可以對任意複雜度的資料進行分類或者回歸。對於分類問題,如果決策樹深度夠大,它可以將訓練樣本集的所有樣本正確分類。但如果特徵向量的維數過高,可能會遇到維數災難導致準確率下降。

現在要解決的關鍵問題是怎樣用訓練樣本建立決策樹。如果對於分類問題,訓練得到的決策樹至少要讓訓練樣本盡快能的被分正確。

需要考慮的問題點:

如何選擇特徵屬性在決策節點的位置(先後順序)?

選待定乙個特徵屬性後,具體的分類規則是什麼?即如何設定閾值條件(數值變數)或者取值集合的子集(類別變數)?

何時停止分,把節點設定為葉子節點?

對於分類問題,當節點的樣本都屬於同一型別時停止,但是這樣可能會導致樹的節點過多、深度過大,產生過擬合問題。另一種方法是當節點中的樣本數小於乙個閥值時停止**。

下面是具體的解決辦法:

訓練演算法是乙個遞迴的過程。首先建立根節點,然後建立左子樹和右子樹。如果練樣本集為d,訓練演算法的整體流程為:

1.用樣本集d建立根節點,找到乙個判定規則,將樣本集**成d1和d2兩部分,同時為根節點設定判定規則。

2.用樣本集d1遞迴建立左子樹。

3.用樣本集d2遞迴建立右子樹。

4.如果不能再進行**,則把節點標記為葉子節點,同時為它賦值。

在確定這個遞迴流程之後,接下來要解決的核心問題是怎樣對訓練樣本集進行**。

對於分類問題,要保證**之後左右子樹的樣本盡可能的純,即它們的樣本盡可能屬於不相交的某一類或者幾類。為此需要定義不純度的指標:當樣本都屬於某一類時不純度為0當樣本均勻的屬於所有類時不純度最大。

滿足這個條件的有熵不純度gini不純度,以及誤分類不純度,下面分別進行介紹。

不純度指標用樣本集中每類樣本出現的概率值構造。因此首先要計算每個類出現的概率,這通過訓練樣本集中每類樣本數除以樣本總數得到:

如果不能繼續**,則將該節點設定為葉子節點。

如果是分類樹,則葉子節點的值設定成本節點的訓練樣本集**現概率最大的那個類;

如果是回歸樹,則設定為本節點訓練樣本標籤值的均值。

整個剪枝演算法分為兩步完成:

第一步先訓練出t0,然後用上面的方法逐步剪掉樹的所有非葉子節點,直到只剩下根節點得到剪枝後的樹序列。這一步的誤差計算採用的是訓練樣本集。

第二步根據真實誤差值從上面的樹序列中挑選出一棵樹作為剪枝後的結果。這可以通過交叉驗證實現,用交叉驗證的測試集對上一步得到的樹序列的每一棵樹進行測試,得到這些樹的錯誤率,然後根據錯誤率選擇最佳的樹作為剪枝後的結果。

需要繼續參考:2. 整合學習綜述-從決策樹到xgboost,完成整合學習

參考:理解決策樹

整合學習綜述-從決策樹到xgboost

機器學習演算法2 決策樹

本文總結於 machine learning in action 一書 一.決策樹的一般流程 1.收集資料 可以使用任何方法 2.準備資料 數構造演算法只適應於標稱型資料,因此數值型資料必須離散。3.分析資料 可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。4.訓練資料 構造樹的資料...

機器學習 決策樹模型

決策樹通過生成決策規則來解決分類和回歸問題。整個模型非常容易理解,是所謂的白盒模型。比如通過年齡 職業 年齡 房產來評估信用值,文末有sklearn實現 類似於流程圖的樹結構,由乙個根節點,一組內部節點和一組葉節點組成。每個內部節點 包括根節點 表示在乙個屬性上的測試,每個分支表示乙個測試輸出,每個...

機器學習(2) 決策樹

前言 決策樹是一種機器學習的方法。決策樹是一種樹形結構,其中每個內部節點表示乙個屬性上的判斷,每個分支代表乙個判斷結果的輸出,最後每個葉節點代表一種分類結果。決策樹需要監管學習。監管學習就是給出一堆樣本,每個樣本都有一組屬性和乙個分類結果,也就是分類結果已知,那麼通過學習這些樣本得到的決策樹,這個決...