無監(jiān)督學(xué)習(xí) - 聚類度量指標(biāo)

簡介

首先必須明確,分類和聚類是兩個不同的東西

分類的目的是確認(rèn)數(shù)據(jù)屬于哪個類別。分類必須有明確的邊界,或者說分類是有標(biāo)準(zhǔn)答案的。通過對已知分類數(shù)據(jù)進行訓(xùn)練和學(xué)習(xí),找出已知分類特征,再對未知分類的數(shù)據(jù)進行分類。因此分類通常是有監(jiān)督學(xué)習(xí)
聚類的目的是找出數(shù)據(jù)間的相似之處。聚類對邊界的要求不是很高,是開放性命題。聚類只使用無標(biāo)簽數(shù)據(jù),通過聚類分析將數(shù)據(jù)聚合成幾個,因此采用無監(jiān)督學(xué)習(xí)算法
現(xiàn)在的做法是先用無監(jiān)督聚類對數(shù)據(jù)進行聚類,把聚類效果結(jié)合實際進行評估,然后小部分?jǐn)?shù)據(jù)進行標(biāo)注,送到分類器分類,這也就是半監(jiān)督學(xué)習(xí)。

有監(jiān)督分類學(xué)習(xí)算法在學(xué)術(shù)界已經(jīng)有非常詳盡的理論化的評價指標(biāo),例如正確率,召回率,精準(zhǔn)率,ROC曲線AUC曲線。但是關(guān)于無監(jiān)督學(xué)習(xí)的聚類評價指標(biāo)在教材上尚無統(tǒng)一表述。根據(jù) Sk-learn 官方文檔結(jié)合現(xiàn)有資料做一個總結(jié)。需要說明的是沒有哪一種指標(biāo)是萬能的,正如沒有哪一種聚類算法是萬金油.

聚類效果的衡量指標(biāo)分為兩大類,一類是外部信息評價,一類是內(nèi)部信息評價。

評價聚類效果的好壞,才能確定聚類能否被應(yīng)用到實際中做進一步處理。度量聚類結(jié)果的好壞不是簡單地統(tǒng)計錯誤的數(shù)量,比如極端情況下,聚類算法把要分類的每一個文檔都劃分為一個類,那么錯誤數(shù)量為零,能代表這個聚類算法是最優(yōu)的嗎?這里的統(tǒng)計錯誤數(shù)量實際上就是去分析外部信息,靠人去判斷樣本是不是劃分類準(zhǔn)確,但是數(shù)據(jù)量增大了,比如增大到 10w+ 篇文章還能靠人去逐個判斷嗎?

外部信息指標(biāo)

除了上面的準(zhǔn)確率外,筆者另外選出比較容易操作的幾個指標(biāo)。
假設(shè)數(shù)據(jù)已經(jīng)標(biāo)注完畢,作為參考簇C,算法聚類形成簇D,樣本總數(shù)為 m。下面以D作為Different的縮寫,S為Same的縮寫。那么,
a = 在C中為相同簇在D中為相同簇的樣本數(shù)量(SS)
b = 在C中為相同簇在D中為不同簇的樣本數(shù)量(SD)
c = 在C中為不同簇在D中為相同簇的樣本數(shù)量(DS)
d = 在C中為不同簇在D中為不同簇的樣本數(shù)量(DD)

調(diào)整后的 Rand 指數(shù)(Adjusted Rand Index,ARI)

這個指標(biāo)用于測量標(biāo)注的樣本(labels_true,C)與預(yù)測的樣本(labels_pred,D)之間的相似度,忽略樣本的排列順序,標(biāo)簽的命名對結(jié)果無影響,同時由于該指標(biāo)是對稱的,交換參數(shù)不影響得分。

數(shù)學(xué)表示

Rand Index

Adjusted Rand Index
>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24242424242424246

# Exchange Position
>>> labels_pred = [0, 1, 0, 1, 2, 2]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24242424242424246

# Alter Tag Name
>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24242424242424246

# Exchange Parameter Position
metrics.adjusted_rand_score(labels_pred, labels_true)
0.24242424242424246

優(yōu)點:

  • 范圍有界,[-1, 1],值越大聚類效果越好。
  • 隨機標(biāo)簽獲得接近 0 的值。
  • 對簇的結(jié)果不需要做任何假設(shè)。

缺點:

  • 實際操作中大數(shù)據(jù)量基本不可用,需要人工標(biāo)注。

Fowlkes-Mallows 指數(shù)(Fowlkes-Mallows index,F(xiàn)MI)

這個指標(biāo)被定義為成對的準(zhǔn)確率(pairwise precision )與召回率(recall)的幾何平均值

數(shù)學(xué)表示

FMI

如果用前面假設(shè)的字母表示,則表示為


FMI

再說明一次,a就是SS,b就是SD,c就是DS,d就是DD。FMI 與 ARI 一樣忽略樣本的排列順序,標(biāo)簽的命名對結(jié)果無影響。

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.fowlkes_mallows_score(labels_true, labels_pred)  
0.47140...

>>> labels_pred = [1, 1, 0, 0, 3, 3]
>>> metrics.fowlkes_mallows_score(labels_true, labels_pred)  
0.47140...

優(yōu)點與缺點和 ARI 基本一致,不過 FMI 的范圍是 0 到 1。

Jaccard 指數(shù)

這個指標(biāo)用于量化兩個數(shù)據(jù)集之間的相似性,1表示兩個數(shù)據(jù)集是相同的,0則表示二者沒有共同的元素。
數(shù)學(xué)表示

Jaccard

按前面的假設(shè),也可以是
image.png

>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>> metrics.jaccard_similarity_score(labels_pred, labels_true)
0.5

內(nèi)部信息指標(biāo)

上面外部信息評價指標(biāo)的缺點均為人工標(biāo)注在大規(guī)模數(shù)據(jù)下不可行,因此,我們需要借助其他的數(shù)字指標(biāo),來分析聚類的內(nèi)部信息。聚類是為了讓同一個簇內(nèi)樣本盡可能的近,不同簇的樣本盡可能遠(yuǎn)(類內(nèi)高聚合、類間低耦合)。理想情況下,我們希望每個簇只包含一個類的成員(也就是所謂的同質(zhì)性homogeneity)),給定類的所有成員都分配給同一個簇(也就是所謂的完整性completeness))。

從上面的表述中,在沒有已標(biāo)注數(shù)據(jù)的情況下,需要尋找能表達(dá)聚類緊湊度和分離度的內(nèi)部信息指標(biāo)。

輪廓系數(shù)(Silhouette Coefficient )

輪廓系數(shù)由兩個得分組成,一是樣本與同一個簇中其他點之間的平均距離(記為a)。二是樣本與下一個距離最近的簇中其他點的平均距離(記為b),根據(jù)公式計算出單個樣本的輪廓系數(shù),然后計算整組的輪廓系數(shù)平均值。

數(shù)學(xué)表示

單個樣本輪廓系數(shù)

優(yōu)點
簇緊湊且分離度高時分?jǐn)?shù)更高。
缺點
凸簇比其他類型的簇分?jǐn)?shù)更高。比如基于密度的 DBSCAN 算法在這種情況下表現(xiàn)更好。
這里的凸簇如果降維到一定程度,會接近于凸集。根據(jù)定義,對于集合內(nèi)的每一對點,連接該對點的直線段上的每個點也在該集合內(nèi)。凸集的邊界總是凸曲線。

Calinski-Harabaz 指數(shù)

此指標(biāo)又被稱為方差比標(biāo)準(zhǔn)(Variance Ratio Criterion),定義為簇內(nèi)色散平均值(dispersion,量化一組事件是聚類還是分散的度量)與簇間色散的比值。
數(shù)學(xué)表示

CHI

其中,k表示聚類的數(shù)目,N為數(shù)據(jù)的點數(shù),Tr(Bk)為簇內(nèi)色散矩陣的跡,Tr(Wk)為簇間色散矩陣的跡。Cq為簇q的點集,cq為簇q的中心店,nq為簇q的點數(shù)。


Wk

Bk

優(yōu)點
簇緊湊且分離度高時分?jǐn)?shù)更高。
缺點
凸簇比其他類型的簇分?jǐn)?shù)更高。比如基于密度的 DBSCAN 算法在這種情況下表現(xiàn)更好。


除了上述指標(biāo)外,在分析聚類算法效果優(yōu)劣時,還要討論算法處理噪聲的能力,對數(shù)據(jù)維度是否敏感,對數(shù)據(jù)密度是否有要求等。

Reference

  1. 無監(jiān)督聚類算法該如何評價
  2. Clustering performance evaluation
  3. 凸集 - 百度百科
  4. Understanding of Internal Clustering Validation Measures
  5. calinski_harabaz_score
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 聚類算法 前面介紹的集中算法都是屬于有監(jiān)督機器學(xué)習(xí)方法,這章和前面不同,介紹無監(jiān)督學(xué)習(xí)算法,也就是聚類算法。在無監(jiān)...
    飄涯閱讀 41,758評論 3 51
  • 1. 章節(jié)主要內(nèi)容 “聚類”(clustering)算法是“無監(jiān)督學(xué)習(xí)”算法中研究最多、應(yīng)用最廣的算法,它試圖將數(shù)...
    閃電隨筆閱讀 5,301評論 1 24
  • 以西瓜書為主線,以其他書籍作為參考進行補充,例如《統(tǒng)計學(xué)習(xí)方法》,《PRML》等 第一章 緒論 1.2 基本術(shù)語 ...
    danielAck閱讀 4,911評論 0 5
  • 小學(xué)四年級的某一天,葉文賓避開大家的視線,從懷中掏出一本書,塞到我書桌的屜里,用手掌握近我耳朵悄悄說:"禁書——莫...
    清風(fēng)流水_5e84閱讀 173評論 0 0
  • (一) 對蒙田而言,某樣?xùn)|西,某處地方,有時便具備了近乎聖餐一般的功能——作為通向早已失去的密切的身體關(guān)係的橋樑。...
    蘿卜閱讀 143評論 0 0

友情鏈接更多精彩內(nèi)容