Normalized Mutual Information(NMI, 歸一化互資訊)
- 值域是 \([0,1]\),值越高表示兩個聚類結果越相似。歸一化是指將兩個聚類結果的相似性值定量到 \(0\sim 1\) 之間。
\[\text{NMI}=\frac{2\sum_i\sum_jn_{ij}ln\frac{n_{ij}N}{n_in_j}}{-\sum_in_iln\frac{n_i}{N}-\sum_jn_jln\frac{n_j}{N}}
\]
\[\text{NMI(Y,C)}=\frac{2\times I(Y;C)}{H(Y)+H(C)}
\]
- 其中Y代表資料真實的類別;C表示聚類的結果。
- \(H(\cdot)\) 表示資訊熵,\(H(X)=-\sum_{i=1}^N p(i)\log\ p(i)\),此處的 \(log\) 以2為底。
- \(I(Y;C)\) 代表互資訊, \(I(Y;C)=H(Y)-H(Y|C)\) ,互資訊是資訊理論裡的一種資訊度量,可以看成是一個隨機變數中包含的關於另一個隨機變數的資訊量。
例子
假定共有20個樣本,真實類簇為3個,而模型學習得到2個類簇,如下:
-
計算 \(Y\) 的資訊熵 \(H(Y)\)
H(Y) 表示資料真實標籤的交叉熵,它是一個固定的值。可以在聚類之前計算出。
\[\begin{split} H(Y)&=-\sum_{y=1}^3 P(Y=y)logP(Y=y)\\ &=-(\frac{1}{4}log(\frac{1}{4})+\frac{1}{4}log(\frac{1}{4})+\frac{1}{2}log(\frac{1}{2}))\\ &=1.5\ bit \end{split} \] -
計算 \(C\) 的資訊熵
𝐻(𝐶)表示資料聚類後標籤的交叉熵,每得到一個聚類結果都需要計算一下。\[\begin{split} H(C)&=-\sum_{c=1}^3 P(C=c)logP(C=c)\\ &=-(\frac{1}{2}log(\frac{1}{2})+\frac{1}{2}log(\frac{1}{2}))\\ &=1\ bit \end{split} \] -
計算 \(Y\) 和 \(C\) 的互資訊
\[\begin{split} H(Y|C)&=H(Y|C=1)+H(Y|C=2)\\ &=-P(C=1)\sum_{y=1}^3 P(Y=y|C=1)logP(Y=y|C=1)\\ &-P(C=2)\sum_{y=1}^3 P(Y=y|C=2)logP(Y=y|C=2)\\ &=-\frac{1}{2}(\frac{3}{10}log(\frac{3}{10})+\frac{3}{10}log(\frac{3}{10})+\frac{4}{10}log(\frac{4}{10})\\ & +\frac{2}{10}log(\frac{2}{10})+\frac{7}{10}log(\frac{7}{10})+\frac{1}{10}log(\frac{1}{10}))\\ &=1.3639\ bit \end{split} \]\[\begin{split} I(Y;C)&=H(Y)-H(Y|C)\\ &=1.5-1.3639\\ &=0.1361\ bit \end{split} \] -
計算 \(Y\) 和 \(C\) 的歸一化互資訊
\[\begin{split}
\text{NMI(Y,C)}&=\frac{2\times I(Y;C)}{H(Y)+H(C)}\\
&=\frac{2\times 0.1361}{1.5+1}\\
&=0.1089
\end{split}
\]