決策樹學習

決策樹學習（粵拼：kyut3 caak3 syu6 hok6 zaap6）係一系列建立決策樹嘅機械學習做法。決策樹係一種用樹狀圖做決策嘅做法。一樖決策樹會有若干個節點，每個節點代表一個決策點，會掕住若干條線指向下一排節點，每條線表示「如果揀咗呢個選項，就去呢個決策點」。
決策樹學習就係一系列嘅機械學習演算法。呢啲演算法會睇過往嘅數據，靠數據建立決策樹，提供以下嘅資訊：「由手上嘅數據睇，啲個案可以按邊啲變數（決策點）嚟分類呢？」建立咗決策樹之後，分析者就可以攞住樖決策樹，預測將來遇到嘅個案要點分類。呢種噉嘅技術，可以用嚟教人工智能做睇病（將病人分類做有病同冇病兩類）等嘅工作。

基本概念
内文：機械學習同數據探勘
睇埋：樹狀數據同決策樹
一樖決策樹以根節點為起始，根節點下會有若干排節點，是但攞一個節點嚟睇，佢都會連住若干個子節點，啲子節點喺下一排。喺概念上，每一個節點都可以當係一個決策點，而由一個節點去佢嘅子節點嘅連繫，就可以當做「如果揀咗呢個呢個選項，世界嘅狀態就變去呢個呢個節點」。
想像下圖嗰樖英文決策樹：
個決策者家陣想決定「好唔好去玩」（PLAY），
喺開頭個節點，去玩（play）嘅價值有 9 分，唔好去玩（don't play）嘅價值有 5 分，
然後睇天氣（OUTLOOK），如果晴天（sunny），噉去玩嘅價值變成 2 分，唔好去玩嘅價值變成 3 分，
然後個決策者會睇濕度（HUMIDITY）
... 如此類推。如是者，分析者就做到將決策嘅過程圖像化噉展示出嚟，可以去（例如）將決策方法教畀啲下屬知。

建立方法
内文：監督式學習
睇埋：資訊理論
決策樹學習做緊嘅嘢，就係
靠住手上嘅數據，搵出啲個案可以點分類，再建立一樖決策樹，攞住樖決策樹嘅人或者人工智能就可以做類似噉嘅判斷：「如果第時有個前所未見嘅個案喺變數 A 上嘅數值係噉噉噉，將佢分類做 x 類物件，否則就將佢分做 y 類物件，跟住再睇變數 B，睇吓一件屬 x 類嘅物件可以分做 x1 類定 x2 類...」。
呢幅圖可以當係得一粒決策點嘅決策樹。決策樹學習想做嘅，就係由數據嗰度建立噉樣嘅決策樹，將啲個案分類。呢幅圖可以當係得一粒決策點嘅決策樹。決策樹學習想做嘅，就係由數據嗰度建立噉樣嘅決策樹，將啲個案分類。
想像而家手上有個數據庫，紀錄咗數據入面每一個個體嘅身高、體重、成績、性格（包括外向度等嘅多個特質）... 等嘅多個特性。研究者想靠呢啲數據建立一樖決策樹，將來用嚟預測啲人嘅行為。
建立決策樹嘅演算法，主要有以下呢啲。

資訊熵
内文：資訊熵
資訊熵呢個概念，建立決策樹嘅演算法成日都會用到。資訊熵呢個概念出自資訊理論，衝量一件事「有幾大嘅不確定性喺入便」：搵一個變數嚟睇，佢會有一啲可能數值，例如「某年某月某日某刻，掟某一個銀仔」嘅可能數值大致有兩個－公同字。每個數值都會有一定機率出現，想像而家已知每一個可能數值出現嘅機率，件事件帶有嘅資訊熵（數學符號係 ）可以用以下呢條式嚟計：
喺呢條式當中， 係指第 i 個可能性發生嘅機率，而  係  以 2 做基數嘅對數。用呢條式計嘅話，「掟一粒冇出千嘅銀仔」（公同字出現嘅機率都係 50%）呢件事當中帶有嘅資訊熵量（）就係：
例如一件肯定嘅事件係無資訊熵嘅——如果其中一個可能性機率係 1（即係其他可能性機率冚唪唥等如 0），資訊熵條式會出 0，而另一方面，如果每個可能性機率都一樣（不確定性最大化）嗰陣，條式畀嘅數值亦會最大化。
資訊熵可以用嚟衝量「提供到幾多資訊」——資訊熵下降反映不確定性下降。

ID3 系
内文：ID3同C4.5 演算法
ID3（英文全名係疊代二分器 3 噉嘅意思）可以話係最簡單最基礎嗰款決策樹建立法，源於 1986 年。ID3 呢種演算法採用貪心搜尋——喺建立每一個節點嗰陣，呢段演算法都會睇勻晒所有可以用嚟做預測嘅變數，然後就可以想像以下噉嘅步驟:p 14：
Input：某一個目標（想預測嘅）變數 ，同埋若干個用嚟做預測嘅變數 ；
將  入便嘅變數逐個逐個攞晒來睇；
由呢啲變數當中，揀出「最能夠提升有關  嘅資訊」嗰個，嗌呢個變數做 ；
將啲個案，按照佢哋喺  上嘅數值分組，分做   ... 等；
用  嚟做新嘅「根點」， 唔再係  嘅一員，由   ... 等各「生一樖新嘅子樹」；
同每一樖子樹，返去做步驟 2 至 5 嘅嘢（遞歸）。
舉個實際應用例子，想像依家要將手上嘅病人分類，數據庫入面有一個個病人個案，每個個案（1 2 3 4...）都記錄咗嗰位病人「有冇發燒」、「有冇見咳」同埋「係咪真係中咗新型流感」... 等嘅資訊。研究者跟住就叫部電腦用 ID3 建立決策樹，用嚟將啲病人分類，部電腦做嘅嘢可以想像成
將啲可以用嚟分類嘅變數—「有冇發燒」、「有冇見咳」—逐個逐個攞嚟睇，睇吓邊個最能夠令資訊熵下降；
例如家陣發覺「有冇發燒」係最能夠令資訊熵下降嘅，將班病人按「有冇發燒」嚟分做兩大組；
同每一個子節點，搵下一個可以用嚟分類嘅變數；
一路遞歸，直至可以用嚟分類嘅變數用晒為止。
最後得出嘅決策樹，就會容許研究者作出類似噉嘅決策過程：「首先，睇吓手上嗰位病人有冇發燒；如果有發燒，就睇吓佢有冇咳，如果有...（省略）；而如果冇發燒，就睇吓佢唞氣有冇困難，如果有...（省略）」，而最後樖決策樹就會畀出「手上嗰位病人係咪中咗流感」嘅判斷。而有咗呢一樖決策樹，研究者就可以例如教 AI 做睇病嘅工作。
ID3 呢種演算法畀人詬病，話佢太容易受到可能數值嘅數量影響，傾向偏好一啲「有好多唔同可能數值」嘅變數——噉即係表示 ID3 成日會重用（例如）電話號碼等「個個人數值都唔同，但攞嚟分類冇咩用」嘅變數。呢點喺某啲應用上會造成問題，而 C4.5（同埋及後嘅 C5.0）可以算係 ID3 嘅延伸版本，針對 ID3 嘅呢種漏洞嚟進行改良。

