機器學習動手做Lesson 27 — 含有標籤時的集成分群效能評估法

施威銘研究室
4 min readApr 25, 2022

--

集成式學習(Ensemble Learning)是機器學習(Machine Learning)領域常見的技術,很多文章都討論如何集成監督式(Supervised)學習演算法,但是卻滿少文章提到集成非監督式(Unsupervised)學習演算法。施威銘研究室過去用了 8 篇文章,分別探討集成分群演算法的方法:Majority VoteIterative Voting ConsensusIterative Probabilistic Voting ConsensusIterative Pairwise Consensus,以及評量集成效果的指標:Symmetric DistanceRand DistanceVariation of Information DistanceCompactness。今天,我們要來介紹如果分群(Clustering)問題中,資料含有標籤(Label),可以怎麼評估集成分群的效果。

一、準確率(Accuracy)

在討論準確率應用在分群演算法之前,我們先來看看監督式學習的狀況。監督式學習當中,常見的評價指標之一是準確率。這個方法其實就是評量模型預測正確的資料筆數,佔所有資料的比例為多少。我們現在來看一個範例:

很顯然這個模型的準確率為 70 %。

二、分群中的準確率

現在,我們要來應用準確率到分群演算法中。這裡馬上會遇到一個問題:分群演算法的結果中,子群的索引是隨意指定,所以我們沒辦法直接比較子群索引跟標籤。舉例來說,同樣都是標籤 A 的 2 筆資料,如果分群演算法將這 2 筆資料都放在子群 A,那我們會說這個分群演算法正確處理這 2 筆資料。但是,如果分群演算法把這 2 筆資料都放在子群 B,那這個分群演算法依然正確處理了這 2 筆資料,然而直接比較子群索引跟標籤卻會得到錯誤的結果。

為了解決這個問題,我們套用準確率到分群演算法時,需要對準確率的計算方法做一些修改:

這是什麼意思呢?其實很簡單,我們直接看想要加總的項目:

這個意思是,在某一個子群 Ck 當中,看看哪一個標籤出現最多次,該次數就是計算結果。接著,我們對每一個子群都做同樣的事情,全部加總起來。最後,除以總資料數,就是分群演算法中的準確率囉。

三、Python 程式

以下程式是計算分群的準確率,外面的迴圈,是要針對每一個子群找出哪個標籤最多;裡面的迴圈則是尋找出現最多的標籤。

def get_accuracy(y, p, n_clusters):

score = 0
L = np.zeros(n_clusters)

for i in range(n_clusters):
for j in range(n_clusters):
L[j] = sum([1 for k in range(len(y))
if ((y[k] == j)and(p[k] == i))])
score = score + max(L)

return score / len(y)

參考資料

Nguyen, Nam & Caruana, Rich. (2007). Consensus Clusterings. Proceedings — IEEE International Conference on Data Mining, ICDM. 607–612.

關於作者

Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.

--

--

施威銘研究室
施威銘研究室

Written by 施威銘研究室

致力開發AI領域的圖書、創客、教具,希望培養更多的AI人才。整合各種人才,投入創客產品的開發,推廣「實作學習」,希望實踐學以致用的理想。

No responses yet