如何計算純度?
在聚類分析中,我們如何計算純度?方程是什麼?
我不是在尋找代碼來為我做這件事。
讓是簇 k,並且成為 j 類。
那麼純度實際上是準確的嗎?它看起來像是在對樣本大小上每個集群的真正分類類別的數量求和。
問題是輸出和輸入之間的關係是什麼?
如果有真陽性(TP)、真陰性(TN)、假陽性(FP)、假陰性(FN)。是嗎?
在聚類分析的背景下,純度是聚類質量的外部評價標準。 它是在單位範圍 [0..1] 內正確分類的對象(數據點)總數的百分比。
$$ Purity = \frac 1 N \sum_{i=1}^k max_j | c_i \cap t_j | $$
在哪裡 $ N $ =對像數(數據點), $ k $ = 聚類數, $ c_i $ 是一個簇 $ C $ , 和 $ t_j $ 是具有最大集群計數的分類 $ c_i $
當我們說“正確”時,這意味著每個集群 $ c_i $ 已將一組對象識別為基本事實所指示的同一類。我們使用ground truth分類 $ t_i $ 這些對像作為分配正確性的度量,但是要這樣做,我們必須知道哪個集群 $ c_i $ 映射到哪個ground truth分類 $ t_i $ . 如果它是 100% 準確的,那麼每個 $ c_i $ 將映射到 1 $ t_i $ , 但實際上我們的 $ c_i $ 包含一些點,其基本事實將它們分類為其他幾個分類。自然地,我們可以看到,通過使用 $ c_i $ 到 $ t_i $ 具有最多正確分類的映射,即 $ c_i \cap t_i $ . 那是 $ max $ 來自等式。
計算純度首先創建你的混淆矩陣 這可以通過遍歷每個集群來完成 $ c_i $ 併計算有多少對像被分類為每個類別 $ t_i $ .
| T1 | T2 | T3 --------------------- C1 | 0 | 53 | 10 C2 | 0 | 1 | 60 C3 | 0 | 16 | 0
然後對於每個集群 $ c_i $ ,從其行中選擇最大值,將它們相加,最後除以數據點的總數。
Purity = (53 + 60 + 16) / 140 = 0.92142