
分類算法之決策樹(shù)(Decision tree)
在前面兩篇文章中,分別介紹和討論了樸素貝葉斯分類與貝葉斯網(wǎng)絡(luò)兩種分類算法。這兩種算法都以貝葉斯定理為基礎(chǔ),可以對(duì)分類及決策問(wèn)題進(jìn)行概率推斷。在這一篇文章中,將討論另一種被廣泛使用的分類算法——決策樹(shù)(decision tree)。相比貝葉斯算法,決策樹(shù)的優(yōu)勢(shì)在于構(gòu)造過(guò)程不需要任何領(lǐng)域知識(shí)或參數(shù)設(shè)置,因此在實(shí)際應(yīng)用中,對(duì)于探測(cè)式的知識(shí)發(fā)現(xiàn),決策樹(shù)更加適用。
3.2、決策樹(shù)引導(dǎo)
通俗來(lái)說(shuō),決策樹(shù)分類的思想類似于找對(duì)象。現(xiàn)想象一個(gè)女孩的母親要給這個(gè)女孩介紹男朋友,于是有了下面的對(duì)話:
女兒:多大年紀(jì)了?
母親:26。
女兒:長(zhǎng)的帥不帥?
母親:挺帥的。
女兒:收入高不?
母親:不算很高,中等情況。
女兒:是公務(wù)員不?
母親:是,在稅務(wù)局上班呢。
女兒:那好,我去見(jiàn)見(jiàn)。
這個(gè)女孩的決策過(guò)程就是典型的分類樹(shù)決策。相當(dāng)于通過(guò)年齡、長(zhǎng)相、收入和是否公務(wù)員對(duì)將男人分為兩個(gè)類別:見(jiàn)和不見(jiàn)。假設(shè)這個(gè)女孩對(duì)男人的要求是:30歲以下、長(zhǎng)相中等以上并且是高收入者或中等以上收入的公務(wù)員,那么這個(gè)可以用下圖表示女孩的決策邏輯(聲明:此決策樹(shù)純屬為了寫文章而YY的產(chǎn)物,沒(méi)有任何根據(jù),也不代表任何女孩的擇偶傾向,請(qǐng)各位女同胞莫質(zhì)問(wèn)我^_^):
上圖完整表達(dá)了這個(gè)女孩決定是否見(jiàn)一個(gè)約會(huì)對(duì)象的策略,其中綠色節(jié)點(diǎn)表示判斷條件,橙色節(jié)點(diǎn)表示決策結(jié)果,箭頭表示在一個(gè)判斷條件在不同情況下的決策路徑,圖中紅色箭頭表示了上面例子中女孩的決策過(guò)程。
這幅圖基本可以算是一顆決策樹(shù),說(shuō)它“基本可以算”是因?yàn)閳D中的判定條件沒(méi)有量化,如收入高中低等等,還不能算是嚴(yán)格意義上的決策樹(shù),如果將所有條件量化,則就變成真正的決策樹(shù)了。
有了上面直觀的認(rèn)識(shí),我們可以正式定義決策樹(shù)了:
決策樹(shù)(decision tree)是一個(gè)樹(shù)結(jié)構(gòu)(可以是二叉樹(shù)或非二叉樹(shù))。其每個(gè)非葉節(jié)點(diǎn)表示一個(gè)特征屬性上的測(cè)試,每個(gè)分支代表這個(gè)特征屬性在某個(gè)值域上的輸出,而每個(gè)葉節(jié)點(diǎn)存放一個(gè)類別。使用決策樹(shù)進(jìn)行決策的過(guò)程就是從根節(jié)點(diǎn)開(kāi)始,測(cè)試待分類項(xiàng)中相應(yīng)的特征屬性,并按照其值選擇輸出分支,直到到達(dá)葉子節(jié)點(diǎn),將葉子節(jié)點(diǎn)存放的類別作為決策結(jié)果。
可以看到,決策樹(shù)的決策過(guò)程非常直觀,容易被人理解。目前決策樹(shù)已經(jīng)成功運(yùn)用于醫(yī)學(xué)、制造產(chǎn)業(yè)、天文學(xué)、分支生物學(xué)以及商業(yè)等諸多領(lǐng)域。知道了決策樹(shù)的定義以及其應(yīng)用方法,下面介紹決策樹(shù)的構(gòu)造算法。
3.3、決策樹(shù)的構(gòu)造
不同于貝葉斯算法,決策樹(shù)的構(gòu)造過(guò)程不依賴領(lǐng)域知識(shí),它使用屬性選擇度量來(lái)選擇將元組最好地劃分成不同的類的屬性。所謂決策樹(shù)的構(gòu)造就是進(jìn)行屬性選擇度量確定各個(gè)特征屬性之間的拓?fù)浣Y(jié)構(gòu)。
構(gòu)造決策樹(shù)的關(guān)鍵步驟是分裂屬性。所謂分裂屬性就是在某個(gè)節(jié)點(diǎn)處按照某一特征屬性的不同劃分構(gòu)造不同的分支,其目標(biāo)是讓各個(gè)分裂子集盡可能地“純”。盡可能“純”就是盡量讓一個(gè)分裂子集中待分類項(xiàng)屬于同一類別。分裂屬性分為三種不同的情況:
1、屬性是離散值且不要求生成二叉決策樹(shù)。此時(shí)用屬性的每一個(gè)劃分作為一個(gè)分支。
2、屬性是離散值且要求生成二叉決策樹(shù)。此時(shí)使用屬性劃分的一個(gè)子集進(jìn)行測(cè)試,按照“屬于此子集”和“不屬于此子集”分成兩個(gè)分支。
3、屬性是連續(xù)值。此時(shí)確定一個(gè)值作為分裂點(diǎn)split_point,按照>split_point和<=split_point生成兩個(gè)分支。
構(gòu)造決策樹(shù)的關(guān)鍵性內(nèi)容是進(jìn)行屬性選擇度量,屬性選擇度量是一種選擇分裂準(zhǔn)則,是將給定的類標(biāo)記的訓(xùn)練集合的數(shù)據(jù)劃分D“最好”地分成個(gè)體類的啟發(fā)式方法,它決定了拓?fù)浣Y(jié)構(gòu)及分裂點(diǎn)split_point的選擇。
屬性選擇度量算法有很多,一般使用自頂向下遞歸分治法,并采用不回溯的貪心策略。這里介紹ID3和C4.5兩種常用算法。
3.3.1、ID3算法
從信息論知識(shí)中我們直到,期望信息越小,信息增益越大,從而純度越高。所以ID3算法的核心思想就是以信息增益度量屬性選擇,選擇分裂后信息增益最大的屬性進(jìn)行分裂。下面先定義幾個(gè)要用到的概念。
設(shè)D為用類別對(duì)訓(xùn)練元組進(jìn)行的劃分,則D的熵(entropy)表示為:
其中pi表示第i個(gè)類別在整個(gè)訓(xùn)練元組中出現(xiàn)的概率,可以用屬于此類別元素的數(shù)量除以訓(xùn)練元組元素總數(shù)量作為估計(jì)。熵的實(shí)際意義表示是D中元組的類標(biāo)號(hào)所需要的平均信息量。
現(xiàn)在我們假設(shè)將訓(xùn)練元組D按屬性A進(jìn)行劃分,則A對(duì)D劃分的期望信息為:
而信息增益即為兩者的差值:
ID3算法就是在每次需要分裂時(shí),計(jì)算每個(gè)屬性的增益率,然后選擇增益率最大的屬性進(jìn)行分裂。下面我們繼續(xù)用SNS社區(qū)中不真實(shí)賬號(hào)檢測(cè)的例子說(shuō)明如何使用ID3算法構(gòu)造決策樹(shù)。為了簡(jiǎn)單起見(jiàn),我們假設(shè)訓(xùn)練集合包含10個(gè)元素:
其中s、m和l分別表示小、中和大。
設(shè)L、F、H和R表示日志密度、好友密度、是否使用真實(shí)頭像和賬號(hào)是否真實(shí),下面計(jì)算各屬性的信息增益。
因此日志密度的信息增益是0.276。
用同樣方法得到H和F的信息增益分別為0.033和0.553。
因?yàn)镕具有最大的信息增益,所以第一次分裂選擇F為分裂屬性,分裂后的結(jié)果如下圖表示:
在上圖的基礎(chǔ)上,再遞歸使用這個(gè)方法計(jì)算子節(jié)點(diǎn)的分裂屬性,最終就可以得到整個(gè)決策樹(shù)。
上面為了簡(jiǎn)便,將特征屬性離散化了,其實(shí)日志密度和好友密度都是連續(xù)的屬性。對(duì)于特征屬性為連續(xù)值,可以如此使用ID3算法:
先將D中元素按照特征屬性排序,則每?jī)蓚€(gè)相鄰元素的中間點(diǎn)可以看做潛在分裂點(diǎn),從第一個(gè)潛在分裂點(diǎn)開(kāi)始,分裂D并計(jì)算兩個(gè)集合的期望信息,具有最小期望信息的點(diǎn)稱為這個(gè)屬性的最佳分裂點(diǎn),其信息期望作為此屬性的信息期望。
3.3.2、C4.5算法
ID3算法存在一個(gè)問(wèn)題,就是偏向于多值屬性,例如,如果存在唯一標(biāo)識(shí)屬性ID,則ID3會(huì)選擇它作為分裂屬性,這樣雖然使得劃分充分純凈,但這種劃分對(duì)分類幾乎毫無(wú)用處。ID3的后繼算法C4.5使用增益率(gain ratio)的信息增益擴(kuò)充,試圖克服這個(gè)偏倚。
C4.5算法首先定義了“分裂信息”,其定義可以表示成:
其中各符號(hào)意義與ID3算法相同,然后,增益率被定義為:
C4.5選擇具有最大增益率的屬性作為分裂屬性,其具體應(yīng)用與ID3類似,不再贅述。
3.4、關(guān)于決策樹(shù)的幾點(diǎn)補(bǔ)充說(shuō)明
3.4.1、如果屬性用完了怎么辦
在決策樹(shù)構(gòu)造過(guò)程中可能會(huì)出現(xiàn)這種情況:所有屬性都作為分裂屬性用光了,但有的子集還不是純凈集,即集合內(nèi)的元素不屬于同一類別。在這種情況下,由于沒(méi)有更多信息可以使用了,一般對(duì)這些子集進(jìn)行“多數(shù)表決”,即使用此子集中出現(xiàn)次數(shù)最多的類別作為此節(jié)點(diǎn)類別,然后將此節(jié)點(diǎn)作為葉子節(jié)點(diǎn)。
3.4.2、關(guān)于剪枝
在實(shí)際構(gòu)造決策樹(shù)時(shí),通常要進(jìn)行剪枝,這時(shí)為了處理由于數(shù)據(jù)中的噪聲和離群點(diǎn)導(dǎo)致的過(guò)分?jǐn)M合問(wèn)題。剪枝有兩種:
先剪枝——在構(gòu)造過(guò)程中,當(dāng)某個(gè)節(jié)點(diǎn)滿足剪枝條件,則直接停止此分支的構(gòu)造。
后剪枝——先構(gòu)造完成完整的決策樹(shù),再通過(guò)某些條件遍歷樹(shù)進(jìn)行剪枝。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開(kāi)啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03