我用白話+案例給你講講機器學習中的決策樹
決策樹是類似流程圖的結構,其中每個內部節點表示一個測試功能(例如,硬幣翻轉出現正面或反面),每個葉節點都表示一個類標籤(在計算所有特徵之後做出的決定)和分支表示導致這些類標籤的功能的連線。從根到葉的路徑表示分類規則,下圖說明了使用標籤進行決策的決策樹的基本流程(下雨(Yes),不下雨(No))。
決策樹是統計、資料探勘和機器學習中使用的預測建模方法之一。
決策樹是通過演算法方法構建的,該方法識別基於不同條件分割資料集的方法。它是監督學習中使用最廣泛和最實用的方法之一。決策樹是一種非引數監督學習方法,用於分類和迴歸任務。
目標變數可以採用一組離散值的樹模型稱為分類樹。目標變數可以採用連續值(通常是實數)的決策樹稱為迴歸樹。分類和迴歸樹(CART)是此的通用術語。
在這篇文章中,我將嘗試使用這些示例進行解釋。
資料格式
資料的記錄形式
(X,Y)=(X1,X2,X3,...,XK,Y)
因變數Y是我們試圖理解、分類或概括的目標變數。向量x由用於該任務的特徵x1、x2、x3等組成。
示例
制定決策樹的方法
在製作決策樹時,在樹的每個節點處我們會詢問不同型別的問題。根據問題,我們將計算與之對應的資訊增益。
資訊增益
資訊增益用於決定在構建樹的每個步驟中要拆分的特徵。簡單是最好的,所以我們希望保持樹很小。要做到這一點,我們應該在每一步選擇產生最純子節點的分割。常用的純度測量稱為測量資訊。對於樹的每個節點,資訊值測量特徵為我們提供有關類的資訊量。具有最高資訊增益的分割將被視為第一次分割,並且該過程將繼續直到所有子節點都是純的,或者直到資訊增益為0。
問問題
讓我們嘗試查詢問題及其輸出。
現在我們將嘗試根據問題對資料集進行分割槽。每個步驟將資料分為兩類。
用於構造決策樹的演算法通常通過在每個步驟中選擇最佳分割專案集的變數來自上而下地工作。不同的演算法使用不同的矩陣進行最佳測量。
基尼雜質
首先讓我們瞭解純和不純度的含義。
純
純意味著,在選定的資料集樣本中,所有資料都屬於同一類(PURE)。
不純
不純意味著,資料是不同類別的混合。
基尼雜質的定義
如果根據資料集中類標籤的分佈對新例項進行隨機分類,則Gini雜質是對隨機變數的新例項的不正確分類的可能性的度量。
如果我們的資料集是純粹的,則不正確分類的可能性為0。如果我們的樣本是不同類別的混合,則錯誤分類的可能性將很高。
示例
制定決策樹的步驟
-
獲取在製作決策樹時考慮的行(資料集)列表(在每個節點遞迴)。
-
計算我們的資料集或基尼雜質的不確定性或我們的資料混合的程度等。
-
生成需要在該節點詢問的所有問題的列表。
-
根據詢問的每個問題將行分為True行和False行。
-
根據基尼雜質和上一步資料的劃分計算資訊增益。
-
根據提出的每個問題更新最高資訊收益。
-
根據資訊增益(更高的資訊增益)更新最佳問題。
-
在最佳問題上劃分節點。再次從步驟1重複,直到我們得到純節點(葉節點)。
上述步驟的程式碼
現在,在每個節點上遞迴地基於上面討論的步驟構建決策樹。
建立決策樹
讓我們根據訓練資料構建決策樹。
產量
從上面的輸出中我們可以看到,在每個步驟中,資料被分為True和False行。這個過程不斷重複,直到我們到達資訊增益為0的葉節點,並且由於節點是純的,因此無法進一步分割資料。
決策樹的優勢
-
易於使用和理解
-
可以處理分類和數字資料
-
抵抗異常值,因此幾乎不需要資料預處理
決策樹的缺點
-
容易過度擬合
-
需要某種程度的測量來衡量他們的表現
-
需要小心對待引數調優
-
如果某些類占主導地位,可以建立有偏見的學習樹
如何避免過度擬合決策樹模型
過度擬合是機器學習中每個模型的主要問題之一。如果模型過度擬合,它將很難推廣到新樣本。為了避免決策樹過度擬合,我們刪除了使用具有低重要性的特徵的分支。此方法稱為剪枝( Pruning)或後剪枝。這樣我們將降低樹的複雜性,從而通過減少過度擬合來提高預測精度。
剪枝應該減小學習樹的大小,而不降低由交叉驗證集測量的預測準確性。有兩種主要的剪枝技術。
-
最小錯誤:樹被修剪回交叉驗證錯誤最小的點。
-
最小樹:樹比最小誤差略微修剪。從技術上講,剪枝會建立一個決策樹,其交叉驗證錯誤在最小錯誤的1個標準誤差範圍內。
提前停止或預修剪
防止過度擬合的另一種方法是在產生非常小樣本的葉子之前儘早停止增長樹法。這種啟發式被稱為早期停止,但有時也被稱為預剪枝決策樹。
在拆分樹的每個階段,我們檢查交叉驗證錯誤。如果錯誤沒有明顯減少,那麼我們就停止了。通過過早停止可能會導致早期停止。當前的分裂可能沒什麼好處,但是已經做到了,隨後的分割也更加顯著地減少了誤差。
早期停止和修剪可以一起使用,也可以單獨使用,或者根本不使用。修剪後的決策樹在數學上更加嚴謹,找到一棵至少和早期停止一樣好的樹。早期停止是快速修復啟發式。如果與剪枝一起使用,提前停止可以節省時間。
現實生活中的決策樹
-
選擇要旅行的航班
假設您需要為下次旅行選擇航班。我們怎麼做呢?我們需要先檢查當天是否有航班,如果當天不行,我們將尋找其他日期,但如果它可以,那麼我們下一步可能是考慮航班的持續時間如何。如果我們只想選擇直飛航班,那麼接下來我們會檢視該航班的價格是否在預定義預算中。如果它太貴了,我們會檢視其他一些我們預訂的航班!
-
應用
決策樹在現實生活中有更多的應用。您可以檢查這個以及更多決策樹的應用程式。
在本文中,我試圖解釋決策樹的基礎知識以及它的基本工作原理。您可以在github上找到本文中使用的原始碼。(https://github.com/java-byte/ML-Decision-Tree/blob/master/Decision_tree.ipynb)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習之決策樹詳細講解及程式碼講解機器學習
- 《Machine Learning in Action》—— Taoye給你講講決策樹到底是支什麼“鬼”Mac
- 機器學習:決策樹機器學習
- 機器學習——決策樹模型機器學習模型
- 機器學習之決策樹機器學習
- Python機器學習:決策樹001什麼是決策樹Python機器學習
- 【Python機器學習實戰】決策樹和整合學習(二)——決策樹的實現Python機器學習
- 機器學習 - 決策樹:技術全解與案例實戰機器學習
- 機器學習之決策樹在sklearn中的實現機器學習
- 【機器學習】--決策樹和隨機森林機器學習隨機森林
- 機器學習筆記(四)決策樹機器學習筆記
- 機器學習Sklearn系列:(三)決策樹機器學習
- 機器學習|決策樹-sklearn實現機器學習
- 機器學習十講-第一講機器學習
- 機器學習 Day 9 | 決策樹基礎機器學習
- 機器學習之決策樹演算法機器學習演算法
- 機器學習——決策樹模型:Python實現機器學習模型Python
- 決策樹在機器學習的理論學習與實踐機器學習
- 【機器學習】實現層面 決策樹 並用graphviz視覺化樹機器學習視覺化
- 圖解機器學習 | 決策樹模型詳解圖解機器學習模型
- 通俗講明白機器學習中的學習問題 - svpino機器學習
- 【Python機器學習實戰】決策樹和整合學習(一)Python機器學習
- 機器學習十講-第三講分類機器學習
- 機器學習十講-第二講迴歸機器學習
- 機器學習之 決策樹(Decision Tree)python實現機器學習Python
- 機器學習之使用sklearn構造決策樹模型機器學習模型
- 機器學習經典演算法之決策樹機器學習演算法
- 機器學習之決策樹原理和sklearn實踐機器學習
- 通俗易懂--決策樹演算法、隨機森林演算法講解(演算法+案例)演算法隨機森林
- 【Python機器學習實戰】決策樹與整合學習(三)——整合學習(1)Python機器學習
- 【機器學習】機器學習面試乾貨精講機器學習面試
- 機器學習之決策樹ID3(python實現)機器學習Python
- 《機器學習Python實現_09_02_決策樹_CART》機器學習Python
- 白話講解函式計算中的角色授權函式
- 基於C#的機器學習--我應該接受這份工作嗎-使用決策樹C#機器學習
- 【Python機器學習實戰】決策樹與整合學習(四)——整合學習(2)GBDTPython機器學習
- 決策樹學習總結
- 【《白話機器學習的數學》筆記1】迴歸機器學習筆記