信息熵與TF-IDF 學習筆記
- 自信息量
評價一個事件發生所包含的信息量大小,設獨立事件x、y發生概率為p(x)、p(y),包含信息量為I(x)、I(y)
預設信息量的大小一定大於0,並且事件發生的概率越大,所包含的信息量越小,可知
\[I\left( x \right) > = 0,I\left( y \right) > = 0\]
\[如果{\rm{ }}p\left( x \right) > p\left( y \right),則{\rm{ }}I\left( x \right) < I\left( y \right)\]
\[I\left( {x,y} \right) = I\left( x \right) + I\left( y \right)\]
通過上式可得
\[I(x) = - C{\log _D}p(x)\]
其中C、D為常量
- 信息熵
一個變量x,可能有多個取值,每個取值對應一個事件,則變量的信息熵H(x)為x各個事件自信息量的期望
\[H(x) = - \sum\limits_x {p(x)\log (p(x))} \]
當事件只有兩個取值時,信息熵可表示為
\[H(x) = - p\log p - (1 - p)\log (1 - p)\]
求導可知,H(x)的最大點在p=0.5處取得,同樣可證,當事件有多個取值p1,p2,..,pn時,當p1=p2=..=pn=1/n時信息熵最大,具體證明可見參考文獻
- 聯合信息熵(聯合熵)
兩個變量x、y,分別有多個取值,每個取值組合對應一個事件,則聯合信息熵H(x,y)為各個事件組合自信息量的期望
\[H(x,y) = - \sum\limits_x {\sum\limits_y {p(x,y)\log (p(x,y))} } \]
聯合熵評價的是x、y聯合分布的不確定性,可知聯合熵必然不小於x或y單獨發生的不確定性,必然不大於x、y單獨發生的不確定性之和,即
\[H(x,y) < = H(x) + H(y),H(x,y) > = H(x),H(x,y) > = H(y)\]
當x、y相互獨立時
\[H(x,y) = H(x) + H(y)\](x,y) > H(y)\]
當x、y完全相關時
\[H(x,y) = H(x) = H(y)\]
- 條件信息熵(條件熵)
兩個變量x、y,在給定x情況下,y事件發生的不確定性成為條件信息熵
\[H(y|x) = - \sum\limits_x {\sum\limits_y {p(x,y)\log (p(y|x))} } \]
根據條件概率公式可得
\[\begin{array}{l}
H(y|x) = - \sum\limits_x {\sum\limits_y {p(x,y)\log \frac{{p(x,y)}}{{p(x)}}} } \\
= - \sum\limits_x {\sum\limits_y {p(x,y)(\log (p(x,y)) - \log (p(x)))} } \\
= H(x,y) - H(x)
\end{array}\]
可得x確定情況下的條件信息熵,等於x、y聯合的不確定性減去x發生的不確定性
可知
\[H(y|x) = H(x,y) - H(x) < = H(x) + H(y) - H(x) = H(y)\]
- 互信息
互信息定義了事件x確定情況下能給事件y減少的不確定性
\[\begin{array}{l}
I(x;y) = H(y) - H(y|x)\\
= H(y) - (H(x,y) - H(x))\\
= - \sum\limits_x {p(x)\log (p(x))} - \sum\limits_y {p(y)\log (p(y))} + \sum\limits_x {\sum\limits_y {p(x,y)\log (p(x,y))} } \\
= - \sum\limits_x {\sum\limits_y {p(x,y)\log \frac{{p(x)p(y)}}{{p(x,y)}}} }
\end{array}\]
- 上述概念之間的關系
理解下圖即可
- 交叉信息熵(交叉熵)
一個變量x,可能有多個取值,每個取值對應一個事件,事件發生的兩個概率分布分別為p(x)和q(x),為了衡量p(x)與q(x)的差異,提出交叉熵的概念。一般情況下,假設真實概率分布為p(x),模型估計的非真實概率分布為q(x),則衡量非真實概率分布與真實分布的交叉熵為
\[H(p,q) = - \sum\limits_x {p(x)\log (q(x))} \]
根據Gibbs不等式可知
\[H(p,q) = - \sum\limits_x {p(x)\log (q(x))} > = - \sum\limits_x {p(x)\log (p(x))} = H(p)\]
當且僅當q(x)==p(x)時,取等號
因此機器學習模型可以使用交叉熵作為損失函數,損失函數越小,模型預測越接近與真實分布
- 相對熵(KL散度)
相對熵等於交叉熵減去信息熵,在交叉熵最小時,相對熵為0
\[D(p||q) = H(p,q) - H(p) = \sum\limits_x {p(x)\log \frac{{p(x)}}{{q(x)}}} \]
- TF-IDF
TF-IDF(Term Frequency–Inverse Document Frequency)是一種用於信息檢索與數據挖掘的常用加權技術。TF意思是詞頻(Term Frequency),IDF意思是逆文本頻率指數(Inverse Document Frequency)
基本思路是:在某一篇文檔中,一個詞語出現次數越多,越能代表這個文檔(的主題);在所有文檔中,一個詞語出現的次數越多,越不能代表某個文檔(的主題)
TF-IDF的一般計算公式如下,ni代表詞語在當前文檔中的出現次數,m代表當前文檔中所有詞語的總出現次數,Di代表詞語在所有文檔中包含詞語i的個數,D代表文檔總個數
\[\begin{array}{l}
TF = \frac{{{n_i}}}{m}\\
IDF = \log \frac{D}{{{D_i}}}
\end{array}\]
關於相對熵與TF-IDF的關系,其實是相對熵可以給以上TF-IDF計算公式在某種特定條件下的一個數學解釋,從相對熵並不能推導出TF-IDF
如果對於當前文檔,建立模型假設:
- 文檔中每個詞語出現概率完全獨立
- 每個文檔包含相同個數的詞語m
- 每個文檔如果包含某個詞語i,則詞語i出現的概率相同,即包含相同個數個詞語ni
其實假設本身就存在某種矛盾之處,不同文檔包含了不同的詞語,但一個詞語要麽包含ni,要麽不包含,還要保證每個文檔詞語總數相同,那每個詞語出現的概率怎麽可能獨立
假設上面的假設成立,將所有文檔中詞語i的分布記為模型估計的分布q(i),將當期文檔中詞語i的分布記為真實分布p(i),使用相對熵來衡量模型估計分布與真實分布的差距,可得
\[D(p||q) = \sum\limits_x {p(i)\log \frac{{p(i)}}{{q(i)}}} = \sum\limits_x {\frac{{{n_i}}}{m}\log \frac{{{D_i}}}{D}} \]
可以看到式子右邊剛好就是文檔中每個詞的TF-IDF權重之和
相對熵越大,說明分布p(i)與q(i)的差距越大,說明當前文檔指向性越強,與其他大部分文檔差別越大;相對熵越小,說明分布p(i)與q(i)的差距越小,說明當前文檔越像是隨機按分布q(i)選擇詞語堆砌成文
而這正是TF-IDF的初衷,衡量詞語對文章指向性的參考價值
從另一個角度講,TF代表了詞語在當前文檔中出現頻率,IDF代表了詞語在所有文檔中出現這個事件的信息量,如果假設:詞語對文檔指向性的參考價值與詞語在當前文檔中的出現頻率與該詞語出現在當前文檔中的事件的信息量的乘積,也可以得到TF-IDF的計算公式
- 結論
說白了,上述TF-IDF計算公式只是一個比較常用的計算方法而已,通過信息論的相關理論,能夠在某種特定情況下,給出這個計算公式的一個數學解釋,但在實際使用時,還要看實際情況進行調整,只要滿足基本思路——在某一篇文檔中,一個詞語出現次數越多,越能代表這個文檔(的主題);在所有文檔中,一個詞語出現的次數越多,越不能代表某個文檔(的主題)——的算法,都可以嘗試,並不一定比一般TF-IDF算法效果差
參考文獻:
http://www.math345.com/blog/article/17
http://www.cnblogs.com/frombeijingwithlove/p/5931750.html
https://www.zhihu.com/question/41252833
https://en.wikipedia.org/wiki/Gibbs%27_inequality
http://www.cnblogs.com/weidagang2046/archive/2012/10/22/tf-idf-from-probabilistic-view.html
https://www.cnblogs.com/ZisZ/p/8567675.html
https://www.cnblogs.com/ZisZ/p/9083914.html
https://www.cnblogs.com/ZisZ/p/9087921.html
信息熵與TF-IDF 學習筆記