機器學習_學習筆記系列(50):鄰近質心演算法分類(Nearest Centroid Classifier)

--

前四篇我們提到了兩個鄰近演算法,一個是k-Nearest Neighbor以最鄰近的k個數據點做為依據,選出出現過最多次的類別,即為我們所預測的類別。另一個則為Radius Neighbor以半徑R以內的數據點做為依據,選出出現過最多次的類別,即為我們所預測的類別。而今天我們要來講一個新的演算法「Nearest Centroid Classifier」

Nearest Centroid Classifier

關於NCC演算法相較於前面兩個介紹的演算法就稍微比較複雜一點,但是概念上還是很好理解。其第一步就是先找所有類別其各自的質心位置,然後我們可以透過計算各特徵的標準差,標準化輸入資料的位置,最後我們就可以利用質心位置和標準差,計算出此點被分類到每一個類別的分數,最後在選擇最小的那個即為我們的預測值。

所以我們這裡假設我們有一組資料集D,輸入資料為x,輸出資料為y,其總共有N筆,每筆資料有M個features,總共有K個類別。在一開始,我們會計算每個類別在每個feature在的平均值。

以及每個feature的標準差

接著我們就可以計算隨意一個點x*=(x*1, x*2, x*3,…, x*M),他被分到各個類別的分數

所以說我們每筆資料最後都會得到K個分數,然後我們從裡面選出分數最低的那一個,其所對應到的類別即為我們的預測類別。而這裡的s_0通常會設為s_m的中位數,π_k為k類別在所有資料裡面的比例。

接著我們以python實際解決分類問題

我們可以發現,用NCC演算法邊界和kNN、RaN比起來平滑非常多,幾乎可以說是直線了,所以做分類問題時,NCC不失為一個好選擇。

Python Sample Code:

Github:

Reference:

[1] Tibshirani, R., Hastie, T., Narasimhan, B., & Chu, G. (2002). Diagnosis of multiple cancer types by shrunken centroids of gene expression. Proceedings of the National Academy of Sciences of the United States of America, 99(10), 6567–6572. The National Academy of Sciences.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet