目錄html
更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython
熵表示隨機變量不肯定性的度量
。假設離散隨機變量\(X\)能夠取到\(n\)個值,其機率分佈爲
\[ P(X=x_i)=p_i, \quad i = 1,2,\ldots,n \]
則\(X\)的熵定義爲
\[ H(X) = -\sum_{i=1}^n p_i log{p_i} \]
因爲熵只依賴\(X\)的分佈,與\(X\)自己的值沒有關係,因此熵也能夠定義爲
\[ H(p) = -\sum_{i=1}^n p_i log{p_i} \]
熵越大,則隨機變量的不肯定性越大,而且\(0\geq{H(p)}\leq\log{n}\)。算法
當隨機變量只取兩個值\(0\)和\(1\)的時候,\(X\)的分佈爲
\[ P(X=1)=p, \quad P(x=0)=1-p, \quad 0\geq{p}\leq{1} \]
熵則是
\[ H(p) = -p\log_2 p-(1-p) \log_2(1-p) \]
此時隨機變量爲伯努利分佈,熵隨機率變化的曲線以下圖所示數據結構
import numpy as np from math import log import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties %matplotlib inline font = FontProperties(fname='/Library/Fonts/Heiti.ttc') p = np.arange(0.01, 1, 0.01) entro = -p*np.log2(p) - (1-p)*np.log2(1-p) plt.plot(p, entro) plt.title('伯努利分佈時熵和機率的關係', fontproperties=font) plt.xlabel('p') plt.ylabel('H(p)') plt.show()
當\(p=0\)和\(p=1\)時熵值爲\(0\),此時隨機變量徹底沒有不肯定性;當\(p=0.5\)時的熵值最大,隨機變量的不肯定性最大。機器學習
假設有隨機變量\((X,Y)\),其聯合機率爲
\[ p(X=x_i,Y=y_i), \quad i=1,2,\ldots,n; \quad j=1,2,\ldots,m \]
條件熵\(H(Y|X)\)表示在已知隨機變量\(X\)的條件下隨機變量\(Y\)的不肯定性,定義爲
\[ H(Y|X) = \sum_{i=1}^n P(X=x_i) H(Y|X=x_i) \]
經過公式能夠把條件熵理解爲在得知某一肯定信息的基礎上獲取另一個信息時所得到的信息量
。學習
當熵和條件熵中的機率由數據估計得到時,所對應的熵與條件熵分別稱爲經驗熵(empirical entropy)和經驗條件熵(empirical conditional entropy)。網站
假設有隨機變量\((X,Y)\),其聯合機率爲
\[ p(X=x_i,Y=y_i)=p_{ij}, \quad i=1,2,\ldots,n; \quad j=1,2,\ldots,m \]
聯合熵度量的是一個聯合分佈的隨機系統的不肯定性,它的定義爲
\[ H(X,Y) = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i,Y=y_j)} \]
由此能夠對聯合熵進行簡單的化簡
\[ \begin{align} H(X,Y) & = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i,Y=y_j)} \\ & = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i)\log{p(Y=y_i|X=x_i)}} \\ & = -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(X=x_i)} -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(Y=y_i|X=x_i)}\\ & = -\sum_{i=1}^n p(X=x_i) \log{p(X=x_i)} -\sum_{i=1}^n \sum_{j=1}^m p(X=x_i,Y=y_j) \log{p(Y=y_i|X=x_i)} \\ & = H(X) + H(Y|X) \end{align} \]
同理可證\(H(X,Y)=H(Y)+H(X|Y)\),即聯合熵表示對一個兩個隨機變量的隨機系統,能夠先觀察一個隨機變量獲取信息,在這以後能夠在擁有這個信息量的基礎上觀察第二個隨機變量的信息量,而且不管先觀察哪個隨機變量對信息量的獲取都是沒有任何影響的
。編碼
同理可得一個含有\(n\)個獨立的隨機變量的隨機系統\((X_1,X_2,\ldots,X_n)\)的聯合熵爲
\[ H(X_1,X_2,\ldots,X_n) = \sum_{i=1}^n H(X_i) \]
能夠發現即便是含有\(n\)個隨機變量的隨機系統不管先觀察哪個隨機變量對信息量的獲取也是沒有任何影響的。人工智能
相對熵有時候也稱爲KL散度 (Kullback–Leibler divergence)。spa
設\(p(x)\)、\(q(x)\)是離散隨機變量\(X\)中取值的兩個機率分佈,則\(p\)對\(q\)的相對熵是:
\[ \begin{align} DKL(p||q) & = \sum_{i=1}^n p(X=x_i)\log{\frac{p(X=x_i)}{q(X=x_i)}} \\ & = E_{p(X=x_i)}\log{\frac{p(X=x_i)}{q(X=x_i)}} \end{align} \]
定義:基於相同時間測度的兩個機率分佈\(p(x)\)和\(q(x)\)的交叉熵是指,當基於一個「非天然」(相對於「真實分佈」\(p(x)\)而言)的機率分佈\(q(x)\)進行編碼時,在時間集合中惟一標識一個事件所須要的平均比特數(使用非真實分佈\(q(x)\)所指定的策略消除系統不肯定性所須要付出的努力大小)。
假設隨機變量\(X\)能夠取到\(n\)個值。如今有關於樣本集的兩個機率分佈\(p(X=x_i)\)和\(q(X=x_i)\),其中\(p(X=x_i)\)爲真實分佈,\(q(X=x_i)\)非真實分佈。若是用真實分佈\(p(X=x_i)\)來衡量識別別一個樣本所須要編碼長度的指望(平均編碼長度)爲:
\[ \begin{align} H(p) & = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{p(X=x_i)}} \\ & = - \sum_{i=1}^n p(X=x_i)\log{p(X=x_i)} \end{align} \]
若是使用非真實分佈\(q(X=x_i)\)來表示來自真實分佈\(p(X=x_i)\)的平均編碼長度,則是:
\[ H(p,q) = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{q(X=x_i)}} \]
由於用\(q(X=x_i)\)來編碼的樣原本自於分佈\(q(X=x_i)\),因此\(H(p,q)\)中的機率是\(p(X=x_i)\),此時就將\(H(p,q)\)稱之爲交叉熵。
舉個例子。考慮一個隨機變量\(X\),真實分佈\(p(X)=({\frac{1}{2}},{\frac{1}{4}},{\frac{1}{8}},{\frac{1}{8}})\),非真實分佈\(q(X)=({\frac{1}{4}},{\frac{1}{4}},{\frac{1}{4}},{\frac{1}{4}})\),則\(H(p)=1.75bits \text{最短平均碼長}\),交叉熵
\[ H(p,q)={\frac{1}{2}}\log_24+{\frac{1}{4}}\log_24+{\frac{1}{8}}\log_24+{\frac{1}{8}}\log_24=2bits \]
由此能夠看出根據非真實分佈\(q(X=x_i)\)獲得的平均碼長大於根據真實分佈\(p(X=x_i)\)獲得的平均碼長,但這種大因而個例仍是老是會這樣呢?
此處化簡一下相對熵的公式。
\[ \begin{align} DKL(p||q) & = \sum_{i=1}^np(X=x_i)\log{\frac{p(X=x_i)}{q(X=x_i)}} \\ & = \sum_{i=1}^np(X=x_i)\log{p(X=x_i)}−p(X=x_i)\log{q(X=x_i}) \end{align} \]
若是此時聯立熵的公式和交叉熵的公式
\[ \begin{align} 熵 & = H(p) \\ & = −\sum_{i=1}^np(X=x_i)\log{p(X=x_i)} \end{align} \]
\[ \begin{align} 交叉熵 & = H(p,q) \\ & = \sum_{i=1}^n p(X=x_i)\log{\frac{1}{q(X=x_i)}} \\ & = −\sum_{i=1}^np(X=x_i)\log{q(X=x_i)} \end{align} \]
便可推出
\[ DKL(p||q)=H(p,q)−H(p) \]
經過上述公式能夠得出當用非真實分佈\(q(x)\)獲得的平均碼長比真實分佈\(p(x)\)獲得的平均碼長多出的比特數就是相對熵。
又由於\(DKL(p||q)≥0\),則\(H(p,q)≥H(p)\),當\(p(x)=q(x)\)時,此時交叉熵等於熵。
而且當\(H(p)\)爲常量時(注:在機器學習中,訓練數據分佈是固定的),最小化相對熵\(DKL(p||q)\)等價於最小化交叉熵 \(H(p,q)\)也等價於最大化似然估計。
假設有隨機變量\((X,Y)\),信息增益表示特徵\(X\)的信息而使得類\(Y\)的信息不肯定性減小的程度。
特徵\(A\)對訓練集\(D\)的信息增益記做\(g(D,A)\),則能夠把該信息增益定義爲集合\(D\)的經驗熵與特徵\(A\)給定條件下\(D\)的經驗條件熵\(H(D|A)\)之差
\[ g(D,A) = H(D) - H(D|A) \]
其中\(H(D)\)表示對數據集\(D\)進行分類的不肯定性;\(H(D|A)\)表示在特徵\(A\)給定的條件下對數據集\(D\)進行分類的不肯定性;\(g(D,A)\)表示因爲特徵\(A\)而使得對數據集\(D\)的分類的不肯定性減小的程度。所以能夠發現對於數據集\(D\)而言,信息增益依賴於特徵,不一樣的特徵每每具備不一樣的信息增益,信息增益大的特徵具備更強的分類能力。
假設有隨機變量\((X,Y)\),特徵\(A\)對數據集\(D\)的信息增益比記做\(g_R(D,A)\),定義爲
\[ g_R(D,A) = {\frac{g(D,A)}{H_A(D)}} \]
其中特徵熵\(H_A(D) = -\sum_{i=1}^n {\frac{D_i}{D}} \log_2 {\frac{D_i}{D}}\),\(n\)是特徵\(A\)的取值個數。
假設有隨機變量\((X,Y)\),\(H(X)\)表示\(X\)的熵,\(H(Y)\)表示\(Y\)的熵,\(H(X|Y)\)表示已知\(Y\)時\(X\)的條件熵,\(H(Y|X)\)表示已知\(X\)時\(Y\)的條件熵,\(I(X,Y)\)表示信息增益,\(H(X,Y)\)表示的聯合熵。