資訊理論中廣泛使用的乙個度量標準,稱為熵(entropy),它刻畫了任意樣例集的純度。給定包含關於某個目標概念的正反樣例的樣例集s,那麼s相對於這個布林型分類的熵為:
其中,p+代表正樣例,比如p+則意味著去打羽毛球,而p-則代表反樣例,不去打球。
注意:如果s的所有成員屬於同一類,那麼s的熵為0;如果集合中正反樣例的數量相等時,熵為1;如果集合中正反樣例的數量不等時,熵介於0和1之間。如下圖所示:
//舉例來說,假設s是乙個關於布林概念的有14個樣例的集合,它包括9個正例和5個反例(我們採用記號[9+,5-]來概括這樣的資料樣例),那麼s相對於這個布林樣例的熵為:根據具體屬性和值來計算熵
double computeentropy(vector string> > remain_state, string attribute, string value,bool
ifparent)
else count[1]++
; }
} done_flag = true
; }
} if(count[0] == 0 || count[1] == 0 ) return
0;//
全部是正例項或者負例項
//具體計算熵 根據[+count[0],-count[1]],log2為底通過換底公式換成自然數底數
double sum = count[0] + count[1
];
double entropy = -count[0]/sum*log(count[0]/sum)/log(2.0) - count[1]/sum*log(count[1]/sum)/log(2.0
);
return
entropy;
}
entropy([9+,5-])=-(9/14)log2(9/14)-(5/14)log2(5/14)=0.940。
在資訊理論中熵的另一種解釋是,熵確定了要編碼集合s中任意成員的分類所需要的最少二進位制位數。例如:如果p+是1,接受者知道抽出的樣例比為正,所以不必發任何訊息,此時的熵為0。另一方面,如果p+是0.5,必須用乙個二進位制位來說明抽出的樣例是正還是負。如果p+是0.8,那麼對所需的訊息編碼方法時賦予正例集合較短的編碼,可能性較小的反例集合較長的編碼,平均每條訊息的編碼少於1個二進位制位。
一般地,如果目標屬性具有c個不同的值,那麼s相對於c個狀態的分類熵為:
其中pi是s屬於類別i的比例,需要注意的是底數仍然為2,原因熵是以二進位制位的個數來度量編碼長度,同時注意,如果目標屬性具有c個可能值,那麼熵最大可能為log2(c)。
已經有了熵作為衡量訓練樣例集合純度的標準,現在可以定義屬性分類訓練資料的效力的度量標準。這個標準被稱為「資訊增益(
information gain
)」。簡單的說,乙個屬性的資訊增益就是由於使用這個屬性分割樣例而導致的期望熵降低
(或者說,
樣本按照某屬性劃分時造成熵減少的期望,個人結合前面理解,總結為用來衡量給定的屬性區分訓練樣例的能力)。
更精確地講,乙個屬性
a相對樣例集合s的資訊增益gain(s,a)
被定義為:
其中 values(a)是屬性a所有可能值的集合,sv是s中屬性a的值為v的子集,注意上式第一項就是原集合s的熵,第二項是用a分類s後的熵的期望值,第二項描述的期望熵就是每個子集的熵的加權和,權值為屬性sv的樣例佔原始樣例s的比例|sv|/|s|,所以gain(s,a)是由於知道屬性a的值而導致的期望熵減少,換句話來講,gain(s,a)是由於給定屬性a的值而得到的關於目標函式值的資訊。當對s的乙個任意成員的目標值編碼時,gain(s,a)的值是在知道屬性a的值後可以節省的二進位制位數。
那麼綜上,我們就可以得出兩個基本公式:
從中可以看出第乙個entropy(s)是熵定義,第二個則是資訊增益gain(s,a)的定義,而gain(s,a)由第乙個entropy(s)計算出。
假定s是一套有關天氣的訓練樣例,描述它的屬性包括可能是具有weak和strong兩個值的wind。像前面一樣,假定s包含14
個樣例,
[9+,
5-]。在這
14個樣例中,假定正例中的
6個和反例中的
2個有wind =weak,其他的有wind=strong。由於按照屬性wind分類14
個樣例得到的資訊增益可以計算如下。
資訊增益正是id3演算法增長樹的每一步中選取最佳屬性的度量標準下圖(網上拷下可惜沒有清晰版) 計算了兩個不同屬性:濕度(humidity)和風力(wind)的資訊增益,以便決定對於訓練樣例哪乙個屬性更好
通過以上的計算,相對於目標,humidity比wind有更大的資訊增益
下圖仍摘取自《機器學習》 是id3第一步後形成的部分決策樹 其中經比較outlook的資訊增益最大 選作root
上圖中分支overcast的所有樣例都是正例,所以成為目標分類為yes的葉結點。另兩個結點將被進一步展開,方法是按照新的樣例子集選取資訊增益最高的屬性。
最大資訊熵增益 資訊熵與資訊增益
1.資訊熵 資訊熵就是指不確定性,熵越大,不確定性越大 2.關於資訊增益 資訊增益是針對乙個乙個的特徵而言的,就是看乙個特徵t,系統有它和沒它的時候資訊量各是多少,兩者的差值就是這個特徵給系統帶來的資訊量,即增益。系統含有特徵t的時候資訊量很好計算,就是剛才的式子,它表示的是包含所有特徵時系統的資訊...
最大資訊熵增益 資訊熵與資訊增益
前言 熵在機器學習中用的非常普遍,但這個又難以理解,經常忘記,寫一篇部落格記錄一下,也方便其他人學習了解。什麼是熵 一開始接觸熵是大二的資訊理論,非常難的一門課,當時學的時候不知道這個東西有什麼用,完全就不太想學,因為不知道幹嘛,也不知道學了有什麼用,但是現在很後悔,定義 熵也叫資訊熵,可以表徵隨機...
熵 資訊增益 資訊增益率
介紹資訊增益之前,首先需要介紹一下熵的概念,這是乙個物理學概念,表示 乙個系統的混亂程度 系統的不確定性越高,熵就越大。假設集合中的變數x 它對應在集合的概率分別是p 那麼這個集合的熵表示為 舉乙個的例子 對遊戲活躍使用者進行分層,分為高活躍 中活躍 低活躍,遊戲a按照這個方式劃分,使用者比例分別為...