如果您剛剛開始學習機器學習,您很可能已經聽說過決策樹。雖然您目前可能還不瞭解它的工作原理,但請記住,您肯定以某種形式使用過它。長期以來,決策樹一直是全球一些熱門服務的後端支撐。雖然現在有更好的替代方案,但決策樹在機器學習領域仍然佔有重要地位。
簡單介紹一下,決策樹是一種用於分類和迴歸任務的監督式機器學習演算法。決策樹分析涉及不同的選擇及其可能的結果,這有助於根據特定標準輕鬆做出決策,我們將在本部落格的後面部分進行討論。
在本文中,我們將介紹機器學習中的決策樹、決策樹演算法的工作原理、其優缺點以及應用。
什麼是決策樹?
決策樹是一種非引數機器學習演算法,這意味著它不對輸入特徵和目標變數之間的關係做出任何假設。決策樹可用於分類和迴歸問題。決策樹類似於流程圖,具有分層樹結構,包含:
- 根節點
- 分支
- 內部節點
- 葉節點
決策樹的型別
決策樹有兩種不同的型別:分類樹和迴歸樹。它們有時也被稱為 CART(分類樹和迴歸樹)。本節我們將簡要介紹這兩種樹。
- 分類樹:分類樹預測分類結果。這意味著它將資料分類。然後,樹會猜測新樣本屬於哪個類別。例如,分類樹可以根據發件人、主題和內容的特徵輸出電子郵件是“Spam”還是“Not Spam”。
- 迴歸樹:當目標變數為連續變數時,使用迴歸樹。這意味著預測的是數值而不是分類值。這是透過對葉子節點的值取平均值來實現的。例如,迴歸樹可以預測房屋的最高價格;其特徵可以是房屋大小、面積、臥室數量和位置。
該演算法通常利用“基尼不純度”或“熵”來確定節點分裂的理想屬性。基尼不純度衡量的是隨機選擇的屬性被錯誤分類的頻率。該值越低,該屬性的分割效果越好。熵是衡量資料集無序性或隨機性的指標,因此,屬性的熵值越低,樹的分割效果就越理想,並且分割結果也越可預測。
同樣,在實踐中,我們會選擇使用 DecisionTreeClassifier 或 DecisionTreeRegressor 進行分類和迴歸,從而選擇合適的型別:
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor # Example classifier (e.g., predict emails are spam or not) clf = DecisionTreeClassifier(max_depth=3, random_state=42) # Example regressor (e.g., predict house prices) reg = DecisionTreeRegressor(max_depth=3)
決策樹中的資訊增益和基尼係數
到目前為止,我們已經討論了決策樹的基本原理和工作原理。現在,讓我們討論一下決策樹的選擇指標,這些指標最終有助於選擇理想的節點進行拆分。為此,我們將在下面討論兩種常用的方法:
1. 資訊增益
資訊增益是衡量特定屬性在降低資料集熵方面的有效性的指標。這有助於選擇最具資訊量的特徵來拆分資料,從而構建更準確、更高效的模型。
假設 S 是一組例項,A 是一個屬性。Sv 是 S 的子集,V 表示該屬性的單個值。A 可以從集合 (A) 中取一個值,而集合 (A) 是該屬性所有可能值的集合。
熵:在決策樹中,熵是衡量資料集無序性或隨機性的指標。當類別分佈均勻時,熵最大;當類別分佈更均勻時,熵減小。因此,熵值較低的節點表示該節點內的類別大多相似或純淨。
其中,P(c) 是集合 S 中類別的機率,C 是所有類別的集合。
示例:如果我們想根據天氣狀況(天氣狀況和溫度)來決定是否打網球。
天氣狀況有 3 個值:晴天、陰天、下雨;溫度有 3 個值:炎熱、溫和、寒冷;打網球的結果有兩個值:是或否。
Outlook | 打網球 | 計數 |
---|---|---|
晴天 | No | 3 |
晴天 | Yes | 2 |
陰天 | Yes | 4 |
下雨 | No | 1 |
下雨 | Yes | 4 |
計算資訊增益
現在,我們將計算基於“展望”進行拆分時的資訊增益。
步驟 1:整個資料集 S 的熵
因此,S 中的例項總數為 14,其分佈為:
- 是:9
- 否:5
S 的熵為:熵(S) = -(9/14 log2(9/14) + 5/14 log2(5/14) = 0.94
步驟 2:基於 Outlook 分佈的子集熵
現在,讓我們根據 Outlook 分佈將資料點劃分為子集,因此:
- 晴天(5 條記錄:2 條是,3 條否):熵(晴天)= -(⅖ log2(⅖)+ ⅗ log2(⅗)) = 0.97
- 陰天(4 條記錄:4 條是,0 條否):熵(陰天) = 0(因為它是一個純屬性,所有值都相同)
- 下雨(5 條記錄:4 條是, 1 否):熵(雨) = -(⅘ log2(⅘)+ ⅕ log2(⅕)) = 0.72
步驟 3:計算資訊增益
現在我們根據展望計算資訊增益:
增益(晴天,展望) = 熵(晴天) – (5/14 * 熵(晴天) + 4/14 * 熵(陰天) + 5/14 * 熵(雨)) 增益(晴天,展望) = 0.94 – (5/14 * 0.97 + 4/14 * 0 + 5/14 * 0.72) = 0.94 – 0.603 = 0.337
因此,展望屬性的資訊增益為 0.337。
此處的展望屬性表明它在推導解決方案方面有一定的有效性。但是,對於正確的結果仍然存在一些不確定性。
2. 基尼係數
與資訊增益類似,基尼係數用於確定資料分割的最佳特徵,但其運作方式不同。基尼係數是一種度量指標,用於衡量隨機選擇的元素被錯誤識別或不純(資料子集中類別的混合程度)的頻率。因此,屬性的基尼係數值越高,被選中進行資料分割的可能性就越小。因此,在此類決策樹中,基尼係數值較高的屬性更受青睞。
其中:
m 是資料集中的類別數,P(i) 是資料集 S 中類別 i 的機率。
例如,如果我們有一個包含“是”和“否”類別的二分類問題,那麼每個類別的機率就是每個類別中例項的比例。基尼係數的範圍從 0(代表完全純淨)到 0.5(代表二分類的最大不純度)。
因此,Gini=0 表示子集內所有例項都屬於同一類;Gini=0.5 表示例項在所有類中所佔比例相等。
示例:如果我們想根據天氣狀況(天氣狀況和溫度)來決定是否打網球。
天氣狀況有 3 個值:晴天、陰天、下雨;溫度有 3 個值:炎熱、溫和、寒冷;打網球的結果有兩個值:是或否。
Outlook | 打網球 | 計數 |
Sunny | No | 3 |
Sunny | Yes | 2 |
Overcast | Yes | 4 |
Rain | No | 1 |
Rain | Yes | 4 |
計算基尼係數
現在,我們將計算基於“展望”劃分的基尼係數。
步驟 1:計算整個資料集 S 的基尼係數
因此,S 中的例項總數為 14,其分佈為:
- 是:9
- 否:5
S 的基尼係數為:
P(是) = 9/14,P(否) = 5.14;Gain(S) = 1-((9/14)^2 + (5/14)^2);Gain(S) = 1-(0.404_0.183) = 1- 0.587 = 0.413
步驟 2:基於 Outlook 的各子集的基尼係數
現在,讓我們根據 Outlook 分佈將資料點劃分為子集,因此:
Sunny(5 條記錄:2 條是,3 條否):P(是)=⅖,P(否) = ⅗;Gini(Sunny) = 1-((⅖)^2 +(⅗)^2) = 0.48
陰天(4 條記錄:4 個是,0 個否):
由於此子集中的所有例項均為“是”,因此基尼係數為:
Gini(陰天)= 1-(4/4)^2 +(0/4)^2)= 1-1= 0 雨天(5 條記錄:4 個是,1 個否):P(是)=⅘,P(否)=⅕ 基尼(雨天)= 1-((⅘ )^2 +⅕ )^2) = 0.32
陰天(4 條記錄:4 個是,0 個否):
由於此子集中的所有例項均為“是”,因此基尼係數為:Gini(陰天)= 1-(4/4)^2 +(0/4)^2)= 1-1= 0
雨天(5 條記錄:4 個是,1 個否):P(是)=⅘, P(No)=⅕ Gini(Rain) = 1-((⅘ )^2 +⅕ )^2) = 0.32
步驟 3:分割後的加權基尼係數
現在,我們根據 Outlook 值計算分割後的加權基尼係數。這將是分割後整個資料集的基尼係數。
加權基尼係數(S,Outlook)= 5/14 * 基尼係數(晴天)+ 4/14 * 基尼係數(陰天)+ 5/14 * 基尼係數(雨天)加權基尼係數(S,Outlook)= 5/14 * 0.48+ 4/14 * 0 + 5/14 * 0.32 = 0.286
步驟 4:基尼增益
基尼增益將計算為拆分後基尼係數的降低量。因此:
基尼增益(S,Outlook)= 基尼係數(S)- 加權基尼係數(S,Outlook)基尼增益(S,Outlook)= 0.413 – 0.286 = 0.127
因此,“Outlook”屬性的基尼增益為 0.127。這意味著,使用“Outlook”作為拆分節點,可以將資料集的不純度降低 0.127。這表明了該方法的有效性。這個特徵在資料分類中的作用。
決策樹是如何工作的?
如上所述,決策樹是一種監督式機器學習演算法,可用於迴歸和分類任務。決策樹首先使用拆分標準之一——資訊增益或基尼係數——選擇根節點。因此,構建決策樹涉及遞迴拆分訓練資料,直到每個分支中結果區分的機率達到最大。決策樹演算法從根節點自上而下進行。其工作原理如下:
- 從包含所有訓練樣本的根節點開始。
- 選擇最佳屬性來拆分資料。最佳拆分特徵是提供最多純子節點(即資料點屬於同一類)的特徵。這可以透過資訊增益或基尼係數來衡量。
- 根據所選的具有最大資訊增益或最小基尼係數的特徵將資料拆分成小的子集,並進一步建立純子節點,直到最終結果同質或屬於同一類。
- 最後一步是,當滿足條件(稱為儲存條件)時,停止樹的進一步生長。發生這種情況的條件是:
-
- 節點中的所有資料都屬於同一類或為純節點。
- 不再進行進一步的拆分。
- 達到樹的最大深度。
- 最小數量的節點成為葉節點,並被標記為特定區域或屬性的預測類/值。
-
遞迴劃分
這種自上而下的過程稱為遞迴劃分。它也被稱為貪婪演算法,因為在每一步中,演算法都會根據當前資料選擇最佳劃分。這種方法雖然高效,但並不能確保樹的廣義最優性。
例如,設想一棵用於咖啡決策的決策樹。根節點詢問“現在幾點?”;如果是早上,它會詢問“累嗎?”;如果是,它會引導到“喝咖啡”,否則會引導到“不喝咖啡”。下午也有一個類似的分支。這說明了決策樹如何進行連續決策,直到得出最終答案。
在本例中,決策樹從根節點“現在幾點?”開始。根據這個問題的答案,下一個節點將是“你累了嗎?”。最後,葉子節點給出最終的類別或決策“喝咖啡”或“不喝咖啡”。
現在,隨著樹的增長,每次拆分都旨在建立一個純子節點。如果分裂過早停止(由於深度限制或樣本量較小),則葉子節點可能不純,包含混合類別;那麼它的預測可能是該葉子節點中佔多數的類別。
如果樹變得非常大,我們必須新增深度限制或修剪(即刪除不重要的分支),以防止過度擬合併控制樹的大小。
決策樹的優缺點
決策樹具有許多優勢,使其成為機器學習中的熱門選擇,儘管它存在缺陷。在本節中,我們將討論決策樹的一些主要優缺點:
優點
- 易於理解和解釋:決策樹非常直觀,可以以流程圖的形式視覺化。一旦樹構建或完成,人們可以很容易地看到哪個特徵導致了哪個預測。這使得模型更加透明。
- 同時處理數值和分類資料:決策樹預設同時處理分類和數值資料。它們不需要任何編碼技術,這使得它們更加靈活,這意味著我們無需進行大量的資料預處理即可輸入混合資料型別。
- 捕獲資料中的非線性關係:決策樹也被稱為能夠分析和理解資料中複雜的隱藏模式,因此它們可以捕獲輸入特徵和目標變數之間的非線性關係。
- 快速且可擴充套件:決策樹在訓練時花費的時間很少,並且由於它們是非引數的,因此可以以合理的效率處理資料集。
- 最少的資料準備:決策樹不需要特徵縮放,因為它們根據實際類別進行拆分,這意味著不需要在外部進行此類操作;大多數縮放都在內部處理。
缺點
- 過擬合:隨著樹的深度增加,決策樹很容易在訓練資料上過擬合。這意味著最終模型由於在測試集或未見過的真實資料上缺乏泛化能力,將無法獲得良好的效能。
- 不穩定性:決策樹的效率取決於它選擇哪個節點來分割資料以找到純節點。但訓練集的細微變化或選擇節點時的錯誤決策都可能導致樹的結果截然不同。因此,決策樹的結果不穩定。
- 隨著樹的深度增加,複雜性也會增加:具有多層級的深層決策樹也需要更多的記憶體和時間來評估,以及如上所述的過擬合問題。
決策樹的應用
決策樹因其可解釋性和靈活性,在機器學習和資料科學領域的實踐中廣受歡迎。以下是一些實際示例:
- 推薦系統:決策樹可以透過分析使用者的行為及其活動和內容偏好,為電商或媒體網站上的使用者提供推薦。基於樹中的所有模式和分割,系統會推薦使用者可能感興趣的特定產品或內容。例如,對於線上零售商,決策樹可用於根據使用者的線上活動對其產品類別進行分類。
- 欺詐檢測:決策樹通常用於金融欺詐檢測,以對可疑交易進行分類。在這種情況下,決策樹可以根據交易金額、交易地點、交易頻率、性格特徵等進行分割,以確定活動是否為欺詐行為。
- 市場營銷和客戶細分:公司的市場營銷團隊可以使用決策樹對客戶進行細分或組織。在這種情況下,決策樹可用於根據資料中的歷史模式來判斷客戶是可能對營銷活動做出反應還是更有可能流失。
這些示例展示了決策樹的廣泛用例,它們可用於從推薦演算法到市場營銷再到工程等領域的分類和迴歸任務。
評論留言