機器學習|決策樹的生成過程是怎樣?(一)

2021-01-10 人人都是產品經理

本文筆者將用具體例子講述決策樹的構建過程,分析:決策樹生成過程中有什麼樣的問題?

一、基本概念

決策樹的定義:

首先,決策樹是一種有監督的分類算法——即給定X,Y值,構建X,Y的映射關係。

不同於線性回歸等是多項式,決策樹是一種樹形的結構,一般由根節點、父節點、子節點、葉子節點構成如圖所示。

父節點和子節點是相對的,子節點可以由父節點分裂而來,而子節點還能作為新的父節點繼續分裂;根節點是沒有父節點,即初始分裂節點,葉子節點是沒有子節點的節點,為終節點。

每一個分支代表著一個判斷,每個葉子節點代表一種結果。

這是在已知各種情況的發生的概率的基礎上,通過構建決策樹來進行分析的一種方式。

預測方式:

根據輸入的樣本X的特徵屬性和決策樹的取值,將輸入的X樣本分配到某一個葉子節點中。將葉子節點中出現最多的Y值,作為輸入的X樣本的預測類別。目的:

最優的模型應該是:葉子節點中只包含一個類別的數據。

但是,事實是不可能將數據分的那麼的純,因此,需要「貪心」策略,力爭在每次分割時都比上一次好一些,分的更純一些。

二、決策樹構建過程

步驟一:將所有的特徵看成一個一個的節點,eg(擁有房產、婚姻狀態、年收入這些特徵,我們可以看成一個一個的節點。)

步驟二:遍歷當前特徵的每一種分割方式,找到最好的分割點eg(婚姻狀態這個特徵,我們可以按照單身、已婚、離婚進行劃分;也可以按照結過婚、沒有結過婚進行劃分);將數據劃分為不同的子節點,eg: N1、 N2….Nm;計算劃分之後所有子節點的「純度」信息

步驟三:使用第二步遍歷所有特徵,選擇出最優的特徵,以及該特徵的最優的劃分方式,得出最終的子節點N1、 N2….Nm

步驟四:對子節點N1、N2….Nm分別繼續執行2-3步,直到每個最終的子節點都足夠「純」。

從上述步驟可以看出,決策生成過程中有兩個重要的問題:

對數據進行分割。選擇分裂特徵。什麼時候停止分裂。

1. 對數據進行分割

根據屬性值的類型進行劃分:

如果值為離散型,且不生成二叉決策樹,則此時一個屬性就是可以一個分支,比如:上圖數據顯示,婚姻狀態為一個屬性,而下面有三個值,單身、已婚、離婚,則這三個值都可以作為一個分類。

如果值為離散型,且生成二叉決策樹,可以按照 「屬於此子集」和「不屬於此子集」分成兩個分支。還是像上面的婚姻狀態,這可以按照已婚,和非婚,形成兩個分支。

如果值為連續性,可以確定一個值作為分裂點,按照大於分割點,小於或等於分割點生成兩個分支,如上圖數據,我可以按照6千元的點劃分成:大於6千元和小於6千元。

2. 找到最好的分裂特徵

決策樹算法是一種「貪心」算法策略——只考慮在當前數據特徵情況下的最好分割方式。

在某種意義上的局部最優解,也就是說我只保證在當分裂的時候,能夠保證數據最純就好。

對於整體的數據集而言:按照所有的特徵屬性進行劃分操作,對所有劃分操作的結果集的「純度」進行比較,選擇「純度」越高的特徵屬性作為當前需要分割的數據集進行分割操作。

決策樹使用信息增益作為選擇特徵的依據,公式如下:

H(D)為:分割前的純度。

H(D|A)為:在給定條件A下的純度,兩者之差為信息增益度。如果信息增益度越大,則H(D|A)越小,則代表結果集的數據越純。

計算純度的度量方式:Gini、信息熵、錯誤率。

一般情況下,選擇信息熵和Gini係數,這三者的值越大,表示越「不純」。

Gini:

信息熵:

錯誤率:

3. 什麼時候停止分裂

