1.決策樹算法算法
決策樹(decision tree):app
決策樹相似於流程圖的一個樹形結構,如圖1。其中每一個內部結點表示在一個屬性上的測試,每一個分支表明一個屬性的輸出,每一個葉子結點表明類或者類的分佈。樹的最頂層是根結點。一個決策樹如圖1所示機器學習
圖1 決策樹示例學習
該示例是一個經過室外的天氣狀況決定是否進行室外運動的決策樹,方框內表明有多少個實例屬於對應的分類,這裏有9個屬於play,有5個屬於don't play,一共有14個實例。圖中的outlook表示預測的天氣,做爲該決策樹的根結點,根結點下面有三個分支,分別是sunny(晴天)、overcast(多雲)、rain(雨天)三種天氣狀況。若是是sunny(晴天),屬於play的個數是2,屬於don't play的個數是3;(overcast)多雲的話,屬於paly的個數是4,屬於don't play的個數是0,一樣若是是rain(雨天)的話,屬於play的個數是3,屬於don't play的個數是2。在sunny(晴天)結點下還分出了一個分支humidity(溼度),這裏將溼度這個連續值做了一個離散處理,取一個閾值(這裏取70),將這個連續值分爲兩個部分;一樣在rain下有一個分支windy(是否有風),用true和false來做爲分支的條件。測試
1.1 構造決策樹的基本算法ui
下面用一個數據集來簡單說明構造決策樹的基本算法過程。如圖23d
圖2 是否購買電腦的數據集excel
這個數據集是關於顧客在電腦城裏面是否購買電腦的信息,有age(年齡)、income(收入狀況)、student(是不是學生)、credit_rating(信用等級)和分類:buys_computer(是否買電腦)。首先咱們先給出對應的決策樹,如圖3。orm
圖3 構建的決策樹blog
從這個決策樹能夠看出,首先將年齡進行分類,分爲youth、middle_aged、senior三種,若是是middle_aged,那麼是yes,表明會購買電腦,返回數據集中能夠驗證。在youth中又出現一個分支student,student爲yes的時候,結果是yes,表明會購買電腦;student爲no的時候,結果是no,表明不會購買電腦。一樣的,在senior中有一個分支credit_rating,有兩種狀況,fair和excellent,若是credit_rating是fair,結果是no,表明不會購買電腦;若是credit_rating是excellent,結果是yes,表明會購買電腦。這個決策樹爲何是這樣構造的呢?下面咱們先來講幾個概念。
熵(entropy):
信息是一個抽象的概念,如何度量信息呢?1948年,香農提出了「信息熵」的概念,描述了信源的不肯定度,解決了對信息的量化度量的問題。香農指出,任何信息都存在冗餘,冗餘大小與信息中每一個符號(數字、字母或單詞)的出現機率或者說不肯定性有關。即信息的度量就等於不肯定性的大小。一般,一個信源發送出什麼符號是不肯定的,衡量它能夠根據其出現的機率來度量。機率大,出現機會多,不肯定性小;反之不肯定性就大。比特(bit)來衡量信息的多少,用P(Xi)表示一個某個符號出現的機率,那麼信息熵H(X)的值就是
變量的不肯定性越大,熵也就越大,信息熵的取值範圍是0到1之間。
ID3算法
1.選擇結點
信息獲取量(Information Gain):Gain(A)=info(D)- info_A(D),經過A來做爲結點分類獲取了多少信息。下面來用這個公式來計算,加深理解
這個式子表示的是隻用Class:buys_computer來計算信息熵的值,不涉及其餘分類。
下面用年齡(age)來對這個Class:buys_computer進行分類,計算對應的信息熵:
在age分類中youth有5個,middle_aged有4個,senior有5個。在youth中的5我的裏面有2我的買電腦是yes,3我的是no,因此對應的信息熵是
一樣的,在middle_aged中的4我的裏面4我的買電腦都是yes,那麼0我的買電腦是no,因此對應的信息熵是
在senior中的5我的裏面有3我的買電腦是yes,2我的買電腦是no,因此對應的信息熵是
注意信息熵的公式是
將上式相加以後就獲得結果了。因此計算出age的信息獲取量以下:
相似能夠計算出Gain(income)=0.029,Gain(student)=0.151,Gain(credit_rating)=0.048
因此選取age做爲第一個結點,即根結點。根結點分出來以後,以下圖
而後繼續以上的步驟,計算出各個屬性的信息獲取量,選擇最大的一個做爲下一個結點,直到出現目標結果(這裏是買電腦爲yes或者no)全是一種狀況爲止。注意到年齡爲middle_aged的人買電腦都是yes,此時不須要再分結點。年齡爲youth中分別有yes和no,年齡爲senior中也是有yes和no,這兩種狀況就須要構建新的結點。在income、student、credit_rating中分別計算各自的信息獲取量,選擇最大的做爲下一個結點。計算方法和上面的同樣。
下面總結一下ID3算法:
其餘算法:
C4.5: Quinlan
Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R. Olshen, C. Stone)
共同點:都是貪心算法,自上而下(Top-down approach)
區別:屬性選擇度量方法不一樣: C4.5 (gain ratio), CART(gini index), ID3 (Information Gain)
在機器學習中,若是樹的深度太大,會表現爲在訓練集上表現很是好,在測試集上的表現很差,這是由於樹的葉子分得太多,太細化,致使該狀況的出現,這被稱爲overfitting(過擬合)。爲了不overfitting,有兩種方法:
1.先剪枝。分到必定狀況下,就再也不分下去,好比設定一個閾值,在類的純度達到該閾值以後就再也不分下去。
2.後剪枝。將樹徹底建好,再根據某些條件去將多餘的樹葉剪去。
決策樹的優缺點:
優勢:直觀,便於理解,小規模數據集有效
缺點:處理連續變量很差;類別較多時,錯誤增長的比較快(算法複雜度大);可規模性通常