一、聚類的概念
根據樣本之間的相似性,將樣本劃分到不同的類別中的一種無監督學習算法。
細節:根據樣本之間的相似性,將樣本劃分到不同的類別中;不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。聚類算法的目的是在沒有先驗知識的情況下,自動發現數據集中的內在結構和模式。計算樣本和樣本之間的相似性,一般使用歐式距離。
二、聚類算法分類
根據聚類顆粒度分類:細粒度和粗粒度。
根據實現方法分類:
基于劃分的聚類:K-means算法->按照質心(一個簇的中心位置,通過均值計算)分類;
基于層次的聚類:DIANA(自頂向下)AGNES(自底向上);
基于密度的聚類: DBSCAN算法
......
三、Kmeans算法流程/原理
K值的含義:表示聚類個數,參數n_clusters就是指定k值的。
API:sklearn.cluster.KMeans
流程:1.事先確定常數k,即最終聚類類別數;
? ? ? ? ? ?2.隨機選擇k個樣本作為初始聚類中心;
? ? ? ? ? ?3.計算每個樣本到k個中心的距離,選擇最近的聚類中心點作為標記類別;
? ? ? ? ? ?4.根據每個類別中的樣本點,重新計算出新的聚類中心點(平均值),如果計算得出的新中心點與原中心點一樣則停止聚類,否則重新進行第三步過程,直到聚類中心不在變化或者達到最大迭代次數。
四、聚類評估方法
1.SSE“肘”方法
計算簇內誤差的平方和,SSE越小,聚類效果越好
其中:K 表示聚類中心的個數、Ci 表示簇、p 表示樣本、mi 表示簇的質心
每次聚類完成要計算SSE,SSE會逐漸變小,變化過程中會出現一個拐點(即下降率突然變緩)認為是最佳n_clusters值。
在決定什么時候停止訓練時,肘形判據同樣有效,數據通常有更多的噪音,在增加分類無法帶來更多回報時,我們停止增加類別。
2.SC輪廓系數
綜合考慮簇內的內聚程度與簇間的分離程度,SC越大,聚類效果越好
其中:a是樣本i到同一簇內其他不相似程度的平均值(a越小越好);b是樣本i到其他簇的平均不相似程度的最小值(b越大越好)
3.CH輪廓系數
綜合考慮簇內的內聚程度、簇間的分離程度、質心的個數,CH越大,聚類效果越好
SSW:
Cpi 表示質心、xi 表示某個樣本、SSW 值是計算每個樣本點到質心的距離,并累加起來、SSW 表示表示簇內的內聚程度,越小越好、m 表示樣本數量、k 表示質心個數
SSB:
Cj 表示質心,X 表示質心與質心之間的中心點,nj 表示樣本的個數、SSB 表示簇與簇之間的分離度,SSB 越大越好