聚類算法知識點整理

聚類分析能夠解決的問題
數據集可以分爲幾類、每個類別有多少樣本量、不同類別中各個變量的強弱關係如何、不同類別的典型特徵是什麼、基於類別劃分的其他應用(如圖片壓縮)

知識點1:Kmeans流程,時間複雜度,優缺點,影響因素,改進方法
知識點2:KNN訓練邊界、KNN流程、K值選擇方法、應用場景
知識點3:聚類應用場景,分類,原理,評價指標
知識點4:相似性度量、距離度量
聚類
1. K-means聚類
目標:最小化平方誤差E=i=1kxCi||xμi||22 (在sklearn中inertia_參數爲均方差值,越小表示k越好)
對於已有的未標記的樣本,同時給定結果聚類的個數k;目標是把比較接近的樣本歸爲一類,總共得到k個cluster。
Kmeans中初始化k箇中心點(Kmeans對中心點的選取比較敏感)(隨機選擇或指定k個樣本點),然後計算每個樣本到k個選定的樣本中心點的距離,再比較待聚類樣本到初始樣本點的距離,將待聚類的樣本指定爲距離較近的各個類別,重新計算聚類中心;重複迭代以上過程。
收斂條件:
(1)聚類中心不再發生變化
(2)每個樣本到對應聚類中心的距離之和不再有很大的變化
優缺點:
(1)對初始樣本點的選取敏感;對異常點免疫效果不佳;對團狀數據點效果較好,對帶狀效果不好
Kmeans和Kmeans++:前者隨機選點,後者選最遠的K個點作爲初始點
(2)線性增長的聚類算法,不適用於海量數據
改進方法:MiniBatchKMeans: 計算過程中不必使用所有的數據樣本,而是從不同類別的樣本中抽取一部分樣本(而非全部樣本)作爲代表參與聚類算法過程。
數據異常對結果的影響
(1)數據的異常值。需要做異常點的檢測和處理
(2)數據的異常量綱。變量歸一化或者標準化處理
2. LVQ 學習向量量化
過程:初始化原型向量;隨機選取一個有標記的訓練樣本,找出與其距離最近的原型向量,並根據兩者的類別標記是否一直來對原型向量進行相應的更新
停止條件:
(1)達到最大迭代輪數
(2)原型向量更新很小或者不再更新
LVQ是SOM基於監督信息的擴展
【挖個坑,等補充了神經網絡來更新下SOM】
3. DBSCAN密度聚類
簡單來說,就是初始選擇一個點,找它所有在鄰域參數內的樣本點(核心對象),任選一個核心對象,找出其密度可達(即存在一條路徑使路徑上的相鄰的樣本點都在鄰域上)的樣本,直到找不到爲止,則生成第一個樣本。
可以類比成傳銷= =
DBSCAN算法的出發點是基於密度尋找被低密度區域分離的高密度空間。
與Kmeans的比較
對原始數據的分佈規律沒有明顯要求
無需指定聚類數量,對結果的先驗要求不高
DBSCAN可區分核心對象、邊界點和噪音點,因此對噪聲的規律效果好,能有效應對數據噪點
缺點
對於高維問題,基於Eps(半徑)和MinPts(密度)的定義是個很大的問題
當簇的密度變化太大時,聚類結果較差
當數據量增大時,要求較大的內存支持,I/O消耗也很大
4. GMM高斯混合模型
簡單地說,k-means 的結果是每個數據點被 assign 到其中某一個 cluster 了,而 GMM 則給出這些數據點被 assign 到每個 cluster 的概率,又稱作 soft assignment 。
初始參數:樣本點屬於各個高斯函數的概率,以及每個高斯函數的均值和方差(參數隨機給定)
求解過程:
EM算法
E-step: 由已知的均值和方差估算在該參數下的樣本點的分佈
M-step:由樣本點的分佈再求均值和方差
優缺點:
優點:多個分佈的組合,EM求解,速度快,最大似然概率
缺點:對初始化值敏感,容易陷入局部最優,需要指定k個高斯分佈;對非凸分佈數據集效果不好
5. 距離的度量
* 冪距離。針對不同的屬性給予不同的權重值,決定其屬於那個簇
distmk(xi,xj)=(u=1n|xiuxju|p)1r
當r=p時,退化爲閔可夫斯基距離。
* 閔可夫斯基距離
distmk(xi,xj)=(u=1n|xiuxju|p)1p
* 曼哈頓距離:P=1的閔可夫斯基距離。曼哈頓距離取消了歐式距離的平方,因此使得離羣點的影響減弱
* 歐氏距離:P=2的閔可夫斯基距離。歐式距離通常採用的是原始數據,而並非規劃化後的數據,優勢在於新增對象不會影響到任意兩個對象之間的距離。然而,如果對象屬性的度量標準不一樣,對結果影響較大。
* 切比雪夫距離
dist(xi,xj)=Maxu=1n(xiuxju)
* 餘弦相似度。空間中兩個對象的屬性所構成的向量之間的夾角大小
* Pearson相似度。可以描述爲不同對象偏離擬合的中心線程度,可以進一步的理解爲,許多對象的屬性擬合成一條直線或者曲線,計算每個對象相對於這條線的各屬性偏離程度。只能衡量線性相關性。
* Jaccard相似度
* 漢明距離。將同等長度的字符串由其中一個變換到另一個的最小替換次數。
* 相關距離。隨機變量的相似度
ρXY=Cov(X,Y)D(X)D(Y)=E((XEX)(YEY))D(X)D(Y)
6. 在k-means或kNN,我們常用歐氏距離來計算最近的鄰居之間的距離,有時也用曼哈頓距離,請對比下這兩種距離的差別。
歐式距離 是直線距離
曼哈頓距離是在歐幾里得空間的固定直角座標系上兩點所形成的線段對軸產生的投影的距離總和,所以也叫街區距離,就是拐來拐去的距離= =
7. 譜聚類
譜聚類
主要思想:把所有的數據看做空間中的點,這些點之間可以用邊連接起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有數據點組成的圖進行切圖,讓切圖後不同的子圖間邊權重和儘可能的低,而子圖內的邊權重和儘可能的高,從而達到聚類的目的
聚類過程:
(1) 構建相似矩陣S
(2) 根據S構建鄰接矩陣W,構建度矩陣D
[構建鄰接矩陣三種方法\eplison 鄰近,k 鄰近,全連接(引入核函數通常是RBF)]
(3) 計算出拉普拉斯矩陣L並標準化D1/2LD1/2
(4) 計算最小k1 個特徵值所各自對應的特徵向量f
(5) 將各自對應的特徵向量f 組成的矩陣按行標準化,最終組成n×k1 維的特徵矩陣F
(6) 對F 中的每一行作爲一個k1 維的樣本,共n 個樣本,用輸入的聚類方法進行聚類,聚類維數爲k2
(7) 得到簇劃分C(c1,c2,..,ck2)
譜聚類算法的主要優點有:
1)譜聚類只需要數據之間的相似度矩陣,因此對於處理稀疏數據的聚類很有效。這點傳統聚類算法比如K-Means很難做到
2)由於使用了降維,因此在處理高維數據聚類時的複雜度比傳統聚類算法好。
譜聚類算法的主要缺點有:
1)如果最終聚類的維度非常高,則由於降維的幅度不夠,譜聚類的運行速度和最後的聚類效果均不好。
2) 聚類效果依賴於相似矩陣,不同的相似矩陣得到的最終聚類效果可能很不同。