一般情況有兩種停止條件:

當每個子節點只有一種類型的時候停止構建。當前節點中記錄數小於某個閾值,同時迭代次數達到給定值時,停止構建過程。此時,使用 max(p(i))作為節點的對應類型。方式一可能會使樹的節點過多,導致過擬合(Overfiting)等問題。所以,比較常用的方式是使用方式二作為停止條件。

三、舉例

數據集如下:

1. 對數據特徵進行分割

擁有房產(是、否)婚姻狀態(單身、已婚、離婚)年收入(80、97.5)

2. 通過信息增益找到分割特徵

首先,計算按照擁有房產這個特徵進行劃分的信息增益,使用錯誤率進行純度的計算:

計算原始數據的純度:

計算按擁有房產劃分後的結果集數據純度H(D|A):

H(D| X=有房產) 的計算方式:

H(D| X=無房產) 的計算方式:

計算信息增益度Gain(房產):

同理,可以計算:婚姻狀態 年收入=97.5

Gain(婚姻) = 0.205

Gain(婚姻) =0.395

按照Gain越大,分割後的純度越高,因此第一個分割屬性為收入,並按照97.5進行劃分。

左子樹的結果集夠純,因此不需要繼續劃分。

接下來,對右子樹年收入大於97.5的數據,繼續選擇特徵進行劃分,且不再考慮收入這個特徵,方法如上,可以得到如圖:

四、常見算法

ID3:

優點:決策樹構建速度快;實現簡單

缺點:

計算依賴於特徵數目較多的特徵,而屬性值最多的屬性並不一定最優 。ID3算法不是遞增算法,ID3算法是單變量決策樹,對於特徵屬性之間的關係不會考慮。抗噪性差。只適合小規模數據集,需要將數據放到內存中。C4.5:

在ID3算法的基礎上,進行算法優化提出的一種算法(C4.5),使用信息增益率來取代ID3中的信息增益。

CART(Classification And Regression Tree):

五、總結

ID3和5算法均只適合在小規模數據集上使用。ID3和5算法都是單變量決策樹當屬性值取值比較多的時候,最好考慮C4.5算法,ID3得出的效果會比較差 決策樹分類一般情況只適合小數據量的情況(數據可以放內存) CART算法是三種算法中最常用的一種決策樹構建算法(sklearn中僅支持CART)。三種算法的區別僅僅只是對於當前樹的評價標準不同而已,ID3使用信息增益、 5使用信息增益率、CART使用基尼係數。CART算法構建的一定是二叉樹,ID3和5構建的不一定是二叉樹。本文由 @SincerityY 原創發布於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議

