機(jī)器學(xué)習(xí)十大經(jīng)典算法:決策樹
發(fā)布日期:2022/6/25 8:29:23 瀏覽量:
機(jī)器學(xué)習(xí)/人工智能的子領(lǐng)域在過去幾年越來越受歡迎。目前大數(shù)據(jù)在科技行業(yè)已經(jīng)炙手可熱,而基于大量數(shù)據(jù)來進(jìn)行預(yù)測或者得出建議的機(jī)器學(xué)習(xí)無疑是非常強(qiáng)大的。一些最常見的機(jī)器學(xué)習(xí)例子,比如Netflix的算法可以根據(jù)你以前看過的電影來進(jìn)行電影推薦,而Amazon的算法則可以根據(jù)你以前買過的書來推薦書籍。
機(jī)器學(xué)習(xí)算法可以分為三大類:監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。監(jiān)督學(xué)習(xí)可用于一個特定的數(shù)據(jù)集(訓(xùn)練集)具有某一屬性(標(biāo)簽),但是其他數(shù)據(jù)沒有標(biāo)簽或者需要預(yù)測標(biāo)簽的情況。無監(jiān)督學(xué)習(xí)可用于給定的沒有標(biāo)簽的數(shù)據(jù)集(數(shù)據(jù)不是預(yù)分配好的),目的就是要找出數(shù)據(jù)間的潛在關(guān)系。強(qiáng)化學(xué)習(xí)位于這兩者之間,每次預(yù)測都有一定形式的反饋,但是沒有精確的標(biāo)簽或者錯誤信息。
經(jīng)典十大算法包括: 決策樹、樸素貝葉斯分類、最小二乘法、邏輯回歸、支持向量機(jī)、集成方法、聚類算法、主成分分析(PCA)、Boosting 和 AdaBoost、隨機(jī)森林。接下來將對這十大算法進(jìn)行逐一講解。這篇先講決策樹算法。
決策樹算法
在機(jī)器學(xué)習(xí)中,對于處理分類問題,其中比較流行的一個算法便是”決策樹”。決策樹的生成算法有ID3, C4.5和C5.0等。決策樹是一種樹形結(jié)構(gòu),其中每個內(nèi)部節(jié)點(diǎn)表示一個屬性上的判斷,每個分支代表一個判斷結(jié)果的輸出,最后每個葉節(jié)點(diǎn)代表一種分類結(jié)果。
監(jiān)管學(xué)習(xí)就是給出一堆樣本,每個樣本都有一組屬性和一個分類結(jié)果,也就是分類結(jié)果已知,那么通過學(xué)習(xí)這些樣本得到一個決策樹,這個決策樹能夠?qū)π碌臄?shù)據(jù)給出正確的分類。這里通過一個簡單的例子來說明決策樹的構(gòu)成思路:
小明同學(xué)和小方同學(xué)為了準(zhǔn)備即將進(jìn)行的校園羽毛球大賽,準(zhǔn)備近一個月的時間去練習(xí)打球。不過,并不是每一天都適合練球。通常,小明和小方需要考慮一些因素來決定今天是否適合打羽毛球,比如:今天是否有場地(若沒有室內(nèi)場地,就只能選擇室外場地),如果是要在室外練習(xí)的話,天氣是否合適,是否會刮風(fēng)等,例如下表所示:

實(shí)際上,上述的問題是一個典型的智能決策問題。首先,它有一些輸入的特征,比如場地是市內(nèi)還是室外,氣溫是炎熱,天氣是下雨還是晴天,風(fēng)速是大還是?。恍∶骱托》酵ㄟ^某種特定的算法,對這一系列的特征進(jìn)行綜合判斷,從而得出今天是否應(yīng)該打球的決策??梢钥吹剑瑢σ粋€智能決策系統(tǒng),它有三個重要的組成部分,即特征、算法、決策。下圖體現(xiàn)了一個典型的智能決策系統(tǒng)的組成部門,以及各部分之間的輸入/輸出關(guān)系。