知識點梳理:
知識點1:Kmeans
(1)介紹Kmeans的流程

隨機選取k個點作爲初始質心
repeat
————–將n個樣本點指派到最近的質心
————–更新質心
until 超過迭代次數或者質心不再變化

(2)Kmeans的時間複雜度
O(kTmn) k 是指定的質心個數,T 是迭代次數,m 是樣本維度,n 是樣本數

(3)Kmeans的優缺點
優點:易於實現,時間複雜度低
缺點:對初始質心的選擇敏感、對k選取敏感、只能處理數值形數據、對異常點免疫效果不太好,對非團狀數據點聚類效果不好、因爲採用迭代的方法和初始點選擇容易陷入局部最優解、對樣本輸入順序敏感

(4)Kmeans的改進方法
對k選取敏感,以均方差和爲度量,根據inertia_來選取k的值;
容易陷入局部最優解: 嘗試不同質心、調整迭代次數、找到合適的k
對初始質心選擇敏感:Kmeans++
優化Kmeans:使用kd樹
將所有的觀測實例構建成一顆kd樹,之前每個聚類中心都是需要和每個觀測點做依次距離計算,現在這些聚類中心根據kd樹只需要計算附近的一個局部區域即可。

(5)簡要敘述Kmeans++
k-means++算法選擇初始seeds的基本思想就是:初始的聚類中心之間的相互距離要儘可能的遠。
從輸入的數據點集合中隨機選擇一個點作爲第一個聚類中心
對於數據集中的每一個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離D(x)
選擇一個新的數據點作爲新的聚類中心,選擇的原則是:D(x)較大的點,被選取作爲聚類中心的概率較大
重複2和3直到k個聚類中心被選出來
利用這k個初始的聚類中心來運行標準的k-means算法
從上面的算法描述上可以看到,算法的關鍵是第3步,如何將D(x)反映到點被選擇的概率上,一種算法如下:
先從我們的數據庫隨機挑個隨機點當“種子點”
對於每個點,我們都計算其和最近的一個“種子點”的距離D(x)並保存在一個數組裏,然後把這些距離加起來得到Sum(D(x))。
然後,再取一個隨機值,用權重的方式來取計算下一個“種子點”。這個算法的實現是,先取一個能落在Sum(D(x))中的隨機值Random,然後用Random -= D(x),直到其<=0,此時的點就是下一個“種子點”。
重複2和3直到k個聚類中心被選出來
利用這k個初始的聚類中心來運行標準的k-means算法

