
數(shù)據(jù)挖掘系列決策樹分類算法
從這篇開始,我將介紹分類問題,主要介紹決策樹算法、樸素貝葉斯、支持向量機(jī)、BP神經(jīng)網(wǎng)絡(luò)、懶惰學(xué)習(xí)算法、隨機(jī)森林與自適應(yīng)增強(qiáng)算法、分類模型選擇和結(jié)果評價。
這篇先介紹分類問題的一些基本知識,然后主要講述決策樹算法的原理、實現(xiàn),最后利用決策樹算法做一個泰坦尼克號船員生存預(yù)測應(yīng)用。
一、分類基本介紹
物以類聚,人以群分,分類問題只古以來就出現(xiàn)我們的生活中。分類是數(shù)據(jù)挖掘中一個重要的分支,在各方面都有著廣泛的應(yīng)用,如醫(yī)學(xué)疾病判別、垃圾郵件過濾、垃圾短信攔截、客戶分析等等。分類問題可以分為兩類: 歸類:歸類是指對離散數(shù)據(jù)的分類,比如對根據(jù)一個人的筆跡判別這個是男還是女,這里的類別只有兩個,類別是離散的集合空間{男,女}的。
預(yù)測:預(yù)測是指對連續(xù)數(shù)據(jù)的分類,比如預(yù)測明天8點天氣的濕度情況,天氣的濕度在隨時變化,8點時的天氣是一個具體值,它不屬于某個有限集合空間。預(yù)測也叫回歸分析,在金融領(lǐng)域有著廣泛應(yīng)用。
雖然對離散數(shù)據(jù)和連續(xù)數(shù)據(jù)的處理方式有所不同,但其實他們之間相互轉(zhuǎn)化,比如我們可以根據(jù)比較的某個特征值判斷,如果值大于0.5就認(rèn)定為男性,小于等于0.5就認(rèn)為是女性,這樣就轉(zhuǎn)化為連續(xù)處理方式;將天氣濕度值分段處理也就轉(zhuǎn)化為離散數(shù)據(jù)。
數(shù)據(jù)分類分兩個步驟:
好的分類器具有很好的泛化能力,即它不僅在訓(xùn)練數(shù)據(jù)集上能達(dá)到很高的正確率,而且能在未見過得測試數(shù)據(jù)集也能達(dá)到較高的正確率。如果一個分類器只是在訓(xùn)練數(shù)據(jù)上表現(xiàn)優(yōu)秀,但在測試數(shù)據(jù)上表現(xiàn)稀爛,這個分類器就已經(jīng)過擬合了,它只是把訓(xùn)練數(shù)據(jù)記下來了,并沒有抓到整個數(shù)據(jù)空間的特征。
二、決策樹分類
決策樹算法借助于樹的分支結(jié)構(gòu)實現(xiàn)分類。下圖是一個決策樹的示例,樹的內(nèi)部結(jié)點表示對某個屬性的判斷,該結(jié)點的分支是對應(yīng)的判斷結(jié)果;葉子結(jié)點代表一個類標(biāo)。
上表是一個預(yù)測一個人是否會購買購買電腦的決策樹,利用這棵樹,我們可以對新記錄進(jìn)行分類,從根節(jié)點(年齡)開始,如果某個人的年齡為中年,我們就直接判斷這個人會買電腦,如果是青少年,則需要進(jìn)一步判斷是否是學(xué)生;如果是老年則需要進(jìn)一步判斷其信用等級,直到葉子結(jié)點可以判定記錄的類別。
決策樹算法有一個好處,那就是它可以產(chǎn)生人能直接理解的規(guī)則,這是貝葉斯、神經(jīng)網(wǎng)絡(luò)等算法沒有的特性;決策樹的準(zhǔn)確率也比較高,而且不需要了解背景知識就可以進(jìn)行分類,是一個非常有效的算法。決策樹算法有很多變種,包括ID3、C4.5、C5.0、CART等,但其基礎(chǔ)都是類似的。下面來看看決策樹算法的基本思想:
算法:GenerateDecisionTree(D,attributeList)根據(jù)訓(xùn)練數(shù)據(jù)記錄D生成一棵決策樹.
輸入:數(shù)據(jù)記錄D,包含類標(biāo)的訓(xùn)練數(shù)據(jù)集;
屬性列表attributeList,候選屬性集,用于在內(nèi)部結(jié)點中作判斷的屬性.
屬性選擇方法AttributeSelectionMethod(),選擇最佳分類屬性的方法.
輸出:一棵決策樹.
過程:
構(gòu)造一個節(jié)點N;
如果數(shù)據(jù)記錄D中的所有記錄的類標(biāo)都相同(記為C類):
則將節(jié)點N作為葉子節(jié)點標(biāo)記為C,并返回結(jié)點N;
如果屬性列表為空:
則將節(jié)點N作為葉子結(jié)點標(biāo)記為D中類標(biāo)最多的類,并返回結(jié)點N;
調(diào)用AttributeSelectionMethod(D,attributeList)選擇最佳的分裂準(zhǔn)則splitCriterion;
將節(jié)點N標(biāo)記為最佳分裂準(zhǔn)則splitCriterion;
如果分裂屬性取值是離散的,并且允許決策樹進(jìn)行多叉分裂:
從屬性列表中減去分裂屬性,attributeLsit -= splitAttribute;
對分裂屬性的每一個取值j:
記D中滿足j的記錄集合為Dj;
如果Dj為空:
則新建一個葉子結(jié)點F,標(biāo)記為D中類標(biāo)最多的類,并且把結(jié)點F掛在N下;
否則:
遞歸調(diào)用GenerateDecisionTree(Dj,attributeList)得到子樹結(jié)點Nj,將Nj掛在N下;
返回結(jié)點N;
算法的1、2、3步驟都很顯然,第4步的最佳屬性選擇函數(shù)會在后面專門介紹,現(xiàn)在只有知道它能找到一個準(zhǔn)則,使得根據(jù)判斷結(jié)點得到的子樹的類別盡可能的純,這里的純就是只含有一個類標(biāo);第5步根據(jù)分裂準(zhǔn)則設(shè)置結(jié)點N的測試表達(dá)式。在第6步中,對應(yīng)構(gòu)建多叉決策樹時,離散的屬性在結(jié)點N及其子樹中只用一次,用過之后就從可用屬性列表中刪掉。比如前面的圖中,利用屬性選擇函數(shù),確定的最佳分裂屬性是年齡,年齡有三個取值,每一個取值對應(yīng)一個分支,后面不會再用到年齡這個屬性。算法的時間復(fù)雜度是O(k*|D|*log(|D|)),k為屬性個數(shù),|D|為記錄集D的記錄數(shù)。
三、屬性選擇方法
屬性選擇方法總是選擇最好的屬性最為分裂屬性,即讓每個分支的記錄的類別盡可能純。它將所有屬性列表的屬性進(jìn)行按某個標(biāo)準(zhǔn)排序,從而選出最好的屬性。屬性選擇方法很多,這里我介紹三個常用的方法:信息增益(Information gain)、增益比率(gain ratio)、基尼指數(shù)(Gini index)。
信息增益(Information gain)
信息增益基于香濃的信息論,它找出的屬性R具有這樣的特點:以屬性R分裂前后的信息增益比其他屬性最大。這里信息的定義如下:
其中的m表示數(shù)據(jù)集D中類別C的個數(shù),Pi表示D中任意一個記錄屬于Ci的概率,計算時Pi=(D中屬于Ci類的集合的記錄個數(shù)/|D|)。Info(D)表示將數(shù)據(jù)集D不同的類分開需要的信息量。
如果了解信息論,就會知道上面的信息Info實際上就是信息論中的熵Entropy,熵表示的是不確定度的度量,如果某個數(shù)據(jù)集的類別的不確定程度越高,則其熵就越大。比如我們將一個立方體A拋向空中,記落地時著地的面為f1,f1的取值為{1,2,3,4,5,6},f1的熵entropy(f1)=-(1/6*log(1/6)+…+1/6*log(1/6))=-1*log(1/6)=2.58;現(xiàn)在我們把立方體A換為正四面體B,記落地時著地的面為f2,f2的取值為{1,2,3,4},f2的熵entropy(1)=-(1/4*log(1/4)+1/4*log(1/4)+1/4*log(1/4)+1/4*log(1/4)) =-log(1/4)=2;如果我們再換成一個球C,記落地時著地的面為f3,顯然不管怎么扔著地都是同一個面,即f3的取值為{1},故其熵entropy(f3)=-1*log(1)=0??梢钥吹矫鏀?shù)越多,熵值也越大,而當(dāng)只有一個面的球時,熵值為0,此時表示不確定程度為0,也就是著地時向下的面是確定的。
有了上面關(guān)于熵的簡單理解,我們接著講信息增益。假設(shè)我們選擇屬性R作為分裂屬性,數(shù)據(jù)集D中,R有k個不同的取值{V1,V2,…,Vk},于是可將D根據(jù)R的值分成k組{D1,D2,…,Dk},按R進(jìn)行分裂后,將數(shù)據(jù)集D不同的類分開還需要的信息量為:
信息增益的定義為分裂前后,兩個信息量只差:
信息增益Gain(R)表示屬性R給分類帶來的信息量,我們尋找Gain最大的屬性,就能使分類盡可能的純,即最可能的把不同的類分開。不過我們發(fā)現(xiàn)對所以的屬性Info(D)都是一樣的,所以求最大的Gain可以轉(zhuǎn)化為求最新的InfoR(D)。這里引入Info(D)只是為了說明背后的原理,方便理解,實現(xiàn)時我們不需要計算Info(D)。舉一個例子,數(shù)據(jù)集D如下:
記錄ID | 年齡 | 輸入層次 | 學(xué)生 | 信用等級 | 是否購買電腦 |
1 | 青少年 | 高 | 否 | 一般 | 否 |
2 | 青少年 | 高 | 否 | 良好 | 否 |
3 | 中年 | 高 | 否 | 一般 | 是 |
4 | 老年 | 中 | 否 | 一般 | 是 |
5 | 老年 | 低 | 是 | 一般 | 是 |
6 | 老年 | 低 | 是 | 良好 | 否 |
7 | 中年 | 低 | 是 | 良好 | 是 |
8 | 青少年 | 中 | 否 | 一般 | 否 |
9 | 青少年 | 低 | 是 | 一般 | 是 |
10 | 老年 | 中 | 是 | 一般 | 是 |
11 | 青少年 | 中 | 是 | 良好 | 是 |
12 | 中年 | 中 | 否 | 良好 | 是 |
13 | 中年 | 高 | 是 | 一般 | 是 |
14 | 老年 | 中 | 否 | 良好 | 否 |
這個數(shù)據(jù)集是根據(jù)一個人的年齡、收入、是否學(xué)生以及信用等級來確定他是否會購買電腦,即最后一列“是否購買電腦”是類標(biāo)。現(xiàn)在我們用信息增益選出最最佳的分類屬性,計算按年齡分裂后的信息量:
整個式子由三項累加而成,第一項為青少年,14條記錄中有5條為青少年,其中2(占2/5)條購買電腦,3(占3/5)條不購買電腦。第二項為中年,第三項為老年。類似的,有:
可以得出Info年齡(D)最小,即以年齡分裂后,分得的結(jié)果中類標(biāo)最純,此時已年齡作為根結(jié)點的測試屬性,根據(jù)青少年、中年、老年分為三個分支:
注意,年齡這個屬性用過后,之后的操作就不需要年齡了,即把年齡從attributeList中刪掉。往后就按照同樣的方法,構(gòu)建D1,D2,D3對應(yīng)的決策子樹。ID3算法使用的就是基于信息增益的選擇屬性方法。
增益比率(gain ratio)
信息增益選擇方法有一個很大的缺陷,它總是會傾向于選擇屬性值多的屬性,如果我們在上面的數(shù)據(jù)記錄中加一個姓名屬性,假設(shè)14條記錄中的每個人姓名不同,那么信息增益就會選擇姓名作為最佳屬性,因為按姓名分裂后,每個組只包含一條記錄,而每個記錄只屬于一類(要么購買電腦要么不購買),因此純度最高,以姓名作為測試分裂的結(jié)點下面有14個分支。但是這樣的分類沒有意義,它每一任何泛化能力。增益比率對此進(jìn)行了改進(jìn),它引入一個分裂信息:
增益比率定義為信息增益與分裂信息的比率:
我們找GainRatio最大的屬性作為最佳分裂屬性。如果一個屬性的取值很多,那么SplitInfoR(D)會大,從而使GainRatio(R)變小。不過增益比率也有缺點,SplitInfo(D)可能取0,此時沒有計算意義;且當(dāng)SplitInfo(D)趨向于0時,GainRatio(R)的值變得不可信,改進(jìn)的措施就是在分母加一個平滑,這里加一個所有分裂信息的平均值:
基尼指數(shù)(Gini index)
基尼指數(shù)是另外一種數(shù)據(jù)的不純度的度量方法,其定義如下:
其中的m仍然表示數(shù)據(jù)集D中類別C的個數(shù),Pi表示D中任意一個記錄屬于Ci的概率,計算時Pi=(D中屬于Ci類的集合的記錄個數(shù)/|D|)。如果所有的記錄都屬于同一個類中,則P1=1,Gini(D)=0,此時不純度最低。在CART(Classification and Regression Tree)算法中利用基尼指數(shù)構(gòu)造二叉決策樹,對每個屬性都會枚舉其屬性的非空真子集,以屬性R分裂后的基尼系數(shù)為:
D1為D的一個非空真子集,D2為D1在D的補(bǔ)集,即D1+D2=D,對于屬性R來說,有多個真子集,即GiniR(D)有多個值,但我們選取最小的那么值作為R的基尼指數(shù)。最后:
我們轉(zhuǎn)Gini(R)增量最大的屬性作為最佳分裂屬性。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(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ū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03