原型聚類&&密度聚類&&層次聚類

1.原型聚類

原型聚類算法假設聚類結構可以通過一組原型刻畫,通常算法先會對原型進行初始化,然後對原型進行迭代更新求解。不同的原型表示和不同的求解方式會產生不同的算法。

下面主要介紹三種典型的原型聚類算法:k 均值、學習向量量化 和 高斯混合聚類。

1.1K-均值

1.2學習向量量化

與 k 均值算法不同,學習向量量化(LVQ)的學習過程中會利用樣本的類別信息,所以 LVQ 是一種監督式的聚類算法。其目標是學得一組原型向量,每一個原型向量代表一個聚類簇標記。

算法步驟

輸入:訓練集 D,聚類簇數量 p
輸出:p 個原型向量
(1) 初始化原型向量;
(2) 計算距離:在訓練集 D 中隨機抽取一個樣本 xj,分別計算該樣本與各個原型向量間的距離,然後找出最近的原型向量 pi;
(3) 重置均值向量:如果樣本 xj 與原型向量 pi 的類別相同,則讓原型向量靠近樣本xj ,否則遠離:

(4) 迭代求解:迭代 (2)、(3) 直至原型向量更新很小或者迭代次數到達上限爲止。返回原型向量。

1.3高斯混合聚類

高斯混合聚類的步驟:首先假設樣本集具有一些規律,包括可以以α參數作爲比例分爲k類且每類內符合高斯分佈。然後根據貝葉斯原理利用極大似然法同時求出決定分類比例的α和決定類內高斯分佈的μ、Σ。最後將樣本根據α、μ、Σ再次通過貝葉斯原理求出樣本該分在哪個簇。

高斯混合聚類採用概率模型來表達聚類原型。換句話說,GMM聚類方法最終得到的是樣本屬於每個類別的概率,而不是像K均值那樣將它直接歸化爲某一類別,因此也稱爲軟聚類。

2.密度聚類

DBSCAN算法

3.層次聚類(Hierarchical clustering)

1)層次法(Hierarchicalmethods)先計算樣本之間的距離。每次將距離最近的點合併到同一個類。然後,再計算類與類之間的距離,將距離最近的類合併爲一個大類。不停的合併,直到合成了一個類。其中類與類的距離的計算方法有:最短距離法,最長距離法,中間距離法,類平均法等。比如最短距離法,將類與類的距離定義爲類與類之間樣本的最短距離。

層次聚類算法根據層次分解的順序分爲:自下底向上和自上向下,即凝聚的層次聚類算法和分裂的層次聚類算法(agglomerative和divisive),也可以理解爲自下而上法(bottom-up)和自上而下法(top-down)。自下而上法就是一開始每個個體(object)都是一個類,然後根據linkage尋找同類,最後形成一個“類”。自上而下法就是反過來,一開始所有個體都屬於一個“類”,然後根據linkage排除異己,最後每個個體都成爲一個“類”。這兩種路方法沒有孰優孰劣之分,只是在實際應用的時候要根據數據特點以及你想要的“類”的個數,來考慮是自上而下更快還是自下而上更快。至於根據Linkage判斷“類”的方法就是最短距離法、最長距離法、中間距離法、類平均法等等(其中類平均法往往被認爲是最常用也最好用的方法,一方面因爲其良好的單調性,另一方面因爲其空間擴張/濃縮的程度適中)。爲彌補分解與合併的不足,層次合併經常要與其它聚類方法相結合,如循環定位。

2)Hierarchical methods中比較新的算法有BIRCH(Balanced Iterative Reducingand Clustering Using Hierarchies利用層次方法的平衡迭代規約和聚類)主要是在數據量很大的時候使用,而且數據類型是numerical。首先利用樹的結構對對象集進行劃分,然後再利用其它聚類方法對這些聚類進行優化;ROCK(A Hierarchical ClusteringAlgorithm for Categorical Attributes)主要用在categorical的數據類型上;Chameleon(A Hierarchical Clustering AlgorithmUsing Dynamic Modeling)裏用到的linkage是kNN(k-nearest-neighbor)算法,並以此構建一個graph,Chameleon的聚類效果被認爲非常強大,比BIRCH好用,但運算複雜度很高,O(n^2)。

算法流程:

(1) 將每個對象看作一類,計算兩兩之間的最小距離;

(2) 將距離最小的兩個類合併成一個新類;

(3) 重新計算新類與所有類之間的距離;

(4) 重複(2)、(3),直到所有類最後合併成一類。

聚類的效果如下圖,黑色是噪音點:

另外我們可以看出凝聚的層次聚類並沒有類似基本K均值的全局目標函數,沒有局部極小問題或是很難選擇初始點的問題。合併的操作往往是最終的,一旦合併兩個簇之後就不會撤銷。當然其計算存儲的代價是昂貴的。
 

優缺點:

優點:1,距離和規則的相似度容易定義,限制少;2,不需要預先制定聚類數;3,可以發現類的層次關係;4,可以聚類成其它形狀

缺點:1,計算複雜度太高;2,奇異值也能產生很大影響;3,算法很可能聚類成鏈狀

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章