机器学习笔记: 聚类 模糊聚类与模糊层次聚类(论文笔记 Fuzzy Agglomerative Clustering :ICAISC 2015)
前言:模糊層次聚類是參考了論文“A Spatial-Temporal Decomposition Based Deep Neural Network for TimeSeries Forecasting”中的preliminary部分,我不確定我理解的是否正確,如有不妥之處,還望賜教
1 模糊聚類
1.1 如何理解“模糊”
假設有兩個集合分別是A、B,有一成員a,傳統的分類算法得到的結果中,a要么屬于A要么屬于B;在模糊聚類的概念中,a可以有0.3的概率屬于A,0.7的概率屬于B,這就是其中的“模糊”概念。
1.2 模糊C-means聚類算法 (fuzzy c-means FCM)
????????在眾多模糊聚類算法中,模糊C-均值(FCM)算法應用最廣泛且成功,它通過優化目標函數得到每個樣本點對所有類中心的隸屬度,從而對樣本進行自動分類。
假定我們有數據集X,我們要對X中的數據進行分類,如果把這些數據劃分成c個類的話,那么對應的我們就需要c個類,每個類的中心記為Ci。
1.2.1 目標函數和約束條件
我們將每個樣本Xj屬于某一類Ci的隸屬度定為Uij,那么定義一個FCM目標函數及其約束條件如下:
????????目標函數(式1)由相應樣本的隸屬度與該樣本到各類中心的距離相乘組成的(即以隸屬度為權重的,對xj到各個類中心點cj的加權平均)。式1中的m是一個隸屬度的因子,一般為2
????????式2為約束條件,也就是一個樣本屬于所有類的隸屬度之和要為 1 。(即隸屬度表示xj有多大的概率屬于某一個分類ci)
1.2.2? U和C的迭代公式
????????
?????????Uij和Ci是相互關聯的。所以程序一開始的時候我們會隨機生成一個Uij,只要數值滿足條件即可,然后開始迭代,通過Uij計算出Ci,有了Ci又可以計算出Uij,反復迭代更新,這個過程中目標函數J一直在變化,逐漸縐向穩定。那么當J不再變化時就認為算法收斂到一個較好的結果了。
2?Fuzzy Hierarchical Clustering 模糊層次聚類
2.1 層次聚類
這是一種自底而上的層次聚類方法。大致可以分為三步:
1.將每一個元素單獨定為一類
2.每一輪都合并指定距離(對指定距離的理解很重要)最小的類
3.迭代第二步,直到所有的元素都歸為同一類/類別數量已經達到了我們需要的數量
2.2 FHC 思路
聚類問題我們是希望對一組點?進行分類,輸出M是cluster的數量,Ci是一系列的點
在前面的聚類問題中(硬聚類),我們需要
對于模糊聚類,條件還是需要的,只不過將不再是必須條件
?對于模糊聚類,我們可以有一個隸屬度值表示每個元素屬于每一個類的概率
?2.3 標記
一開始:
分類集合C=Φ
已經分簇的點
未分簇的點?
初始化距離矩陣
?距離:
點點距離
點簇距離
簇簇距離
?2.4 算法
(注意一點,簇簇之間使用complete-linkage;點點之間,點簇之間使用single-linkage)
算法會一直循環,直到收斂為止。循環主要包括三步
1)找到距離矩陣中最小的(a,b都可以是元素或者簇)
2)合并相應的a和b
3)重新計算需要的距離
????????循環的第一步,找到 D 的最小值,很簡單。 有趣的部分是第二步和第三步。 我們根據最小值區分四種情況
2.4.1 合并兩個元素
1)更新距離矩陣D=
2)記a和b 為已標注元素,同時修改U和C:
3) 計算距離
? ? ? ? 3.1)計算沒有分簇的點和新簇之間的距離?,將距離加入D中,?
?????????
? ? ? ? ?3.2)計算新簇和其他簇之間的距離,將距離加入D中
?
? ? ? ? ?3.3)定義和,但是他們不寫入D中
?4)計算其他已分簇點到新簇的模糊距離
4.1) 計算 dmin
? ? ? ? 定義
? ? ? ? ?其中?
(已經分簇的點,但是既不是a,也不是b)?
?4.2)計算隸屬度值
?
?4.3)計算t(μ)
????????
?4.4) 計算模糊距離
?
?m是模糊參數 fuzziness parameter,當m—>∞時,所有的元素最終會被聚類到所有的簇中(到每個簇的隸屬度相同);當m->1時,趨近于硬分簇
通過上面我們不難發現?
?(個人覺得是小于等于)
[0,0.5]?
t(μ)>1
5)? 計算新簇中元素到其他簇的距離
以為例(b類似)
?(因為當前我們找最小的d時,找到的就是ab)
?2.4.2 合并未使用的點和簇
?我們記,來表示b也是一個簇
合并a和Cb??然后和之前的步驟類似?
?1)將a從D中移除?
2)將a加入已?分簇元素
3)計算無分簇點到新簇的距離
4) 計算舊簇到新簇的距離?
?
?5)計算已分簇點到新簇的模糊距離
?
?
6)計算新簇中點到其他簇的模糊距離
這時候?
?
2.4.3? 合并已分簇點和簇
?
??我們同樣記,來表示b也是一個簇
1) 將a加入Cb中?
2) 只計算已分簇點到Cb的距離
?2.4.4 合并兩個簇
記
我們要做的時 計算點到新簇的距離,新簇到其他簇的距離
?
2.5 個人感覺
????????首先,我們乘以t(μ)的距離【模糊距離】,相當于盡量不要讓已分簇的點加入別的簇中(因為一般這個值都不小),除非真的很小
? ? ? ? ?所以未分簇的點和其他簇,計算和新簇距離的時候,不用算模糊距離
????????如果一個點新分簇,那么其他已分簇的點到這個點的距離就不再是原來兩個點之間的距離了,變得更遠了(這樣使得已分簇的點盡量不要被分到別的簇中,除非必須)
參考文獻
模糊聚類算法 - 知乎 (zhihu.com)
總結
以上是生活随笔為你收集整理的机器学习笔记: 聚类 模糊聚类与模糊层次聚类(论文笔记 Fuzzy Agglomerative Clustering :ICAISC 2015)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习笔记 (聚类) 层次聚类 Agg
- 下一篇: NTU课程笔记 :CV6422(4) s