PROCLUS算法
PROCLUS是由Aggarwal等人在1999年提出的一種子空間聚類算法。原文是《Fast Algorithms for Projected Clustering》,在ACM數據庫可以進行下載。
算法總體介紹
PROCLUS是基於投影的子空間聚類算法,搜索策略爲自頂向下。算法基於中心點思想,適合球形簇數據集,採用曼哈頓距離度量對象的相似性。
算法一共分爲以下三個階段:
- 初始階段 ,選擇中心點超集;
- 迭代階段,確定每一箇中心點的特徵維度,通過對聚類結果進行分析,並不斷迭代替換差的中心點,得到最優中心點集;
- 優化階段,對中心點維度進行優化,改善聚類質量;
初始階段
輸入:數據集合,簇個數,常數,常數
輸出:中心點集
- 從數據集中隨機選擇(是常數)個數據構成初始中心點超集;
- 使用貪心算法從中選擇大小爲(爲常數,且)的中心點集;
2.1 初始化爲空集
2.2 從中隨機選擇一個樣本加入(同時將從中移除)
2.3 計算中每個點與中離該點最近的點的距離,選擇最大的點,將加入中(同時將從中移除)
2.4 重複2.3直到中樣本點數爲
迭代階段
輸入:數據集(大小爲),中心點集,簇平均維度,簇個數
輸出:最終的中心點集,中每個中心點對應的維度
- 從中選擇一個樣本
- 計算中其他樣本點與m的最小距離(曼哈頓距離)
- 計算數據集中i局部近鄰點集合(數據集中離的曼哈頓距離小於的樣本點即爲i的局部近鄰點)
- 計算與在每個特徵維度的平均距離(i表示中心點,表示對應維度),計算所有維度維度均值
- 計算Xij的標準差
- 對於每個特徵維度計算,對進行排序,選取最小的(最小有兩維特徵)個特徵對應的維度,作爲候選中心點的子空間
- 重複1~6,爲中所有中心點找到對應子空間
- 從中選擇箇中心點,通過計算數據集中其他樣本點與中心點在中心點對應的子空間的曼哈頓截斷距離(Manhattan segmental distance),進行樣本點的分配,使用MC中其他中心點替換掉(在聚類過長中分配到的數據點個數小於,C是一個常數,一般設爲0.1)中心點
曼哈頓截斷距離:
(表示中心點對應的子空間)
優化階段
輸入:最優的中心點集M,迭代階段最後得到的簇分配結果
輸出:聚類結果
- 丟棄中每個中心點都包含的維度
- 使用迭代階段的方法進行子空間選擇,但是與迭代階段不同的是,使用的不是局部近鄰點而是迭代階段輸出的每個中心點的聚類結果
- 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.