机器学习实战读书笔记(2)决策树
?
R代表根節(jié)點(diǎn)接下來,讓我們將哪一匹馬獲勝視為一個(gè)隨機(jī)變量 。假定我們需要用盡可能少的二元問題來確定隨機(jī)變量 的取值。
例如:問題1:A獲勝了嗎?問題2:B獲勝了嗎?問題3:C獲勝了嗎?最后我們可以通過最多3個(gè)二元問題,來確定 的取值,即哪一匹馬贏了比賽。
?
如果 ,那么需要問1次(問題1:是不是A?),概率為 ;
如果 ,那么需要問2次(問題1:是不是A?問題2:是不是B?),概率為 ;
如果 ,那么需要問3次(問題1,問題2,問題3),概率為 ;
如果 ,那么同樣需要問3次(問題1,問題2,問題3),概率為 ;
?
那么很容易計(jì)算,在這種問法下,為確定 取值的二元問題數(shù)量為:
注意:1=log(2) ,2=log(4),3=log(8)
那么我們回到信息熵的定義,會(huì)發(fā)現(xiàn)通過之前的信息熵公式,神奇地得到了:
其中:log(2)=-log(1/2),log(4)=-log(1/4),log(8)=-log(1/8)?
Shannon公式:
?
================
3,一個(gè)例子:
================
任務(wù):
根據(jù)天氣預(yù)測(cè)否去打網(wǎng)球
數(shù)據(jù):
這個(gè)數(shù)據(jù)集來自Mitchell的機(jī)器學(xué)習(xí),叫做是否去打網(wǎng)球play-tennis,以下數(shù)據(jù)仍然是從帶逗號(hào)分割的文本文件,復(fù)制到紀(jì)事本,把后綴直接改為.csv就可以拿Excel打開:*play-tennis data,其中6個(gè)變量依次為:編號(hào)、天氣{Sunny、Overcast、Rain}、溫度{熱、冷、適中}、濕度{高、正常}、風(fēng)力{強(qiáng)、弱}以及最后是否去玩的決策{是、否}。一個(gè)建議是把這些數(shù)據(jù)導(dǎo)入Excel后,另復(fù)制一份去掉變量的數(shù)據(jù)到另外一個(gè)工作簿,即只保留14個(gè)觀測(cè)值。這樣可以方便地使用Excel的排序功能,隨時(shí)查看每個(gè)變量的取值到底有多少。*/
NO. , Outlook , Temperature , Humidity , Wind , Play
1 , Sunny , Hot , High , Weak , No
2 , Sunny , Hot , High , Strong , No
3 , Overcast , Hot , High , Weak , Yes
4 , Rain , Mild , High , Weak , Yes
5 , Rain , Cool , Normal , Weak , Yes
6 , Rain , Cool , Normal , Strong , No
7 , Overcast , Cool , Normal , Strong , Yes
8 , Sunny , Mild , High , Weak , No
9 , Sunny , Cool , Normal , Weak , Yes
10 , Rain , Mild , Normal , Weak , Yes
11 , Sunny , Mild , Normal , Strong , Yes
12 , Overcast , Mild , High , Strong , Yes
13 , Overcast , Hot , Normal , Weak , Yes
14 , Rain , Mild , High , Strong , No
用決策樹來預(yù)測(cè):
決策樹的形式類似于“如果天氣怎么樣,去玩;否則,怎么著怎么著”的樹形分叉。那么問題是用哪個(gè)屬性(即變量,如天氣、溫度、濕度和風(fēng)力)最適合充當(dāng)這顆樹的根節(jié)點(diǎn),在它上面沒有其他節(jié)點(diǎn),其他的屬性都是它的后續(xù)節(jié)點(diǎn)。
那么借用上面所述的能夠衡量一個(gè)屬性區(qū)分以上數(shù)據(jù)樣本的能力的“信息增益”(Information Gain)理論。
如果一個(gè)屬性的信息增益量越大,這個(gè)屬性作為一棵樹的根節(jié)點(diǎn)就能使這棵樹更簡(jiǎn)潔,比如說一棵樹可以這么讀成,如果風(fēng)力弱,就去玩;風(fēng)力強(qiáng),再按天氣、溫度等分情況討論,此時(shí)用風(fēng)力作為這棵樹的根節(jié)點(diǎn)就很有價(jià)值。如果說,風(fēng)力弱,再又天氣晴朗,就去玩;如果風(fēng)力強(qiáng),再又怎么怎么分情況討論,這棵樹相比就不夠簡(jiǎn)潔了。
用熵來計(jì)算信息增益:
?
1 計(jì)算分類系統(tǒng)熵類別是 是否出去玩。取值為yes的記錄有9個(gè),取值為no的有5個(gè),即說這個(gè)樣本里有9個(gè)正例,5 個(gè)負(fù)例,記為S(9+,5-),S是樣本的意思(Sample)。那么P(c1) = 9/14, P(c2) = 5/14 這里熵記為Entropy(S),計(jì)算公式為: Entropy(S)= -(9/14)*log2(9/14)-(5/14)*log2(5/14)用Matlab做數(shù)學(xué)運(yùn)算 2 分別以Wind、Humidity、Outlook和Temperature作為根節(jié)點(diǎn),計(jì)算其信息增益
我們來計(jì)算Wind的信息增益 當(dāng)Wind固定為Weak時(shí):記錄有8條,其中正例6個(gè),負(fù)例2個(gè); 同樣,取值為Strong的記錄6個(gè),正例負(fù)例個(gè)3個(gè)。我們可以計(jì)算相應(yīng)的熵為: Entropy(Weak)=-(6/8)*log(6/8)-(2/8)*log(2/8)=0.811
Entropy(Strong)=-(3/6)*log(3/6)-(3/6)*log(3/6)=1.0
現(xiàn)在就可以計(jì)算出相應(yīng)的信息增益了: 所以,對(duì)于一個(gè)Wind屬性固定的分類系統(tǒng)的信息量為 (8/14)*Entropy(Weak)+(6/14)*Entropy(Strong) Gain(Wind)=Entropy(S)-(8/14)*Entropy(Weak)-(6/14)*Entropy(Strong)=0.940-(8/14)*0.811-(6/14)*1.0=0.048 這個(gè)公式的奧秘在于,8/14是屬性Wind取值為Weak的個(gè)數(shù)占總記錄的比例,同樣6/14是其取值為Strong的記錄個(gè)數(shù)與總記錄數(shù)之比。
同理,如果以Humidity作為根節(jié)點(diǎn):
Entropy(High)=0.985 ; Entropy(Normal)=0.592
Gain(Humidity)=0.940-(7/14)*Entropy(High)-(7/14)*Entropy(Normal)=0.151
以O(shè)utlook作為根節(jié)點(diǎn):
Entropy(Sunny)=0.971 ; Entropy(Overcast)=0.0 ; Entropy(Rain)=0.971
Gain(Outlook)=0.940-(5/14)*Entropy(Sunny)-(4/14)*Entropy(Overcast)-(5/14)*Entropy(Rain)=0.247
以Temperature作為根節(jié)點(diǎn):
Entropy(Cool)=0.811 ; Entropy(Hot)=1.0 ; Entropy(Mild)=0.918
Gain(Temperature)=0.940-(4/14)*Entropy(Cool)-(4/14)*Entropy(Hot)-(6/14)*Entropy(Mild)=0.029
這樣我們就得到了以上四個(gè)屬性相應(yīng)的信息增益值:
Gain(Wind)=0.048 ;Gain(Humidity)=0.151 ; Gain(Outlook)=0.247 ;Gain(Temperature)=0.029
最后按照信息增益最大的原則選Outlook為根節(jié)點(diǎn)。子節(jié)點(diǎn)重復(fù)上面的步驟。這顆樹可以是這樣的,它讀起來就跟你認(rèn)為的那樣:
通俗理解決策樹算法中的信息增益
https://zhuanlan.zhihu.com/p/26596036
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/8604419.html
總結(jié)
以上是生活随笔為你收集整理的机器学习实战读书笔记(2)决策树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习实战读书笔记(1)
- 下一篇: 机器学习实战读书笔记(3)朴素贝叶斯