一、聚類演算法中的距離
1. 單個樣本之間的距離
余弦距離
在聚類分析中,一般需要對資料進行標準化,因為聚類資料會受資料量綱的影響。
在sklearn庫中,可呼叫如下方法進行標準化:
1 from sklearn.preprocessing importstandardscaler2 data = standardscaler().fit_transform(data)
這種方法將data的均值和方差儲存下來,並使用它們對資料進行歸一化,這樣,有新的資料輸入時,仍可以沿用data的均值和方差來做歸一化。
【聯】facenet中是採用的l2歸一化,這和每個向量自身相關,而不是和整體資料相關。
在上述距離中,受量綱影響較大的是明氏距離和歐氏距離(明氏距離的特例),馬氏距離和余弦距離則受量綱影響較小。
其中,余弦距離越大(趨近於1),代表兩個向量的方向越接近,相似度越高。
2. 兩個聚類簇之間的距離
二、聚類演算法的評價
評價聚類分群的最佳數量與分群效果。
1. 輪廓係數(silhouette coefficient)
輪廓係數這一指標無需知道資料集的真實標籤。
取值範圍[-1, 1],值越大,聚類效果越好。旨在將某個物件與自己的簇的相似程度和與其他簇的相似程度作比較。輪廓係數最高的簇的數量表示簇的數量的最佳選擇。
輪廓係數綜合考慮了內聚度和分離度兩種因素。
簇內不相似度ai:計算樣本i到所屬簇內其他樣本的平均距離ai,將ai定義為樣本i的簇內不相似度,簇c中所有樣本的ai的均值為簇c的簇不相似度。
簇間不相似度bi:計算樣本i到其他某簇cj的所有樣本的平均距離bij,稱為樣本i與簇cj的不相似度,將bi=min定義為樣本i的簇間不相似度。
樣本i的輪廓係數:
si越接近1,則說明樣本i的聚類合理;si越接近-1,則說明樣本越應該被分到其他簇內;si近似為0,則說明樣本i近似在兩個簇的邊界上。
聚類結果的輪廓係數:所有樣本的si的均值。該係數越大,聚類效果越好。
1 from sklearn importmetrics2 metrics.silhouette_score(data, labels)
2. 調整蘭德指數(adjusted rand index)
蘭德指數需要知道實際的類別資訊c,設k為聚類結果。用a表示在c、k中都是同一類別的元素的對數,用b表示在c、k中都是不同類別的元素的對數,則蘭德指數為
其中表示資料集中可以組成的總的元素對數。ri的取值範圍為[0, 1],值越大,意味著聚類結果與真實情況越吻合。
對於隨機姐u共,ri並不能保證分數接近0。為了實現「在聚類結果隨機產生的情況下,指標應該接近0」,提出了調整蘭德指數,它具有更高的區分度:
ari的取值範圍為[-1, 1],值越大意味著聚類結果與真實情況越吻合。從廣義角度來講,ari衡量的是兩個資料分布的吻合程度。
1 metrics.adjusted_rand_score(labels_true, labels_pred)
3.互資訊(mutual information)
mi也用來衡量兩個資料分布的吻合程度。
假設u與v是對n個樣本的分配情況,則兩種分布的熵分別為
其中則u與v之間的互資訊mi定義為
其中標準化後的互資訊nmi為
與ari類似,調整互資訊(adjusted mutual information)為
mi與nmi的取值範圍為[0, 1],ami的取值範圍為[-1,1],它們都是值越大意味著聚類結果與真實情況越吻合。
1 metrics.adjusted_mutual_info_score(labels_true, labels_pred)
4.同質性(homogeneity),完整性(completeness)和二者的調和平均(v-measure)
同質性:每個簇只包含單個類的成員
完整性:給定類的所有成員都分配給同乙個簇
1 metrics.homogeneity_score(labels_true, labels_pred)2 metrics.completeness_score(labels_true, labels_pred)3 metrics.v_measure_score(labels_true, labels_pred)
5.calinski-harabaz index
資料類內協方差越小越好,類間協方差越大越好,calinski harabaz指數越高。
它和輪廓係數一樣,可以在資料真實標籤不知道的情況下,對聚類效果進行評估。似乎比輪廓係數的計算更快。
1 metrics.calinski_harabaz_score(data, labels)
更多參考:
(2.3.9 clustering performance evaluation,注意advantages&drawbacks)
SAS 聚類分析 K 均值聚類
k 均值方法,有時也叫勞埃德方法或 lioyd forgy 方法。k 均值聚類的核心思想是 為指定劃分數目的最佳劃分。對於 n 個觀測,每個觀測是 m 維的實數向量,現在需要找到 k 個聚類 其中 k n,即 n 個子集 使得每個類別分組內的方差最小化。1.隨機選取 k 個真實 或虛擬的資料點作為初...
機器學習之聚類分析
聚類的核心是相似度或距離,聚類分析中有多種計算距離和相似度的定義 閔可夫斯基距離 d xi xj p 1 p p為大於1的數 python實現為 import numpy as np dt np.random.rand 10 reshape 2,5 minkow len 0p 10 可自行定義 fo...
機器學習 K means聚類分析
1.k means聚類演算法原理 1 先丟擲乙個情景問題 航空公司怎麼樣對客戶分群,區分 值客戶 無價值客戶等,對不同的客戶群體實施個性化的營銷策略,實現利潤最大化?對於該類情景題,可使用聚類分析方法。2 聚類分析相關概念 在沒有給定劃分類別的情況下,根據資料的相似度進行分組的一種方法,分組的原則是...