簡介
首先必須明確,分類和聚類是兩個不同的東西。
分類的目的是確認(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é)表示


>>> 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é)表示

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

再說明一次,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é)表示

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

>>> 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é)表示

優(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é)表示

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


優(yōu)點
簇緊湊且分離度高時分?jǐn)?shù)更高。
缺點
凸簇比其他類型的簇分?jǐn)?shù)更高。比如基于密度的 DBSCAN 算法在這種情況下表現(xiàn)更好。
除了上述指標(biāo)外,在分析聚類算法效果優(yōu)劣時,還要討論算法處理噪聲的能力,對數(shù)據(jù)維度是否敏感,對數(shù)據(jù)密度是否有要求等。