機(jī)器學(xué)習(xí)之決策樹算法
決策樹是歸納學(xué)習(xí)中的一種展示決策規(guī)則和分類結(jié)果的模型算法。在本文中,作者分享了決策樹的原理和構(gòu)造步驟,以及日常應(yīng)用場景,供各位參考。
一、什么叫決策樹?
決策樹(Decision Tree),又稱判斷樹,它是一種以樹形數(shù)據(jù)結(jié)構(gòu)來展示決策規(guī)則和分類結(jié)果的模型,作為一種歸納學(xué)習(xí)算法,其重點是將看似無序、雜亂的已知實例,通過某種技術(shù)手段將它們轉(zhuǎn)化成可以預(yù)測未知實例的樹狀模型,每一條從根結(jié)點(對最終分類結(jié)果貢獻(xiàn)最大的屬性)到葉子結(jié)點(最終分類結(jié)果)的路徑都代表一條決策的規(guī)則。
二、決策樹的原理是什么?
決策樹(Decision Tree),是一種樹狀結(jié)構(gòu),上面的節(jié)點代表算法的某一特征,節(jié)點上可能存在很多的分支,每一個分支代表的是這個特征的不同種類(規(guī)則),最后葉子節(jié)點代表最終的決策結(jié)果。
決策樹的構(gòu)造只會影響到算法的復(fù)雜度和計算的時間,不會影響決策的結(jié)果。
為了更直觀地理解決策樹,我們現(xiàn)在來構(gòu)建一個簡單的郵件分類系統(tǒng),如圖:
- 首先檢測發(fā)送郵件域名地址;
- 如果地址為com,則放置于“無聊時需要閱讀的郵件”分類;
- 如果不是這個地址,那么再次檢測;
- 檢查郵件是否有單詞“曲棍球”;
- 包含單詞“曲棍球”,則放置于“需要及時處理的朋友郵件”分類;
- 不包含單詞“曲棍球”,則放置于“無需閱讀的垃圾郵件”分類。
現(xiàn)在,我們來總結(jié)一下決策樹的構(gòu)成:
- 根節(jié)點。第一個需要判斷的條件,往往也是最具有特征的那個條件,我們稱為根節(jié)點。
- 中間節(jié)點。那個矩形總是要往下分,并不是最終的結(jié)果,它叫做中間節(jié)點(或內(nèi)部節(jié)點)。
- 邊。那些帶有文字的線段(一般使用有箭頭的有向線段),線的一端連的是中間節(jié)點、另一端連的是另一個中間節(jié)點或葉節(jié)點,然后線段上還有文字,它叫做邊。
- 葉節(jié)點。那個圓角矩形,它就已經(jīng)是最后的結(jié)果了,不再往下了,這一類東西呢,在決策樹里叫做葉節(jié)點。
三、決策樹的構(gòu)造步驟
- 數(shù)據(jù)準(zhǔn)備:首先對數(shù)據(jù)進(jìn)行預(yù)處理,包括缺失值填充、異常值處理以及特征編碼等操作。
- 特征選擇:在每個內(nèi)部節(jié)點上,計算所有特征的基尼不純度(CART)或信息增益(ID3),選取具有最小不純度/最大增益的特征作為劃分標(biāo)準(zhǔn)。
- 生成分支:根據(jù)選定特征的最佳分割點,將數(shù)據(jù)集劃分為子集,并為該節(jié)點創(chuàng)建分支。
- 遞歸生長:對每個子集重復(fù)上述過程,直至滿足停止條件,如達(dá)到預(yù)設(shè)的最大深度、葉子節(jié)點包含樣本數(shù)量少于閾值或者信息增益不再顯著提高等。
- 剪枝優(yōu)化:為了防止過擬合,可以通過后剪枝或預(yù)剪枝方法來簡化決策樹結(jié)構(gòu),提升模型泛化能力。
四、決策樹的分類有哪些?
1. CART(Classification and Regression Tree)
Breiman.L.I等人在1984年提出了CART算法,即分類回歸樹算法。CART算法用基尼指數(shù)(Gini Index)代替了信息熵,用二叉樹作為模型結(jié)構(gòu),所以不是直接通過屬性值進(jìn)行數(shù)據(jù)劃分,該算法要在所有屬性中找出最佳的二元劃分。CART算法通過遞歸操作不斷地對決策屬性進(jìn)行劃分,同時利用驗證數(shù)據(jù)對樹模型進(jìn)行優(yōu)化。
處理問題類型:分類或回歸
結(jié)構(gòu):二叉樹結(jié)構(gòu)
計算指標(biāo):分類問題是基尼系數(shù),回歸問題的指標(biāo)是偏差
特點:可以處理缺失值,連續(xù)值,可以剪枝,避免過擬合。即可以處理分類問題,也可以處理回歸問題。
CART中用于選擇變量的不純性度量是Gini指數(shù),總體內(nèi)包含的類別越雜亂,GINI指數(shù)就越大(跟熵的概念很相似)。
基尼系數(shù)公式如下:
舉例:
數(shù)據(jù)集D的純度可用基尼值來度量:
屬性a的基尼指數(shù)定義為加權(quán)基尼指數(shù):
如何理解上面的公式呢?我們簡單舉個例子:
樣例數(shù)據(jù)
簡單解釋下為啥要這樣算。
首先工資有兩個取值,分別是0和1。當(dāng)工資=1時,有3個樣本。
所以:
同時,在這三個樣本中,工作都是好。
所以:
就有了加號左邊的式子:
同理,當(dāng)工資=0時,有5個樣本,在這五個樣本中,工作有3個是不好,2個是好。
就有了加號右邊的式子:
同理,可得壓力的基尼指數(shù)如下:
平臺的基尼指數(shù)如下:
注意啦,在計算時,工資和平臺的計算方式有明顯的不同。因為工資只有兩個取值0和1,而平臺有三個取值0,1,2。所以在計算時,需要將平臺的每一個取值都單獨進(jìn)行計算。比如:當(dāng)平臺=0時,將數(shù)據(jù)集分為兩部分,第一部分是平臺等于0,第二部分是平臺大于0。
根據(jù)基尼指數(shù)最小準(zhǔn)則,我們優(yōu)先選擇工資或者平臺=0作為D的第一特征。
我們選擇工資作為第一特征,那么當(dāng)工資=1時,工作=好,無需繼續(xù)劃分。
當(dāng)工資=0時,需要繼續(xù)劃分。當(dāng)工資=0時,繼續(xù)計算基尼指數(shù):
當(dāng)平臺=0時,基尼指數(shù)=0,可以優(yōu)先選擇。
同時,當(dāng)平臺=0時,工作都是好,無需繼續(xù)劃分,當(dāng)平臺=1,2時,工作都是不好,也無需繼續(xù)劃分。直接把1,2放到樹的一個結(jié)點就可以。最終的決策樹如下:
2. ID3(Iterative Dichotomiser 3)
ID3采用香濃的信息熵來計算特征的區(qū)分度。選擇熵減少程度最大的特征來劃分?jǐn)?shù)據(jù),也就是“最大信息熵增益”原則。它的核心思想是以信息增益作為分裂屬性選取的依據(jù)。
處理問題類型:多分類
結(jié)構(gòu):多叉樹結(jié)構(gòu)
計算指標(biāo):信息增益
特點:簡單易懂,無法剪枝、容易過擬合,無法處理連續(xù)值
存在的缺陷:該算法未考慮如何處理連續(xù)屬性、屬性缺失以及噪聲等問題。
下面來介紹兩個與此有關(guān)的概念:
信息熵是一種信息的度量方式,表示信息的混亂程度,也就是說:信息越有序,信息熵越低。舉個列子:火柴有序放在火柴盒里,熵值很低,相反,熵值很高。它的公式如下:
信息增益: 在劃分?jǐn)?shù)據(jù)集前后信息發(fā)生的變化稱為信息增益,信息增益越大,確定性越強(qiáng)。
我們來看看代表之一 —— ID3算法。
在劃分?jǐn)?shù)據(jù)集之前之后信息發(fā)生的變化稱為信息增益,知道如何計算信息增益,我們就可以計算每個特征值劃分?jǐn)?shù)據(jù)集獲得的信息增益,獲得信息增益最高的特征就是最好的選擇。
這里又引入了另一個概念——熵。這里先不展開說了,我們記住他的概念:一個事情它的隨機(jī)性越大就越難預(yù)測。
具體來說這個概率p越小,最后熵就越大(也就是信息量越大),如果極端情況一件事情概率為1,它的熵就變成0了。
比如,你如果能預(yù)測一個彩票的中獎號碼就發(fā)達(dá)了。但是,如果你能預(yù)測明天太陽從東邊升起來則毫無價值。這樣衡量一個信息價值的事,就可以由熵來表示。
聰明的你或許已經(jīng)發(fā)現(xiàn)了,決策樹算法其實就是為了找到能夠迅速使熵變小,直至熵為0的那條路徑,這就是信息增益的那條路。我們將對每個特征劃分?jǐn)?shù)據(jù)集的結(jié)果計算一次信息熵,然后判斷按照哪個特征劃分?jǐn)?shù)據(jù)集是最好的劃分方式。
舉個容易理解的例子:
解決問題:預(yù)設(shè)4個自變量:天氣、溫度、濕度、風(fēng)速,預(yù)測學(xué)校會不會舉辦運動會?
步驟一:假設(shè)我們記錄了某個學(xué)校14屆校運會按時舉行或取消的記錄,舉行或者取消的概率分別為:9/14、5/14,那么它的信息熵,這里也叫先驗熵,為:
步驟二:我們同時記錄了當(dāng)天的天氣情況,發(fā)現(xiàn)天氣好壞和校運會舉行還是取消有關(guān)。14天中,5次晴天(2次舉行、3次取消)、5次雨天(3次舉行、2次取消)、4次陰天(4次舉行)。相對應(yīng)的晴天、陰天、雨天的后驗熵。
步驟三:我們計算知道天氣情況后的條件熵。
步驟四:我們計算在有沒有天氣情況這個條件前后的信息增益就是。
步驟五:我們依次計算在有沒有溫度、濕度、風(fēng)速條件前后的信息增益。
步驟六:根據(jù)設(shè)置的閾值,若信息增益的值大于設(shè)置的閾值,選取為我們的特征值,也就是我們上圖中的矩形節(jié)點。
步驟七:生成決策樹。選取信息增益最大的自變量作為根節(jié)點。其他的特征值依次選取為內(nèi)部節(jié)點。
比如上面的例子是這樣的過程:
經(jīng)過如上步驟,我們得到?jīng)Q策樹??梢钥吹?,最終們只選取了3個特征值作為內(nèi)部節(jié)點。
3. C4.5
J.R.Quinlan針對ID3算法的不足設(shè)計了C4.5算法,引入信息增益率的概念。它克服了ID3算法無法處理屬性缺失和連續(xù)屬性的問題,并且引入了優(yōu)化決策樹的剪枝方法,使算法更高效,適用性更強(qiáng)。
處理問題類型:多分類
結(jié)構(gòu):多叉樹結(jié)構(gòu)
計算指標(biāo):信息增益
特點:可以處理缺失值,連續(xù)值,可以剪枝,避免過擬合
同樣介紹一下信息增益率:在決策樹分類問題中,即就是決策樹在進(jìn)行屬性選擇劃分前和劃分后的信息差值。
五、決策樹的優(yōu)勢與局限是什么?
優(yōu)勢:
- 易于理解和解釋,生成的決策規(guī)則可以直接轉(zhuǎn)化為業(yè)務(wù)策略。
- 可處理分類問題及回歸問題,分類問題可處理多分類問題。
局限:
- 容易過擬合。決策樹傾向于生成復(fù)雜的模型,容易過擬合訓(xùn)練數(shù)據(jù),導(dǎo)致模型在新數(shù)據(jù)上的性能下降,缺乏泛化能力。為了解決這個問題,可以通過剪枝、限制樹的最大深度或引入正則化等技術(shù)來控制模型復(fù)雜度。
- 對噪聲及不均衡數(shù)據(jù)非常敏感。噪聲數(shù)據(jù)可能導(dǎo)致錯誤的分割點,從而影響模型的準(zhǔn)確性。在不均衡數(shù)據(jù)集中,如果某個類別的樣本數(shù)目遠(yuǎn)遠(yuǎn)超過其他類別,則決策樹往往傾向于選擇該類別作為劃分點,造成模型偏向該類別。
- 對輸入數(shù)據(jù)的微小變化敏感,可能導(dǎo)致完全不同的決策樹生成。
- 決策樹計算復(fù)雜。決策樹的構(gòu)建過程中,需要對每個特征進(jìn)行多次劃分,并計算信息增益、基尼系數(shù)等指標(biāo)。這導(dǎo)致了決策樹算法的計算復(fù)雜度較高,特別是在處理大規(guī)模數(shù)據(jù)集時。為了降低計算負(fù)擔(dān),可以采用一些優(yōu)化技術(shù),如特征選擇和剪枝。
六、 決策樹的日常應(yīng)用場景有哪些?
1. 信用評估
銀行或金融機(jī)構(gòu)在進(jìn)行個人或企業(yè)信貸審批時,可以使用決策樹模型根據(jù)申請人的特征(如年齡、收入水平、職業(yè)、負(fù)債情況等)來預(yù)測其違約風(fēng)險,并據(jù)此制定貸款策略。
2. 市場營銷
在市場細(xì)分中,公司可通過決策樹分析客戶的購買行為、消費習(xí)慣、地理位置等信息,以識別潛在的目標(biāo)群體并定制營銷策略。
3. 醫(yī)療診斷
構(gòu)建疾病診斷模型,醫(yī)生可以根據(jù)病人的癥狀、體檢結(jié)果等因素快速得出可能的診斷結(jié)論,如心臟病發(fā)作的風(fēng)險評估、腫瘤分類等。
4. 圖像識別
雖然深度學(xué)習(xí)在圖像識別方面表現(xiàn)優(yōu)異,但在某些簡單場景下,基于像素強(qiáng)度值或其他提取出的圖像特征構(gòu)建的決策樹或隨機(jī)森林也能實現(xiàn)有效分類,比如醫(yī)學(xué)影像中的結(jié)節(jié)檢測。
5. 推薦系統(tǒng)
用于基于內(nèi)容的推薦,根據(jù)用戶的屬性和歷史行為數(shù)據(jù)建立模型,決定向用戶推薦何種類型的商品或服務(wù)。
參考:
七大機(jī)器學(xué)習(xí)常用算法精講:決策樹與隨機(jī)森林(三)-人人都是產(chǎn)品經(jīng)理-火粒產(chǎn)品
機(jī)器學(xué)習(xí)必修:決策樹算法(Decision Tree)-人人都是產(chǎn)品經(jīng)理-CARRIE
AI產(chǎn)品經(jīng)理必懂算法:決策樹-人人都是產(chǎn)品經(jīng)理-燕然未勒
作者:厚謙,公眾號:小王子與月季
本文由@厚謙 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!