(6)Kmeans的影響因素
A.樣本輸入順序;
B.模式相似性測度;
C.初始類中心的選取


知識點2: KNN
(1)KNN的流程
a. 計算訓練樣本和測試樣本中每個樣本點的距離;
b. 對上面所有的距離值進行排序;
c. 選前k個最小距離的樣本;
d. 根據這k個樣本的標籤進行投票,得到最後的分類類別;

(2)KNN中K的選取
a.如果選擇較小的K值,就相當於用較小的領域中的訓練實例進行預測,“學習”近似誤差會減小,只有與輸入實例較近或相似的訓練實例纔會對預測結果起作用,與此同時帶來的問題是“學習”的估計誤差會增大,換句話說,K值的減小就意味着整體模型變得複雜,容易發生過擬合;(斷路)
b.如果選擇較大的K值,就相當於用較大領域中的訓練實例進行預測,其優點是可以減少學習的估計誤差,但缺點是學習的近似誤差會增大。這時候,與輸入實例較遠(不相似的)訓練實例也會對預測器作用,使預測發生錯誤,且K值的增大就意味着整體的模型變得簡單。(短路)
c.K=N,則完全不足取,因爲此時無論輸入實例是什麼,都只是簡單的預測它屬於在訓練實例中最多的累,模型過於簡單,忽略了訓練實例中大量有用信息。
在實際應用中,K值一般取一個比較小的數值,例如採用交叉驗證法(簡單來說,就是一部分樣本做訓練集,一部分做測試集)來選擇最優的K值。

(3)KNN的訓練邊界是坑坑窪窪的,它適用於樣本較多但典型性不好的情況

(4)KNN和Kmeans比較
KNN和Kmeans


知識點3:聚類
(1)聚類原理:相似度度量

(2)聚類評價指標:
分爲內部評價和外部評價,其中內部評價(無真實聚類結果作爲參照)的要求是類內樣本儘可能相似,類間樣本儘可能不同
* 羣體內所有變量的綜合標準差(RMSSTD)
* 羣體間差異指標(R-Square)
* 損失的羣體內相似性比例(SPR)
* 羣體間的距離

(3)聚類的分類:
1. 基於劃分的聚類:K-means,k-medoids,CLARANS。
2. 基於層次的聚類:AGNES(自底向上),DIANA(自上向下)。
3. 基於密度的聚類:DBSACN,OPTICS,BIRCH(CF-Tree),CURE。
4. 基於網格的方法:STING,WaveCluster。
5. 基於模型的聚類:EM,SOM,COBWEB。

(4)應用場景
查看異常值
目標用戶的羣體分類
不同產品間的價值組合
變量聚類還可以處理變量共線性的問題

(5)影響聚類算法結果的主要因素
a.分類準則
b.特徵選取
c.模式相似性測度

(6)聚類方法選擇
如果數據集是高維的,那麼選擇譜聚類,它是子空間劃分的一種
如果數據量爲中小規模,例如100w條以內,那麼K均值將是比較好的選擇;如果超過100w,可以考慮Mini Batch KMeans
如果數據集中有離羣點(噪點),DBSCAN
如果追求更高的分類準確度,譜聚類優於KMeans


知識點4:相似性度量
(1)歐式距離、曼哈頓距離、餘弦距離
一個是直線距離,另外一個是街區距離,還有一個爲餘弦相似度得到。
最常用的是歐式距離。
曼哈頓距離在某些情況下具有更高的穩定性,但是如果數據集中某些特徵值很大,用曼哈頓距離的話,這些特徵會掩蓋其他特徵間的鄰近關係,這種距離在城市道路導航中會用到。
餘弦距離,它適用於特徵向量很多的情況,但是它丟棄了向量長度所包含的在某些場景下可能會很有用的一些信息。

(2)協方差和相關性的區別
相關性是協方差的標準化格式。協方差本身很難做比較。例如:如果我們計算工資($)和年齡(歲)的協方差,因爲這兩個變量有不同的度量,所以我們會得到不能做比較的不同的協方差。爲了解決這個問題,我們計算相關性來得到一個介於-1和1之間的值,就可以忽略它們各自不同的度量。

(3)馬氏距離和歐式距離
馬氏距離是基於卡方分佈的,度量多元outlier離羣點的統計方法,包括座標旋轉和數據壓縮
座標旋轉的目標:使旋轉後的各個維度之間線性無關,所以該旋轉過程就是主成分分析的過程。
數據壓縮的目標:所以將不同的維度上的數據壓縮成爲方差都是1的的數據集。
DM(x)=(xμ)TS1(xμ)
其中μ 爲均值,S 爲協方差矩陣

歐式距離和馬式距離都具有平移不變性和旋轉不變性
但是馬氏距離多了尺度縮放不變性和不受量綱影響的特性(因爲都被均一化了),還考慮了樣本的分佈情況

發佈了196 篇原創文章 · 獲贊 73 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章