聚類是機器學習中一種重要的 <font color=red>無監督算法</font>,它能夠將數據點歸結爲一系列特定的組合。理論上歸爲一類的數據點具備相同的特性,而不一樣類別的數據點則具備各不相同的屬性。在數據科學中聚類會從數據中發掘出不少分析和理解的視角,讓咱們更深刻的把握數據資源的價值、並據此指導生產生活。git
基於不一樣的學習策略,聚類算法可分爲多種類型: github
K均值算法(K-means)
k-means算法是一種簡單的迭代型聚類算法,採用距離做爲類似性指標,從而發現給定數據集中的K個類,且每一個類的中心是根據類中全部值的均值獲得,每一個類用聚類中心來描述。 K均值聚類的基本思想是,經過迭代方式尋找K個簇的一種劃分方案,使得聚類結果對應的代價函數最小。其代價函數能夠定義爲各個樣本距離所屬簇中心點的偏差平方和: $$ J(c,\mu) = \sum_{i=1}^M {||x_i- \mu_{c_i}||}^2 $$ 其中$x_i$表明第$i$個樣本,$c_i$是$x_i$所屬於的簇,$\mu_{c_i}$表明簇對應的中心點,$M$是樣本總數。算法
算法流程
K-means是一個反覆迭代的過程,算法分爲四個步驟: 1) 選取數據空間中的K個對象做爲初始中心,每一個對象表明一個聚類中心; 2) 對於樣本中的數據對象,根據它們與這些聚類中心的歐氏距離,按距離最近的準則將它們分到距離它們最近的聚類中心(最類似)所對應的類; 3) 更新聚類中心:將每一個類別中全部對象所對應的均值做爲該類別的聚類中心,計算目標函數的值; 4) 判斷聚類中心和目標函數的值是否發生改變,若不變,則輸出結果,若改變,則返回2)。框架
優缺點
-
K均值算法的優勢有:機器學習
- 相對可伸縮和高效,計算複雜度是O(NKt)接近於線性,其中N是數據數目,K是聚類簇數,t是迭代輪數。。
- 能夠靈活地設置約束條件,經過約束條件的多少能夠調節模型對未知數據的適應度和對已知數據的擬合程度。
-
K均值算法的缺點有:函數
- 容易受初值和離羣點的影響,每次結果不穩定,須要人工預先肯定初始K值
- 結果一般不是全局最優而是局部最優
- 沒法很好的解決數據簇分佈差異比較大的狀況
- 樣本點只能劃分到單一的類中
調優
* 數據歸一化和離散點處理 * 合理選擇K值(手肘法(拐點)) * 採用核函數
tensorflow版代碼見:github學習
高斯混合模型(GMM)
高斯混合模型(GMM)的核心思想是,假設數據能夠看做從多個高斯分佈中生成出來的。在該假設下,咱們須要尋找每一個單獨的分模型的均值、方差以及權重。採用EM算法框架來求解該優化問題。EM算法是在最大化目標函數時,先固定一個變量使總體函數變成凸優化函數,求導獲得最值,而後利用最優參數更新被固定的變量,進入下一循環。具體到高斯混合模型的求解,EM算法的迭代過程以下: 首先,初始隨機選擇各參數的值。而後,重複下面兩步,直到收斂: (1)E步驟,根據當前參數,計算每一個點由分模型生成的機率 (2)M步驟,使用E步驟估計出的機率,來改進每一個分模型的均值,方差和權重。優化
高斯混合模型與K均值算法相同點: 1.都是可用於聚類的算法 2.都須要指定K值 3.都是使用EM算法來求解 4.都每每只能收斂於局部最優url
不一樣點: 1.混合高斯模型能夠給出一個樣本屬於某類的機率是多少 2.不單單能夠用於聚類,還能夠用於機率密度的估計 3.能夠用於生成新的樣本點spa
DBSCAN密度聚類算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具備噪聲的基於密度的聚類方法)是一種很典型的密度聚類算法,和K-Means,BIRCH這些通常只適用於凸樣本集的聚類相比,DBSCAN既能夠適用於凸樣本集,也能夠適用於非凸樣本集。 DBSCAN是一種基於密度的聚類算法,這類密度聚類算法通常假定類別能夠經過樣本分佈的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本週圍不遠處必定有同類別的樣本存在。 經過將緊密相連的樣本劃爲一類,這樣就獲得了一個聚類類別。經過將全部各組緊密相連的樣本劃爲各個不一樣的類別,則咱們就獲得了最終的全部聚類類別結果。 DBSCAN算法將數據點分爲三類: 1.核心點:在半徑Eps內含有超過MinPts數目的點。 2.邊界點:在半徑Eps內點的數量小於MinPts,可是落在覈心點的鄰域內的點。 3.噪音點:既不是核心點也不是邊界點的點。
算法流程
1.將全部點標記爲核心點、邊界點或噪聲點; 2.刪除噪聲點; 3.爲距離在Eps以內的全部核心點之間賦予一條邊; 4.每組連通的核心點造成一個簇; 5.將每一個邊界點指派到一個與之關聯的核心點的簇中(哪個核心點的半徑範圍以內)。