聚類算法彙總
標籤(空格分隔): 機器學習
作爲無監督領域(unsupervised)一個太過famous的算法了,聚類(clustering)就是對大量未知標註的數據集,按照數據的內在相似性將數據集劃分爲多個類別,使類別內的數據相似度較大而類別間的數據相似度較小. 然而,裏面仍然有很多需要注意的地方,對於聚類本身,目前也有很多改進版本了,所以還是需要總結一下的。
相似度的度量
各種相似度的度量方式及其相關性見我的這篇博客。
K-means算法
這個算法大家都熟,跟KNN是兄弟,簡單實用易操作,它也是其他一些聚類算法的鼻祖。
具體的步驟爲:
對於輸入樣本
- 選擇初始的K個class center
μ1,μ2,...,μK ; - 對於每個樣本
xi ,將其標記爲距離類別中心最近的類別,即:yi=argmin1≤j≤K||xi−μj|| ; - 將每個類別中心更新爲隸屬該類別的所有樣本的均值:
μj=1|cj|∑i∈cjxi ;
4.重複上述兩步,直至算法收斂。
收斂條件爲:迭代次數/簇中心變化率/最小平方誤差MSE(Minimum Squared Error)
E=∑ki=1∑x∈Ci||x−μi||22
簇類個數怎麼定?
- 根據先驗經驗:如果我們事先已經知道類的類的個數,直接設置即可。
- 增加交叉驗證;
初始的簇類中心怎麼定?
K-means對初始值敏感,有可能會陷入局部最優解,可以優化如下:
1. 先隨機給定1個點,然後計算所有點到這個樣本點的距離,距離越大的樣本被選中做第二個中心點的概率大,距離越小的樣本被選中的概率小;
2. 這樣便有了2個簇類中心點。然後計算所有樣本到這兩個中心點的距離,選擇其他樣本點到這兩個樣本點中較近的距離作爲衡量標準。距離越大被選中的概率越大;
3. 這樣便有了3個簇類中心點。做法依然同上,知道選出k個簇類中心。
(這樣做並不能完全使所有所有的中心店剛好取在不同的簇類中,但是可以一定程度上避免很多樣本點取自同一個簇。而在實踐中,爲了計算方便,可以直接按照距離來計算 —— 隨機選擇一個點,然後選其他中心點時如果選中的點距離該樣本點的距離小於某個閾值,則放棄。)
K-means是一個解決聚類問題的經典算法,簡單有效,但不太適合於發現非凸形狀的簇或者大小差別很大的簇,對噪聲和孤立點比較敏感。
層次聚類
層次聚類是對給定數據集進行層次的分解,直到滿足一定的條件。
- 凝聚的層次聚類:AGNES算法。一種自底向上的策略,首先將每個對象作爲一個簇,然後依次合併那些原子簇使之形成更大的簇,直到滿足一定條件;
- 分裂的層次聚類:DIANA算法。一種自頂向下的策略,首先將所有對象置於一個簇中,然後逐漸細分爲越來越小的簇,直到滿足一定條件。
聚類過程如圖所示:
密度聚類
密度聚類又稱基於密度的聚類(Density-based clustering),此算法假設聚類結構能通過樣本分佈的緊密程度確定。其中,最著名的而一種算法叫做DBSCAN算法(Density-Based Spatial Clustering of Application with Noise).
假設給定數據集
ϵ -鄰域:對於xj∈D ,其鄰域包含樣本即D中與xj 的距離不大於ϵ 的樣本,即Nϵ(xj)=xi∈D|dist(xi,xj)≤ϵ ;- 核心對象(core object):若
xj 的ϵ -鄰域至少包含MinPts個樣本,則xj 是一個核心對象; - 密度直達(directly density-reachable):若
xj 位於xi 的ϵ -鄰域中,且xi 是核心對象,則稱xj 由xi 密度直達; - 密度相連(density-connected):對
xi 與xj ,若存在xk 使得xi 與xj 均由xk 密度可達,則稱xi 與xj 密度相連。
算法流程:
1. 如果一個點p的
2. 尋找併合並核心對象直接密度可達的對象;
3. 沒有新點可以更新簇時,算法結束。
譜聚類
- 譜:方針作爲線性算子,它的所有特徵值的全體統稱爲方針的譜;
- 方陣的譜半徑爲最大的特徵值;
- 矩陣A的譜半徑:
(ATA) 的最大特徵值。
- 矩陣A的譜半徑:
- 譜聚類是一種基於圖論的聚類方法,通過對樣本數據的拉普拉斯矩陣的特徵向量進行聚類從而達到對樣本數據聚類的目的。
假設給定一組數據
下面用相似度圖來解決樣本數據的聚類問題:找到一個圖的劃分,形成若干個組,使得不同組之間有較低的權值,組內有較高的權值。
- 給定無向圖
G=<V,E> ,則可以得到它的鄰接矩陣W=(wij)i,j=1,...,n ,(設置主對角線元素爲0);
- 若兩個點的相似度值越大,表示這兩個點越相似;
- 定義
wij=0 表示vi,vj 兩個點滅有任何相似性;
- 頂點的度di形成度矩陣D(是一個對角陣):
di=∑nj=1wij
- W的第i行元素的和爲
vi 的度; - 除主對角線元素,D的其他位置爲0
- W的第i行元素的和爲
- 未正則的拉普拉斯矩陣:L = D - W
- 正則的拉普拉斯矩陣:
- 對稱拉普拉斯矩陣
Lsym=D−12·L·D12=I−D−12·W·D12
- 對稱拉普拉斯矩陣
譜聚類算法
輸入:n個點
1. 計算n * n的相似度矩陣W和度矩陣D;
2. 計算拉普拉斯矩陣L = D - W;
3. 計算L的前k個特徵向量
4. 將k個列向量
5. 對於
6. 使用k-meas算法將點
7. 輸出簇
譜聚類算法有點像降維算法哦。
可以使用正則化的拉普拉斯矩陣代替算法中未正則過的。