CART
CART 係另一種廿一世紀初常用嘅決策樹建立法，只能夠用嚟建立二元嘅決策樹。「二元」意思係指 CART 整出嚟嘅決策樹喺每個節點只有兩個可能選擇，唔似得 C5.0 噉可以一個節點有三個或者以上嘅選擇：例如 CART 只能夠將溫度分做凍同熱（切割點可能係攝氏 20 度），而 C5.0 整出嚟嘅決策樹就有可能將溫度分做凍、暖同熱（切割點可能係例如攝氏 30 度同攝氏 10 度）——唔係二元咁簡單。
CART 個做法同 ID3 相關嘅演算法好相似，都係有一個目標（要預測嘅）變數，同埋一拃用嚟做預測嘅變數。段演算法會有準則決定「呢步要用邊一個預測變數嚟將啲個案分割」，然後遞歸式噉做，最後出到一樖決策樹。CART 最與別不同嘅地方，係佢用另一套方法嚟衡量「要點樣選擇用嚟做分割嘅變數」—— CART 用嘅係所謂嘅堅尼指數：
籠統啲噉講，堅尼指數可以想像成係量度緊「純潔度」，數值係越低越好。詳細啲講：如果某個樣本入便淨係得某個可能性嘅發生機率係 1（其他可能性嘅發生機率冚唪唥都係 0）堅尼指數就會去到 0 呢個最細數值。

注意事項
睇埋：過適同決策樹剪枝
用決策樹分析數據有好多好處：首先呢種分析方法被指係可詮釋度高，唔似得（例如）人工神經網絡噉「無法解釋」；此外，決策樹分析彈性大，無論連續定係離散嘅變數佢都處理得到，亦處理到有缺失數據嘅 data；而且決策樹分析唔會假設啲數據跟啲乜嘢特定嘅概率分佈，就算啲數據（例如）唔跟常態分佈都用得決策樹。不過要用決策樹嚟做分析，遠遠唔只要建立樖決策樹咁簡單。事前事後都有好多嘢要諗過度過先。
決策樹嘅一個問題係，佢被指容易出現過適嘅情況：原則上，高度複雜嘅決策樹模型解釋手上數據嘅能力會勁啲，但係統計相關嘅研究表明，呢啲模型解釋將來數據嘅能力通常會較弱，想像下圖噉嘅情況——
而家研究者想分析兩個變數（圖中嘅 X 軸同 Y 軸）之間成咩關係，等自己將來可以由 X 嘅值預測 Y 嘅值；佢要做嘅係嘗試搵一條有返咁上下合乎數據（每個黑點係一個個案）嘅線，用呢條線做佢心目「兩個變數之間成咩關係」嘅模型；藍色條線有過適嘅問題——藍色線係就係完美符合手上數據，但佢條式複雜過直線嘅好多，而實證研究顯示，條線咁複雜，解釋將來數據嘅能力通常會弱啲。
要防範過適，分析者通常會做吓剪枝 ——即係有技巧噉「將樖樹嘅其中一啲節點剪走佢」，減低一樖決策樹嘅複雜度。研究者可以事前剪，即係（例如）行演算法建立決策樹之前，就講定樖樹最多可以有幾層節點，又可以指定一塊「葉」起碼要有幾多個個案；又可以事後剪，試吓攞走其中一條分枝，睇吓攞走咗會唔會影響分類嘅準確度，唔會嘅話就真係攞走嗰條分枝佢... 等等。

重要參數
喺 R 程式語言等嘅工具當中，建立決策樹可以設定以下呢啲參數：
maxdepth（最大深度）：樖決策樹「最多可以有幾多層」，設定呢個數值就會限住由根節點去到最尾嘅葉節點「最長可以有幾遠」。
minsplit（最小分割）：一塊「葉」最少要有幾多個個案先可以「斬出嚟」自成一塊葉，例如呢個參數設咗做 10，部電腦要做一吓切割將啲個案分做兩份嗰陣，兩邊都要最少有 10 個個案，先至可以做切割。
minbucket（最細桶量）：一塊「終結葉」（佢後面冇再分支嘅葉）最少要有幾多個個案，例如呢個參數設咗做 5，部電腦做切割嗰陣會確保每一塊終結葉最少要有 5 個個案。有一種諗法認為，呢個參數數值太細容易引致過適嘅問題。
每吓切割，個表現指標最少要改善幾多
等等。