相關焦點

  • 進化決策樹:當機器學習從生物學中汲取靈感時
    它們度量的是雜質度,當節點的所有樣本屬於同一類別時,這類指標的值為0;當節點的樣本的類別呈均一分布(即,該節點取到某一類別的概率為常數)時,這類指標的值取到最大值。更多相關信息參見本文。但是,此類指標有兩個主要缺點:1.可能取到次優解;2.可能生成過於複雜的決策樹,以至於在訓練數據中泛化效果不好,導致過擬合。
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • Python機器學習sklearn模塊——決策樹
    決策樹可以用來解決分類與回歸問題,是一種非線性模型;一課決策樹一般包含一個根節點、若干個內部節點和若干個葉節點;生產決策樹最關鍵的是如何選擇最優劃分屬性,我們希望分支節點所包含的樣本近可能的屬於同一類別,即節點的「純度」越來越高;而評估樣本集合純度的常用指標有信息增益、增益率和基尼指數;決策樹容易出現過擬合狀況,因為它們可以通過精確的描述每個訓練樣本的 特徵而構建出複雜的決策樹
  • 機器學習實戰:決策樹原來這麼簡單
    上一篇:機器學習實戰-監督學習、無監督學習上一篇的文章中,我們主要對監督學習與無監督學習進行了講解,其實還有一個半監督學習,這個可以自行百度,也是比較簡單。這一篇中,我們來講解監督學習中經常用到的算法,決策樹。
  • 樹模型(一)——樹的構造
    整個過程會依賴於人的經驗,而在機器學習的決策樹進行決策的過程中,會把之前的經驗進行量化處理,以最終目標為導向(目標函數),利用一定的規則(熵、基尼係數以及均方誤差等)篩選特徵,構建一組簡單而有效的決策規則。機器學習中把構建的樹稱為決策樹(Decision Tree)。單棵樹是由結點和有向邊組成,結點分為根結點、分裂結點和葉子結點。
  • 使用Scikit-Learn了解決策樹分類
    決策樹是用於分類和回歸任務的最基本的機器學習工具之一。在這篇文章中,我將介紹-以基尼雜質為標準的決策樹算法拆分原則。決策樹在現實生活數據分類中的應用。決策樹決策樹(以下簡稱DT)算法的思想是學習一組if/else問題來進行決策。決策樹可以組合數值數據和分類數據。一些用於決策樹的術語如下圖所示在這裡,我們看到了如何根據節點在DT中的位置劃分節點。
  • 機器學習之決策樹在sklearn中的實現
    小夥伴們大家好~o( ̄▽ ̄)ブ,首先聲明一下,我的開發環境是Jupyter lab,所用的庫和版本大家參考:Python 3.7.1(你的版本至少要3.4以上Scikit-learn 0.20.0 (你的版本至少要0.20Graphviz 0.8.4 (沒有畫不出決策樹哦,安裝代碼conda install python-graphviz
  • 決策樹,回歸樹,自動分類,三種自動化學習方法
    關於自動化機器學習的研究一直很火爆,隨著人工智慧的發展,越來越多的人對它感興趣,我也是希望對機器學習感興趣的人關注我的專欄,探索機器學習相關知識。自動機器學習,將統計學、機器學習、深度學習結合到一起,從而可以讓神經網絡能夠應用於各種不同數據類型。
  • 關於「樹」的算法:現實生活中的決策樹
    全文共2874字,預計學習時長8分鐘圖源:unsplash就像樹木是人類生活的重要組成部分一樣,基於樹的算法也是機器學習的重要組成部分樹的結構給了我們開發算法的靈感,並再將其反饋到機器,讓它們學習我們希望它們學習的東西,以解決現實生活中的問題。這些基於樹的學習算法被認為是最好和最常用的監督學習方法之一:決策樹、隨機森林、梯度提升等方法在各種數據科學問題中得到了廣泛應用。對於每一個機器學習的初學者來說,學習這些算法並將其用於建模非常重要。
  • 機器學習-決策樹(ID3算法)
    決策樹(decision tree)是一種基本的分類與回歸方法。這裡討論用於分類的決策樹。
  • 一文讀懂可解釋機器學習簡史,讓你的模型再也不是「Black Box」
    儘管這個領域才剛剛起步,但是它在回歸建模和基於規則的機器學習方面的相關工作卻始於20世紀60年代。最近,arXiv上的一篇論文簡要介紹了解釋機器學習(IML)領域的歷史,給出了最先進的可解釋方法的概述,並討論了遇到的挑戰。 當機器學習模型用在產品、決策或者研究過程中的時候,「可解釋性」通常是一個決定因素。
  • 拓撲數據分析與機器學習的相互促進
    對拓撲數據分析(TDA)不熟悉的人,經常會問及一些類似的問題:「機器學習和TDA兩者之間的區別?」,這種問題的確難以回答,部分原因在於你眼中的機器學習(ML)是什麼。下面是維基百科關於機器學習的說明:機器學習研究算法學習和構造,能從數據中進行學習並做出預測。這種算法通過從輸入實例中建立模型,目的是根據數據做出預測或決策,而不是嚴格地遵循靜態程序指令。
  • 以鳶尾花數據集為例,用Python對決策樹進行分類
    同時決策樹也存在劣勢,容易出現過度擬合就是其中之一。本教程主要介紹了用於分類的決策樹,也稱為分類樹。此外,本教程還將涵蓋:· 分類樹的解剖結構(樹的深度、根節點、決策節點、葉節點/終端節點)。分類和回歸樹(CART)術語最早由利奧·布雷曼提出,用於指代可以用於分類或回歸預測建模問題的決策樹算法。本篇文章主要涵蓋分類樹。分類樹本質上,分類樹就是設計一系列問題來進行分類。下圖是在鳶尾花數據集(花種)上訓練的分類樹。
  • 數據科學家應該知道的頂級機器學習算法
    因為它迫使您考慮輸入數據的角色和模型準備過程。另外,選擇最適合您的問題的方法以獲得最佳結果。讓我們看一下機器學習算法中的三種不同的學習風格:監督學習基本上,在此監督式機器學習中,輸入數據稱為訓練數據,並且一次具有已知標籤或結果,例如垃圾郵件/非垃圾郵件或股票價格。在此,通過訓練過程準備了模型。另外,在此需要做出預測。並在這些預測錯誤時進行糾正。
  • 從決策樹到隨機森林:樹型算法的原理與實現
    每種方法都包括生成多種樹,這些樹被聯合起來,生成一個單一的一致性預測結果,並且經常帶來預測精度的顯著提升。決策樹決策樹是一種監督學習算法。它適用於類別和連續輸入(特徵)和輸出(預測)變量。基於樹的方法把特徵空間劃分成一系列矩形,然後給每一個矩形安置一個簡單的模型(像一個常數)。從概念上來講,它們是簡單且有效的。首先我們通過一個例子來理解決策樹。
  • 深度神經決策樹:深度神經網絡和樹模型結合的新模型
    ——深度神經決策樹(Deep Neural Decision Trees, DNDT)。深度神經網絡在計算機視覺、語音識別和語言模型等很多領域取得了成功,但作為缺乏可解釋性的黑箱模型,限制了它在模型必須求證因果領域的應用,在這些領域中我們需要明確決策是如何產生的以便評測驗證整個決策過程。除此之外,在類似於商業智能等領域,知曉每一個因素是如何影響最終決策比決策本身有時候更為重要。
  • 三張圖讀懂機器學習:基本概念、五大流派與九種常見算法
    機器學習和人工智慧的關係 機器學習是一種重在尋找數據中的模式並使用這些模式來做出預測的研究和算法的門類。機器學習是人工智慧領域的一部分,並且和知識發現與數據挖掘有所交集。更多解讀可參閱《一文讀懂機器學習、數據科學、人工智慧、深度學習和統計學之間的區別》。
  • 95後哈佛小哥撰寫從零開始的機器學習入門必備,書籍資源已開放
    撰寫目的是為讀者提供獨立構建一些基本的機器學習算法的實踐指導,如果用工具箱類比的話,就是教會讀者具體使用一把螺絲刀、一盒捲尺。書中的每一章都對應一種機器學習方法。作者 Danny Friedman 介紹說,學習一種方法的最佳方式就是從零開始(無論是從理論上還是代碼上),因此本書的宗旨也是提供這些推導過程。
  • 【算法地圖】一張地圖帶你玩轉機器學習
    強化學習是機器學習中的一個特殊分支,用於決策、控制問題。,它用一組嵌套的規則進行預測,在樹的每個決策節點處,根據判斷結果進入一個分支,反覆執行這種操作直到到達葉子節點,得到決策結果。常用的決策樹有ID3,C4.5,分類與回歸樹(CART)等。 分類樹對應的映射函數是多維空間的分段線性劃分,即用平行於各個坐標軸的超平面對空間進行切分;回歸樹的映射函數是一個分段常數函數。決策樹是分段線性函數但不是線性函數,它具有非線性建模的能力。
  • 機器學習算法一覽(附python和R代碼)
    屬於這一類算法的有馬爾可夫決策過程。 理解決策樹原理的最好的辦法就是玩Jezzball遊戲。這是微軟的一款經典遊戲(見下圖)。這個遊戲的最終任務是在一個有移動牆壁的房間裡,通過建造牆壁來儘可能地將房間分成儘量大的,沒有小球的空間。