1. 程式人生 > >機器學習總結——聚類

機器學習總結——聚類

效能度量

距離計算

原型聚類

k均值

演算法

  1. 隨機選k個點作為初始聚類中心
  2. 計算每個樣本到k個聚類中心的距離,選距離最近的作為類標記
  3. 重新計算聚類中心
  4. 重複2、3過程
  5. 直至收斂或達到迭代次數

優缺點

優點

  1. 對於大型資料集也是簡單高效、時間複雜度、空間複雜度低。

缺點

  1. 最重要是資料集大時結果容易區域性最優
  2. 需要預先設定K值,對最先的K個點選取很敏感
  3. 對噪聲和離群值非常敏感;只用於numerical型別資料
  4. 不能解決非凸(non-convex)資料。

學習向量量化 LVQ

高斯混合聚類

  1. 選擇簇的數量(如 K-Means 所做的),並隨機初始化每個簇的高斯分佈引數。
  2. 給定每個簇的高斯分佈,計算每個資料點屬於一個特定簇的概率。一個點越靠近高斯的中心,它就越可能屬於該簇。
  3. 基於這些概率,我們計算一組新的高斯分佈引數使得簇內的資料點的概率最大化。我們使用資料點位置的加權和來計算這些新引數,其中權重是資料點屬於該特定簇的概率。
  4. 重複步驟2和3直到收斂。

密度聚類

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

演算法

  1. 從任一物件點p開始;
  2. 尋找併合並核心p物件直接密度可達(eps)的物件;
  3. 如果p是一個核心點,則找到了一個聚類,如果p是一個邊界點(即從p沒有密度可達的點)則尋找下一個物件點;
  4. 重複2、3,直到所有點都被處理

優缺點

優點

  1. 對噪聲不敏感
  2. 能發現任意形狀的聚類。

缺點

  1. 聚類的結果與引數有很大的關係
  2. DBSCAN用固定引數識別聚類,但當聚類的稀疏程度不同時,相同的判定標準可能會破壞聚類的自然結構,即較稀的聚類會被劃分為多個類或密度較大且離得較近的類會被合併成一個聚類。

OPTICS(Ordering Points To Identify Clustering Structure)

DBSCAN的擴充套件, 通過優先對高密度(high density)進行搜尋,然後根據高密度的特點設定引數,改善了DBSCAN的不足。

層次聚類

AGNES(AGglomerative NESting)

採用自底向上的聚合策略來產生層次聚類結構

演算法

  1. 將每個物件當成一個初始簇
  2. 計算任意兩個簇的距離,並找到滿足度量條件的兩個簇
  3. 合併兩個簇,生成新的簇的集合
  4. 重複2和3直到終止條件得到滿足

合併簇方法劃分

single-linkage

最近距離由兩個簇的最近的樣本來決定

distmin(Ci,Cj)=minpCi,pCj{pp}dist_{min}(C_i,C_j)=\min_{p\in{C_i},p'\in{C_j}}\{|p-p'|\}

complete-linkage

最大距離由兩個簇的最遠的樣本來決定
distmax(Ci,Cj)=maxpCi,pCj{pp}dist_{max}(C_i,C_j)=\max_{p\in{C_i},p'\in{C_j}}\{|p-p'|\}

average-linkage

由兩個簇的平均距離決定
distavg(Ci,Cj)=1ninjpCi,pCj{pp}dist_{avg}(C_i,C_j)=\frac{1}{n_in_j}\sum_{p\in{C_i},p'\in{C_j}}\{|p-p'|\}

DIANA

採用自頂向下的分拆策略來產生層次結構

Birch

BIRCH使用 聚類特徵(CF) 來概括一個簇,使用聚類特徵樹(CF樹)來表示聚類的層次結構。聚類特徵本質上是給定簇的統計彙總:從統計學的觀點來看,它是簇的零階矩、一階矩和二階矩。聚類特徵滿足可加性。
BIRCH聚類演算法原理

優缺點

優點

  1. 節約記憶體,所有的樣本都在磁碟上,CF Tree僅僅存了CF節點和對應的指標。
  2. 聚類速度快,只需要一遍掃描訓練集就可以建立CF Tree,CF Tree的增刪改都很快。
  3. 可以識別噪音點,還可以對資料集進行初步分類的預處理

缺點

  1. 由於CF Tree對每個節點的CF個數有限制,導致聚類的結果可能和真實的類別分佈不同.
  2. 對高維特徵的資料聚類效果不好。此時可以選擇Mini Batch K-Means
  3. 如果資料集的分佈簇不是類似於超球體,或者說不是凸的,則聚類效果不好。

其他聚類

譜聚類

演算法

  1. 計算兩兩樣本之間的相似度,用相似度構造鄰接矩陣WW
  2. WW的矩陣的每一列加起來得到NN個數,構造一個NNN*N的對角矩陣DD(度矩陣),計算拉普拉斯矩陣L=DWL=D-W
  3. 求出LL的前kk小的特徵值對應的kk個特徵向量{v}i=1k\{\bm{v}\}_{i=1}^{k}
  4. $k$個特徵列向量排列在一起組成一個NkN*k的矩陣,其中每一行可以看做原先的樣本降維到kk維空間的向量
  5. 使用Kmeans演算法(Kmeans的KK與步驟3裡的kk沒關係)進行聚類,用降維後的向量代替原先的樣本

優缺點

  1. 對離群點不敏感
  2. kmeans適合凸資料, 而譜聚類則比較通用

問題

為什麼是LLkk小的特徵向量

LLkk小等價於WWkk大,本質上也是保留特徵矩陣WW的前kk大,而且LLkk小的特徵向量的組成的矩陣是使目標函式最小的解