<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【分享送書(shū)】暢快!5000字通俗講透決策樹(shù)基本原理

          共 5509字,需瀏覽 12分鐘

           ·

          2021-03-30 12:23


          導(dǎo)讀

          在當(dāng)今這個(gè)人工智能時(shí)代,似乎人人都或多或少聽(tīng)過(guò)機(jī)器學(xué)習(xí)算法;而在眾多機(jī)器學(xué)習(xí)算法中,決策樹(shù)則無(wú)疑是最重要的經(jīng)典算法之一。這里,稱(chēng)其最重要的經(jīng)典算法是因?yàn)橐源藶榛A(chǔ),誕生了一大批集成算法,包括Random Forest、Adaboost、GBDT、xgboost,lightgbm,其中xgboost和lightgbm更是當(dāng)先炙手可熱的大賽算法;而又稱(chēng)其為之一,則是出于嚴(yán)謹(jǐn)和低調(diào)。實(shí)際上,決策樹(shù)算法也是個(gè)人最喜愛(ài)的算法之一(另一個(gè)是Naive Bayes),不僅出于其算法思想直觀(guān)易懂(相較于SVM而言,簡(jiǎn)直好太多),更在于其較好的效果和巧妙的設(shè)計(jì)。似乎每個(gè)算法從業(yè)人員都會(huì)開(kāi)一講決策樹(shù)專(zhuān)題,那么今天本文也來(lái)達(dá)成這一目標(biāo)。



          本文著眼講述經(jīng)典的3類(lèi)決策樹(shù)算法原理,行文框架如下:

          • 決策樹(shù)分類(lèi)的基本思想:switch-case

          • 從ID3到C4.5,如何作出最優(yōu)的決策?

            • 信息熵增益

            • 信息熵增益比

          • CART樹(shù),既可分類(lèi)又能回歸

            • 從信息熵到gini指數(shù)

            • 從多叉樹(shù)到二叉樹(shù)

            • 從分類(lèi)樹(shù)到回歸樹(shù)


          01 決策樹(shù)分類(lèi)的基本思想:switch-case

          決策樹(shù)算法是機(jī)器學(xué)習(xí)中的一種經(jīng)典算法,更是很多集成算法的基礎(chǔ)。雖說(shuō)是機(jī)器學(xué)習(xí),但決策樹(shù)的基本思想非常符合程序員思維:if-else或者switch-case,即如果滿(mǎn)足什么條件則怎么怎么樣,否則就另外怎么樣。所以,決策樹(shù)學(xué)習(xí)的過(guò)程就是逐步?jīng)Q策的過(guò)程,而決策過(guò)程本身則可以繪制成一棵樹(shù),當(dāng)然這里的樹(shù)是指數(shù)據(jù)結(jié)構(gòu)與算法中的樹(shù)。


          決策樹(shù)的基本思想很簡(jiǎn)單,那么執(zhí)行決策樹(shù)的訓(xùn)練過(guò)程其實(shí)無(wú)非就是以下幾步:

          • 拿什么做決策——最優(yōu)決策特征選取

          • 什么時(shí)候停止——決策樹(shù)分裂的終止條件

          • 決策結(jié)果如何——最終葉子節(jié)點(diǎn)的取值

          本文圍繞決策樹(shù)的這3個(gè)關(guān)鍵環(huán)節(jié)展開(kāi)介紹。


          02 從ID3到C4.5,如何作出最優(yōu)的決策

          首先進(jìn)入大眾視野的決策樹(shù)是ID3(Iterative Dichotomiser 3,即第三代迭代二叉樹(shù)),這里稱(chēng)之為第三代,但似乎不存在所謂的第一代或第二代的前置版本;另外,雖然叫二叉樹(shù),但I(xiàn)D3算法生成的決策樹(shù)確是一個(gè)十足的多叉樹(shù)。那么,ID3算法是基本原理是怎樣的呢?


          1)經(jīng)典ID3算法的基本原理

          如前所述,構(gòu)建一顆決策樹(shù)首先要明確如何做出最優(yōu)決策,具體到機(jī)器學(xué)習(xí)場(chǎng)景,那么就是從眾多潛在的特征中選擇一個(gè)最優(yōu)的特征進(jìn)行分裂。所以,這里的問(wèn)題進(jìn)一步等價(jià)于如何定義“最優(yōu)”的特征。


          在ID3算法中,引入了信息熵原理來(lái)反映特征重要性。這里,信息熵既是一個(gè)通信學(xué)上的概念,而其中的熵則要追溯到物理學(xué)。來(lái)源于何處并不重要,關(guān)鍵的是信息熵可以用于表征一個(gè)事件的不確定程度。這里不確定程度用通信學(xué)的角度講,就是蘊(yùn)含的信息量。當(dāng)然,為了使得機(jī)器學(xué)習(xí)的結(jié)果盡可能準(zhǔn)確,我們當(dāng)然是希望能盡可能的通過(guò)一個(gè)個(gè)的特征消除這種不確定性,或者說(shuō)不希望它有太多的信息量。


          如何理解這里的信息量呢?更具體說(shuō),如何通過(guò)信息熵來(lái)反應(yīng)信息量?舉個(gè)例子:比如看一場(chǎng)足球賽事,如果對(duì)陣雙方實(shí)力懸殊,那么我們一般稱(chēng)之為沒(méi)什么看點(diǎn)——毫無(wú)信息量;而如果雙方實(shí)力在伯仲之間,則比賽結(jié)果則會(huì)很有看點(diǎn)——信息量豐富!這一事件可抽象為如下數(shù)學(xué)描述:球隊(duì)A和球隊(duì)B,各自勝率分別為pA和pB,顯然pA+pB=1(假設(shè)該賽事不接受平局結(jié)果,必須分出勝負(fù)),球隊(duì)實(shí)力懸殊意味著pA>>pB或pA<<pB;實(shí)力伯仲之間意味著pA≈pB,進(jìn)而該事件的信息熵可用如下公式計(jì)算:

          將上述公式取值隨pA在(0, 1)之間變化的取值結(jié)果繪制可視化曲線(xiàn)如下:


          可見(jiàn),當(dāng)pA接近0或接近1時(shí),熵的取值也接近為0,意味著信息量較小,結(jié)論是幾乎確定的;而當(dāng)pA接近0.5時(shí),pB自然也在0.5左右,意味著二者旗鼓相當(dāng),此時(shí)熵的取值最大,意味著信息量最大,結(jié)論幾乎完全不確定。上述結(jié)論說(shuō)明,用信息熵可以刻畫(huà)一個(gè)事件的信息量大小。進(jìn)一步地,對(duì)應(yīng)到一個(gè)機(jī)器學(xué)習(xí)問(wèn)題,我們的目標(biāo)就是通過(guò)一個(gè)個(gè)特征將全量樣本逐步分裂為多簇小量樣本(原全量樣本的子集),同時(shí)希望這一個(gè)個(gè)的樣本子集內(nèi)部盡可能的具有小信息量,以期預(yù)測(cè)結(jié)果更具確定性。所以,為達(dá)成這一目標(biāo),自然是希望優(yōu)先選取那些能盡可能多地降低這一信息量的特征參與分裂,以期又快又好的達(dá)成訓(xùn)練目標(biāo)。

          將上述過(guò)程進(jìn)行數(shù)學(xué)描述,即為:設(shè)選取特征F具有K個(gè)取值(特征F為離散型特征),則選取特征F參與決策樹(shù)訓(xùn)練意味著將原來(lái)的樣本集分裂為K個(gè)子集,在每個(gè)子集內(nèi)部獨(dú)立計(jì)算信息熵,進(jìn)而以特征F分裂后的條件信息熵為:


          其中||Fi||為特征F第i個(gè)取值的個(gè)數(shù),而||F||則為特征F的總數(shù)(即樣本集總數(shù))。進(jìn)而,選取特征F訓(xùn)練帶來(lái)的信息熵增益(即,帶來(lái)的不確定性降低)可計(jì)算為:


          進(jìn)而,通過(guò)遍歷各特征逐一計(jì)算各自的信息熵增益,增益最大的特征就是當(dāng)前情況下應(yīng)當(dāng)首選的特征。由于在每一輪對(duì)選定的特征都進(jìn)行全分裂,所以對(duì)于每個(gè)分裂后的樣本子集中,該特征列即不再存在。

          按照上述流程,即可遞歸完成一顆決策樹(shù)的訓(xùn)練過(guò)程。那么既然是一個(gè)遞歸過(guò)程,就自然存在遞歸的終止條件,也就是決策樹(shù)完成訓(xùn)練終止分裂的條件。按照ID3算法的設(shè)計(jì),當(dāng)一顆決策樹(shù)滿(mǎn)足下列條件之一時(shí),即終止分裂:
          • 所有特征全部用完;

          • 分裂后的樣本子集是純的,即相應(yīng)分支上的信息熵為0;

          • 達(dá)到預(yù)定的決策樹(shù)分裂深度,即最大深度;

          • 分裂后的樣本子集數(shù)量少于預(yù)定葉子節(jié)點(diǎn)樣本數(shù)時(shí);

          • 分裂帶來(lái)的信息熵增益小于指定增益閾值時(shí)


          經(jīng)過(guò)上述分裂過(guò)程,預(yù)期將得到形如下圖的一棵多叉樹(shù),其中第一輪選取特征F參與訓(xùn)練,得到K個(gè)子樹(shù),最終分裂終止后得到N個(gè)葉子節(jié)點(diǎn)。值得指出的是,各葉子節(jié)點(diǎn)經(jīng)歷的分裂次數(shù)可能是不同的,即有的分支分裂次數(shù)多些,有的則可能少一些。

          最后,對(duì)于分裂得到的每個(gè)葉子節(jié)點(diǎn),通過(guò)統(tǒng)計(jì)該葉子節(jié)點(diǎn)中標(biāo)簽占比最多的取值即為最終預(yù)測(cè)結(jié)果,若存在相同則隨機(jī)選取其中一個(gè)。

          以上就是經(jīng)典的ID3算法基本原理,算法思想簡(jiǎn)單直觀(guān),訓(xùn)練效果也不錯(cuò),但主要存在以下兩大局限性:
          • 僅支持離散特征,如果是特征連續(xù)則首先需要離散化處理;

          • 采用信息熵增益選擇最優(yōu)特征參與訓(xùn)練,在同等條件下,取值種類(lèi)多的特征比取值種類(lèi)少的特征更占優(yōu)勢(shì)。

          針對(duì)第二個(gè)缺陷,C4.5決策算法給出了解決方案。


          2)C4.5決策樹(shù)算法基本原理

          ID3算法中,在尋找最優(yōu)特征參與分裂時(shí),會(huì)逐一遍歷選取能帶來(lái)最大信息熵增益的特征,而不考慮該特征的自身情況。這里,特征自身情況是指該特征可能的取值數(shù)目和分布情況。所以在C4.5版本決策樹(shù)中,最大的改進(jìn)則在于將分裂準(zhǔn)則從信息熵增益變?yōu)樾畔㈧卦鲆姹龋葱畔㈧卦鲆媾c特征自身信息熵的比值。具體的數(shù)據(jù)表述即為:


          其中,分母部分即為選取特征F自身的信息熵。雖然僅此一處細(xì)節(jié)改動(dòng),但卻有效抑制了分裂過(guò)程中對(duì)取值數(shù)目較多特征的偏好,一定程度上保證了決策樹(shù)訓(xùn)練過(guò)程的高效。


          另外,C4.5決策樹(shù)還有其他比較重要的優(yōu)化設(shè)計(jì),例如支持特征缺失值的處理以及增加了剪枝策略等,此處不做展開(kāi)。


          通過(guò)以上,我們介紹了決策樹(shù)的兩個(gè)經(jīng)典版本:ID3和C4.5,其中前者作為決策樹(shù)首個(gè)進(jìn)入大眾視野的版本,引入了信息熵原理參與特征的選擇和分裂,明確了決策樹(shù)終止分裂的條件;而C4.5則在ID3的基礎(chǔ)上,優(yōu)化了信息熵增益分裂準(zhǔn)則偏好選擇取值較多特征的弊端,改用信息熵增益比的準(zhǔn)則進(jìn)行分裂。但同時(shí),C4.5版本決策樹(shù)仍然存在以下弊端:

          • 仍然僅支持離散特征的訓(xùn)練

          • 生成的決策樹(shù)是一個(gè)多叉樹(shù),從計(jì)算機(jī)的視角來(lái)看不如二叉樹(shù)簡(jiǎn)單;

          • 無(wú)論是信息熵增益還是增益比,都涉及大量的對(duì)數(shù)計(jì)算,計(jì)算效率低下;

          • 仍然僅可用于分類(lèi)任務(wù),對(duì)于回歸預(yù)測(cè)無(wú)能為力。


          對(duì)此,一個(gè)更高級(jí)版本的決策樹(shù)算法應(yīng)運(yùn)而生,CART樹(shù),也是當(dāng)前工業(yè)界一直沿用的決策樹(shù)算法。


          03 CART樹(shù),既可分類(lèi)又能回歸的全能選手
          CART(Classification And Regression Tree,顧名思義,分類(lèi)和回歸樹(shù))決策樹(shù)的提出正是為了解決ID3和C4.5版本中存在的局限性,包括不支持連續(xù)型特征、對(duì)數(shù)計(jì)算效率低、多叉樹(shù)更為復(fù)雜以及不能用于回歸預(yù)測(cè)任務(wù)。CART樹(shù)給出了全部的解決方案:
          • 特征選取準(zhǔn)則由信息熵改用gini指數(shù),并由多叉改為二叉,同時(shí)避免了對(duì)數(shù)運(yùn)算;

          • 增加MSE準(zhǔn)則,用于回歸訓(xùn)練任務(wù)


          首先介紹第一個(gè)大的改進(jìn):信息熵到gini指數(shù)
          取經(jīng)于通信學(xué)原理,ID3和C4.5均采用信息熵來(lái)評(píng)判特征的優(yōu)劣。再看單個(gè)事件信息熵的計(jì)算公式:


          容易理解,該信息熵由事件的各種可能取值對(duì)應(yīng)熵的加和得到,其中每種取值的熵為其概率與概率對(duì)數(shù)值的乘積得到(由于概率<=1,其對(duì)數(shù)值<=0),同時(shí)為了保證信息熵大于0更易于理解,且信息熵計(jì)算結(jié)果越大表征更多的信息量,對(duì)最終結(jié)果取負(fù)數(shù)作為最終的信息熵增益。那么為了避免對(duì)數(shù)運(yùn)算而又不影響計(jì)算結(jié)果的單調(diào)性,將log(p)直接用p替代顯然是可行的方案。此時(shí)計(jì)算過(guò)程即為該事件各種取值概率平方的加和,且加和計(jì)算結(jié)果仍然是取值越大、信息量越大。但此時(shí)存在的一個(gè)問(wèn)題是最終結(jié)果是負(fù)數(shù),不符合常規(guī)的信息量的理解,所以進(jìn)一步將此結(jié)果+1,即得到gini指數(shù)計(jì)算公式如下:

          可見(jiàn),從信息熵演變?yōu)間ini指數(shù)是一個(gè)自然的迭代思路,但計(jì)算效率將會(huì)大大提升。這里,補(bǔ)充信息熵與gini指數(shù)取值的可視化對(duì)比曲線(xiàn),仍以前述的球賽結(jié)果概率為例:

          然后介紹CART樹(shù)的第二處改進(jìn):分裂方式。
          在改用gini指數(shù)替換信息熵解決了對(duì)數(shù)運(yùn)算的問(wèn)題后,CART決策樹(shù)進(jìn)一步地調(diào)整對(duì)每個(gè)特征的分裂策略:實(shí)現(xiàn)從多叉到二叉,并兼容離散型特征和連續(xù)型特征:對(duì)每輪選定的特征不再完全執(zhí)行分裂,而僅依據(jù)特征取值是否大于某給定閾值將原數(shù)據(jù)集分為兩類(lèi),小于該閾值的為左子樹(shù),大于該閾值的則為右子樹(shù)。顯然,這里閾值的選取將直接決定左右子樹(shù)分裂的結(jié)果好壞,所以最優(yōu)閾值需要尋找而不能隨機(jī)指定。直觀(guān)來(lái)看,尋找最優(yōu)閾值的策略,最簡(jiǎn)單也是最有效的,就是遍歷該特征的所有可能閾值取值,以實(shí)現(xiàn)所有分裂方案的遍歷。具體來(lái)說(shuō),首先將該特征的所有取值從小到大排列,而后逐一選取相鄰兩個(gè)取值的均值作為閾值(例如,特征有N種取值,則可能的閾值即為N-1個(gè)),遍歷計(jì)算分裂結(jié)果的好壞。

          正因?yàn)檫@個(gè)通過(guò)選取閾值將原樹(shù)節(jié)點(diǎn)分為二叉樹(shù)子樹(shù)節(jié)點(diǎn)的設(shè)計(jì),既實(shí)現(xiàn)了兼容離散特征和連續(xù)特征,也完成了從多叉樹(shù)到二叉樹(shù)的過(guò)渡,可謂是CART樹(shù)中的一個(gè)核心設(shè)計(jì)。值得指出,基于CART樹(shù)中這樣的設(shè)計(jì),每輪訓(xùn)練后選定的特征實(shí)際上并未完全使用,所以在后續(xù)訓(xùn)練中仍然可以繼續(xù)參與分裂,這也是CART樹(shù)與ID3和C4.5中的一個(gè)顯著不同。

          最后,介紹CART樹(shù)如何從分類(lèi)向回歸的延伸。
          從機(jī)器學(xué)習(xí)視角的理解,分類(lèi)任務(wù)和回歸任務(wù)的唯一區(qū)別即在于預(yù)測(cè)結(jié)果是離散標(biāo)簽還是連續(xù)取值。而二者對(duì)決策樹(shù)訓(xùn)練過(guò)程產(chǎn)生影響的是:如何評(píng)價(jià)特征選取的優(yōu)劣,以及分裂結(jié)束后如何根據(jù)葉子節(jié)點(diǎn)中樣本的表現(xiàn)得到預(yù)測(cè)結(jié)果。

          對(duì)于第一個(gè)影響,即如何評(píng)價(jià)特征選取優(yōu)劣的問(wèn)題,在分類(lèi)樹(shù)中通過(guò)信息熵或者gini指數(shù)來(lái)表征分裂后節(jié)點(diǎn)中樣本表現(xiàn)的純度(分類(lèi)結(jié)果越接近,信息量越小),那么在回歸樹(shù)中自然可以聯(lián)想到類(lèi)似的表征方式:分裂后節(jié)點(diǎn)中樣本取值越集中則純度越高。因?yàn)樵诨貧w任務(wù)中樣本取值為連續(xù)值,所以表達(dá)取值的集中程度自然可聯(lián)想到用方差來(lái)表述,用機(jī)器學(xué)習(xí)語(yǔ)言描述就是用MSE(均方誤差)衡量。即對(duì)于每輪訓(xùn)練,對(duì)各個(gè)特征進(jìn)行逐一遍歷,對(duì)每個(gè)特征的所有可能閾值進(jìn)行第二層遍歷,分別計(jì)算分裂后的MSE之和,MSE越小意味著該特征越優(yōu)秀。對(duì)于第二個(gè)影響,即根據(jù)訓(xùn)練結(jié)果如何確定最終回歸預(yù)測(cè)結(jié)果的問(wèn)題,其思路也較為自然:在完成分裂過(guò)程后,將每個(gè)葉子節(jié)點(diǎn)取值的平均值作為后續(xù)預(yù)測(cè)過(guò)程的回歸值。

          至此,CART樹(shù)便完成了對(duì)ID3和C4.5的幾個(gè)核心問(wèn)題的改進(jìn):既可用于分類(lèi)也可用于回歸任務(wù),同時(shí)具有較高的訓(xùn)練效率。此外,CART樹(shù)也對(duì)剪枝過(guò)程做了相應(yīng)的改進(jìn),即引入代價(jià)復(fù)雜度剪枝策略Cost-Complexity Pruning,CCP),此處也不再展開(kāi)。


          04 小結(jié)

          決策樹(shù)是機(jī)器學(xué)習(xí)中的一個(gè)經(jīng)典算法,主要?dú)v經(jīng)了ID3、C4.5和CART樹(shù)三大版本,算法原理較為直觀(guān)易懂,改進(jìn)迭代的過(guò)程也容易理解,尤其是以決策樹(shù)算法為基礎(chǔ)更衍生了眾多的集成學(xué)習(xí)算法。除了本文講述的基本原理外,決策樹(shù)的另一大核心就是剪枝策略,這將在后續(xù)篇幅中予以闡釋。



          最后,感謝清華大學(xué)出版社為本公眾號(hào)讀者贊助《數(shù)據(jù)科學(xué)實(shí)戰(zhàn)入門(mén) 使用Python和R》一本,截止下周二(3月30日)早9點(diǎn),公眾號(hào)后臺(tái)查看分享最多的前3名讀者隨機(jī)指定一人,中獎(jiǎng)讀者將在周四或周五推文中公布。

          推薦語(yǔ):本書(shū)為沒(méi)有數(shù)據(jù)分析和編程經(jīng)驗(yàn)的讀者編寫(xiě),主題涵蓋數(shù)據(jù)準(zhǔn)備、探索性數(shù)據(jù)分析、準(zhǔn)備建模數(shù)據(jù)、決策樹(shù)、模型評(píng)估、錯(cuò)誤分類(lèi)代價(jià)、樸素貝葉斯分類(lèi)、神經(jīng)網(wǎng)絡(luò)、聚類(lèi)、回歸建模、降維和關(guān)聯(lián)規(guī)則挖掘。在首先講解Pyhton和R入門(mén)知識(shí)的基礎(chǔ)上,此后每一章都提供了使用Python和R解決數(shù)據(jù)科學(xué)問(wèn)題的分步說(shuō)明和實(shí)踐演練,讀者將一站式學(xué)習(xí)如何使用Python和R進(jìn)行數(shù)據(jù)科學(xué)實(shí)踐。


          相關(guān)閱讀:


          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  av网站在线看 | 簧片视频在线观看免费 | 国产高清视频在线免费观看 | 精品久久久久久中文字幕无码专区 | 无码在线精品视频 |