前言(可以略過)
? ? ? ? 最近在看的是關于聚類的論文,之前對聚類的步驟和相關內容不太了解,為了讀懂論文就去學習了一下,這里將自己的理解記錄下來。學習的不全面,主要是為了看懂論文,后續如果有涉及到聚類的,會再補充的,題目就先這樣寫嘍。
聚類分析
????????聚類分析(Clustering)是無監督學習中的一種重要技術,它將數據集中的對象(或數據點)根據某些相似性度量,自動地分成多個組或類別。每個組中的對象彼此相似度高,而不同組之間的對象相似度較低
常用的相似度度量方法包括:
- 歐氏距離(Euclidean Distance):適用于數值型數據,度量兩個點在多維空間中的距離。
- 曼哈頓距離(Manhattan Distance):度量點之間的城市街區距離,適用于不同特征之間差異較大的情況。
- 余弦相似度(Cosine Similarity):度量兩個向量之間的角度,常用于文本數據中,特別是計算文檔或單詞之間的相似度。
- 皮爾遜相關系數(Pearson Correlation):度量兩個變量之間的線性相關性。
聚類方法
????????常見的聚類算法可以分為幾類:基于劃分的聚類、基于層次的聚類、基于密度的聚類和基于網格的聚類。每種方法有不同的優缺點,適用于不同類型的數據。
- 基于劃分的聚類:K-means算法
- 基于層次的聚類:層次聚類算法
- 基于密度的聚類:DBSCAN算法
- 基于網格的聚類:STING算法
聚類實現
????????所以聚類的目標是將數據點劃分為若干組(稱為“簇”),使得同一組內的數據點相似,而不同組之間的數據點不相似。為了實現這一目標,我們需要:
1.定義數據點之間的相似性。
2.基于相似性構建數據點的圖結構。
3.通過分析圖結構來劃分數據點
? ? ? ? 在定義數據點相似性時,會用到一些常見的相似性度量,比如歐氏距離的負指數:,相似性矩陣?S?是一個?n×n的矩陣,其中?Sij表示數據點?xi 和?xj 之間的相似性(當然這個相似性度量還有很多,也可以自己創新)。根據定義的相似性度量,計算所有數據點之間的相似性,就構建出了相似矩陣?S。相似矩陣?S?反映了數據點之間的局部關系,相似性越高的點越可能屬于同一個簇。
? ? ? ? 之后就要基于相似矩陣S構建拉普拉斯矩陣,拉普拉斯矩陣描述了圖的全局結構,特別是連通性。拉普拉斯矩陣的秩與圖的連通分量數量直接相關。對拉普拉斯矩陣L進行特征分解,得到特征向量,選擇前k個最小的特征值對應的特征向量,將數據映射到一個低維空間,隨后對特征向量進行聚類(如使用K-means算法),得到最終的聚類結果。
,
其中:?
是度矩陣,