在上面的例子中,場地,天氣,溫度,風(fēng)速特征選取完成后,開始進(jìn)行決策,在我們的問題中,決策的內(nèi)容實(shí)際上是將結(jié)果分成兩類,即是(1)否(0)練球。這一類智能決策問題稱為分類問題,決策樹是一種簡單的處理分類問題的算法.決策樹的本質(zhì)是由多個判斷節(jié)點(diǎn)組成的樹形函數(shù),以一個樣本的特征向量X=(X1,X2,X3…Xd) 作為輸入,返回一個“決策”,例如判斷具有該特征的樣本屬于哪個類別。簡單地說,我們從一個“樹根“節(jié)點(diǎn)開始,每次生出幾個(例如2)分叉節(jié)點(diǎn)(稱為子節(jié)點(diǎn)),再將子節(jié)點(diǎn)當(dāng)成新的根節(jié)點(diǎn),繼續(xù)往下生出新的子節(jié)點(diǎn),如此重復(fù),直到滿足某些停止條件停止決策樹的生長。當(dāng)一棵決策樹建立完畢后,我們稱最下面的節(jié)點(diǎn)(無子節(jié)點(diǎn))為葉節(jié)點(diǎn)。其他的節(jié)點(diǎn)成為非葉節(jié)點(diǎn)。每個非葉節(jié)點(diǎn)與一個特征屬性相關(guān)聯(lián),根據(jù)此特征屬性的值的不同,進(jìn)行子節(jié)點(diǎn)的分叉操作。
所以決策樹的生成主要分以下兩步,這兩步通常通過學(xué)習(xí)已經(jīng)知道分類結(jié)果的樣本來實(shí)現(xiàn)。
1、節(jié)點(diǎn)的分裂:一般當(dāng)一個節(jié)點(diǎn)所代表的屬性無法給出判斷時,則選擇將這一節(jié)點(diǎn)分成2個子節(jié)點(diǎn)(如不是二叉樹的情況會分成n個子節(jié)點(diǎn))
2、閾值的確定:選擇適當(dāng)?shù)拈撝凳沟梅诸愬e誤率最小 (Training Error)。

所以當(dāng)Entropy最大為1的時候,是分類效果最差的狀態(tài),當(dāng)它最小為0的時候,是完全分類的狀態(tài)。因?yàn)殪氐扔诹闶抢硐霠顟B(tài),一般實(shí)際情況下,熵介于0和1之間。
熵的不斷最小化,實(shí)際上就是提高分類正確率的過程。
C4.5:通過對ID3的學(xué)習(xí),可以知道ID3存在一個問題,那就是越細(xì)小的分割分類錯誤率越小,所以ID3會越分越細(xì).但是這種分割顯然只對訓(xùn)練數(shù)據(jù)有用,對于新的數(shù)據(jù)沒有意義,這就是所說的過度學(xué)習(xí)(Overfitting)。
分割太細(xì)了,訓(xùn)練數(shù)據(jù)的分類可以達(dá)到0錯誤率,但是因?yàn)樾碌臄?shù)據(jù)和訓(xùn)練數(shù)據(jù)不同,所以面對新的數(shù)據(jù)分錯率反倒上升了。決策樹是通過分析訓(xùn)練數(shù)據(jù),得到數(shù)據(jù)的統(tǒng)計(jì)信息,而不是專為訓(xùn)練數(shù)據(jù)量身定做。
。
所以為了避免分割太細(xì),c4.5對ID3進(jìn)行了改進(jìn),C4.5中,優(yōu)化項(xiàng)要除以分割太細(xì)的代價,這個比值叫做信息增益率,顯然分割太細(xì)分母增加,信息增益率會降低。除此之外,其他的原理和ID3相同。
CART是一個二叉樹,也是回歸樹,同時也是分類樹,CART的構(gòu)成簡單明了。CART只能將一個父節(jié)點(diǎn)分為2個子節(jié)點(diǎn)。CART用GINI指數(shù)來決定如何分裂:
GINI指數(shù):總體內(nèi)包含的類別越雜亂,GINI指數(shù)就越大(跟熵的概念很相似)
。
CART和ID3一樣,存在偏向細(xì)小分割,即過度學(xué)習(xí)(過度擬合的問題),為了解決這一問題,對特別長的樹進(jìn)行剪枝處理,直接剪掉。以上的決策樹訓(xùn)練的時候,一般會采取Cross-Validation法。
ID3,C4.5,CART三種算法的區(qū)別
(1) ID3算法以信息增益為準(zhǔn)則來進(jìn)行選擇劃分屬性,選擇信息增益最大的;
(2) C4.5算法先從候選劃分屬性中找出信息增益高于平均水平的屬性,再從中選擇增益率最高的;
(3) CART算法使用“基尼指數(shù)”來選擇劃分屬性,選擇基尼值最小的屬性作為劃分屬性.
代碼實(shí)現(xiàn)
https://github.com/Erikfather/Decision_tree-python
參考文獻(xiàn)
知乎:https://zhuanlan.zhihu.com/p/33696558
https://zhuanlan.zhihu.com/p/30059442
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生