子空間聚類算法之PROCLUS

PROCLUS算法

PROCLUS是由Aggarwal等人在1999年提出的一種子空間聚類算法。原文是《Fast Algorithms for Projected Clustering》,在ACM數據庫可以進行下載。

算法總體介紹

PROCLUS是基於投影的子空間聚類算法,搜索策略爲自頂向下。算法基於中心點思想,適合球形簇數據集,採用曼哈頓距離度量對象的相似性。

算法一共分爲以下三個階段:

  1. 初始階段 ,選擇中心點超集;
  2. 迭代階段,確定每一箇中心點的特徵維度,通過對聚類結果進行分析,並不斷迭代替換差的中心點,得到最優中心點集;
  3. 優化階段,對中心點維度進行優化,改善聚類質量;

初始階段

輸入:數據集合DD,簇個數KK,常數AA,常數BB
輸出:中心點集MCMC

  1. 從數據集中隨機選擇AKA*KAA是常數)個數據構成初始中心點超集MCMC'
  2. 使用貪心算法從MCMC'中選擇大小爲BKB*KBB爲常數,且B<AB<A)的中心點集MCMC
    2.1 初始化MCMC爲空集
    2.2 從MCMC'中隨機選擇一個樣本mm加入MCMC(同時將mmMCMC’中移除)
    2.3 計算MCMC'中每個點與MCMC中離該點最近的點的距離disdis,選擇disdis最大的點nn,將nn加入MCMC中(同時將nnMCMC’中移除)
    2.4 重複2.3直到MCMC中樣本點數爲BKB*K

迭代階段

輸入:數據集DD(大小爲NN),中心點集MCMC,簇平均維度LL,簇個數KK
輸出:最終的中心點集MMMCMC中每個中心點對應的維度

  1. MCMC中選擇一個樣本ii
  2. 計算MCMC中其他樣本點與m的最小距離imindisti_{mindist}(曼哈頓距離)
  3. 計算數據集中i局部近鄰點集合ineighbori_{neighbor}(數據集DD中離ii的曼哈頓距離小於imindisti_{mindist}的樣本點即爲i的局部近鄰點)
  4. 計算ineighbori_{neighbor}ii在每個特徵維度的平均距離XijX_{ij}(i表示中心點,jj表示對應維度),計算所有維度維度均值YiY_i
  5. 計算Xij的標準差σi=j=1d(XijYi)2d1σ_i=\sqrt {\frac{\sum_{j=1}^{d} {(X_{ij}-Y_i)}^2}{d-1}}
  6. 對於每個特徵維度計算Zij=XijYiσiZ_{ij}=\frac{X_{ij}-Y_i}{σ_i},對ZijZ_{ij}進行排序,選取ZijZ_{ij}最小的KLK*L(最小有兩維特徵)個特徵對應的維度,作爲候選中心點mm的子空間
  7. 重複1~6,爲MCMC中所有中心點找到對應子空間
  8. MCMC中選擇KK箇中心點,通過計算數據集中其他樣本點與中心點在中心點對應的子空間的曼哈頓截斷距離(Manhattan segmental distance),進行樣本點的分配,使用MC中其他中心點替換掉MbadM_{bad}(在聚類過長中分配到的數據點個數小於NKC\frac{N}{K}*C,C是一個常數,一般設爲0.1)中心點

曼哈頓截斷距離:
dD(x1,x2)=iDX1,iX2,iDd_D(x_1,x_2)=\frac{\sum_{i\in{D}}|X_{1,i}-X_{2,i}|}{|D|}(DD表示中心點對應的子空間)

優化階段

輸入:最優的中心點集M,迭代階段最後得到的簇分配結果{Ci,C2....Ck}\lbrace C_i,C_2....C_k\rbrace
輸出:聚類結果

  1. 丟棄MM中每個中心點都包含的維度
  2. 使用迭代階段的方法進行子空間選擇,但是與迭代階段不同的是,使用的不是局部近鄰點而是迭代階段輸出的每個中心點的聚類結果
  3. M中的中心點會得到新子空間,基於新的子空間進行數據的重新分配

參考文獻

[1]Aggarwal C C , Wolf J L , Yu P S , et al. Fast Algorithms for Projected Clustering[J]. Sigmod, 1999, 28(2):61-72.

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