聚類 高維聚類 聚類評估標準 EM模型聚類

高維數據的聚類分析

高維聚類研究方向

高維數據聚類的難點在於:html

  一、適用於普通集合的聚類算法,在高維數據集合中效率極低算法

  二、因爲高維空間的稀疏性以及最近鄰特性,高維的空間中基本不存在數據簇。優化

 在高維聚類的研究中有以下幾個研究重點:url

1)維度約簡,主要分爲特徵變換和特徵選擇兩大類。前者是對特徵空間的變換映射,常見的有PCA、SVD等。後者則是選擇特徵的子集,常見的搜索方式有自頂向下、隨機搜索等;(降維spa

2)高維聚類算法,主要分爲高維全空間聚類和子空間聚類算法。前者的研究主要聚焦在對傳統聚類算法的優化改進上,後者則能夠看作維度約簡的推廣;.net

子空間聚類:3d

  特徵選擇算法綜述:http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.htmlorm

  不一樣的簇對應不一樣的子空間,而且每一個子空間維數不一樣,所以也不可能一個子空間就能夠發現全部的簇。選取與給定簇密切相關的維,而後在對應的子空間進行聚類。子空間聚類須要自定義一種搜索策略和評測標準來篩選出須要聚類的簇htm

  傳統的特徵選擇算法能夠用來肯定相關維。對象

CLIQUE算法(綜合了基於密度和基於網格的算法)

  CLIQUE把每一個維劃分紅不重疊的區間,從而把數據對象的整個嵌入空間劃分紅單元。它使用一個密度閾值識別稠密單元和稀疏單元。若是映射到它的對象數超過該密度閾值,則這個單元是稠密的。
  CLIQUE經過兩個階段進行聚類。在第一階段,CLIQUE把d-維數據空間劃分若干互不重疊的矩形單元,而且從中識別出稠密單元。CLIQUE在全部的子空間中發現稠密單元

  爲了作到這一點,CLIQUE把每一個維都劃分紅區間,並識別至少包含l個點的區間,其中l是密度閾值。

  而後,CLIQUE迭代地鏈接子空間.CLIQUE檢查中的點數是否知足密度閾值。

  當沒有候選產生或候選都不稠密時,迭代終止。
在第二階段中,CLIQUE使用每一個子空間中的稠密單元來裝配可能具備任意形狀的簇。其思想是利用最小描述長度(MDL)原理,使用最大區域來覆蓋鏈接的稠密單元,其中最大區域是一個超矩形,落人該區域中的每一個單元都是稠密的,而且該區域在該子空間的任何維上都不能再擴展。通常地找出簇的最佳描述是NP一困難的。所以,CLIQUE採用了一種簡單的貪心方法。它從一個任意稠密單元開始,找出覆蓋該單元的最大區域,而後在還沒有被覆蓋的剩餘的稠密單元上繼續這一過程。當全部稠密單元都被覆蓋時,貪心方法終止。

簡單說:

 對每一個屬性進行 N等分, 整個數據空間就被劃分爲一個超長方體集合, 對每一個單元進行數據點計數, 大於某個閾值 S 的單元稱爲稠密單元, 而後對稠密單元進行鏈接就構成類. 不一樣於其它方法, 它能夠自動地識別嵌入在數據子空間中的類

子空間聚類與基於降維的聚類對比

子空間聚類從某種程度上來說與基於降維的聚類有些相似,但後者是經過直接的降維來對高維數據進行預處理,即在降維以後的某一個特定的低維空間中進行聚類處理;而前者是把高維數據劃分紅若干不一樣的子空間,再根據須要在不一樣的子空間中尋求數據的聚類。

子空間聚類算法拓展了特徵選擇的任務,嘗試在相同數據集的不一樣子空間上發現聚類。和特徵選擇同樣,子空間聚類須要使用一種搜索策略和評測標準來篩選出須要聚類的簇,不過考慮到不一樣簇存在於不一樣的子空間,須要對評測標準作一些限制。

3)聚類有效性,是對量化評估方法的研究;

基於降維的聚類從根本上說都是以數據之間的距離 或類似度評價爲聚類依據,當數據的維數不是很高時,這些方法效果較好,但當數據維度增高,聚類處理將很難達到預期的 效果。 緣由在於:

a)在一個很高維的空間中定義一個距離度量自己就是一個很困難的事情;

b)基於距離的方法一般須要計算各個聚類之間的距離均值,當數據的維度很高時,不一樣聚類之間的距離差別將會變得很小。

4)聚類結果表示方法;

5)高維數據索引結構;

6)高維離羣點的研究

 

筆記︱多種常見聚類模型以及分羣質量評估(聚類注意事項、使用技巧)

1、聚類分析的距離問題

聚類分析的目的就是讓類羣內觀測的距離最近,同時不一樣羣體之間的距離最大。

1.樣本聚類距離以及標準化

幾種常見的距離,歐氏距離、絕對值距離、明氏距離、馬氏距離。與前面不一樣的是,機率分佈的距離衡量,K-L距離表明P、Q機率分佈差的指望

通常來講,聚類分析的數據都會進行標準化,標準化是由於聚類數據會受數據的量綱影響。

在以上的幾個距離明氏距離受量綱影響較大。馬氏距離受量綱影響較小

還有cos(餘弦類似性)餘弦值的範圍在[-1,1]之間,值越趨近於1,表明兩個向量的方向越趨近於0,他們的方向更加一致。相應的類似度也越高(cos距離能夠用在文本挖掘,文本詞向量距離之上)。

幾種標準化的方法,有規範化、標準化(R語言︱數據規範化、歸一化

 

2.不一樣類型變量距離計算 

算法雜貨鋪——k均值聚類(K-means)

一、標量:歐幾里得距離  曼哈頓距離  閔可夫斯基距離 標準化

      標量也就是無方向意義的數字,也叫標度變量。如今先考慮元素的全部特徵屬性都是標量的狀況。例如,計算X={2,1,102}和Y={1,3,2}的相異度。一種很天然的想法是用二者的歐幾里得距離來做爲相異度,歐幾里得距離的定義以下:

     

      其意義就是兩個元素在歐氏空間中的集合距離,由於其直觀易懂且可解釋性強,被普遍用於標識兩個標量元素的相異度。將上面兩個示例數據代入公式,可得二者的歐氏距離爲:

     

      除歐氏距離外,經常使用做度量標量相異度的還有曼哈頓距離和閔可夫斯基距離,二者定義以下:

      曼哈頓距離:

      閔可夫斯基距離:

      歐氏距離和曼哈頓距離能夠看作是閔可夫斯基距離在p=2和p=1下的特例。另外這三種距離均可以加權,這個很容易理解,再也不贅述。

      下面要說一下標量的規格化問題。上面這樣計算相異度的方式有一點問題,就是取值範圍大的屬性對距離的影響高於取值範圍小的屬性。例如上述例子中第三個屬性的取值跨度遠大於前兩個,這樣不利於真實反映真實的相異度,爲了解決這個問題,通常要對屬性值進行規格化。所謂規格化就是將各個屬性值按比例映射到相同的取值區間,這樣是爲了平衡各個屬性對距離的影響。一般將各個屬性均映射到[0,1]區間,映射公式爲:

     

      其中max(ai)和min(ai)表示全部元素項中第i個屬性的最大值和最小值。例如,將示例中的元素規格化到[0,1]區間後,就變成了X’={1,0,1},Y’={0,1,0},從新計算歐氏距離約爲1.732。

二、二元變量:相同序位同值屬性的比例 Jaccard係數

      所謂二元變量是隻能取0和1兩種值變量,有點相似布爾值,一般用來標識是或不是這種二值屬性。對於二元變量,上一節提到的距離不能很好標識其相異度,咱們須要一種更適合的標識。一種經常使用的方法是用元素相同序位同值屬性的比例來標識其相異度。

      設有X={1,0,0,0,1,0,1,1},Y={0,0,0,1,1,1,1,1},能夠看到,兩個元素第二、三、五、7和8個屬性取值相同,而第一、4和6個取值不一樣,那麼相異度能夠標識爲3/8=0.375。通常的,對於二元變量,相異度可用「取值不一樣的同位屬性數/單個元素的屬性位數」標識。

      上面所說的相異度應該叫作對稱二元相異度。現實中還有一種狀況,就是咱們只關心二者都取1的狀況,而認爲二者都取0的屬性並不意味着二者更類似。例如在根據病情對病人聚類時,若是兩我的都患有肺癌,咱們認爲兩我的加強了類似度,但若是兩我的都沒患肺癌,並不以爲這增強了兩人的類似性,在這種狀況下,改用「取值不一樣的同位屬性數/(單個元素的屬性位數-同取0的位數)」來標識相異度,這叫作非對稱二元相異度。若是用1減去非對稱二元相異度,則獲得非對稱二元類似度,也叫Jaccard係數,是一個很是重要的概念。

三、分類變量

      分類變量是二元變量的推廣,相似於程序中的枚舉變量,但各個值沒有數字或序數意義,如顏色、民族等等,對於分類變量,用「取值不一樣的同位屬性數/單個元素的所有屬性數」來標識其相異度。

四、序數變量:轉成標量

      序數變量是具備序數意義的分類變量,一般能夠按照必定順序意義排列,如冠軍、亞軍和季軍。對於序數變量,通常爲每一個值分配一個數,叫作這個值的秩,而後以秩代替原值當作標量屬性計算相異度。

五、向量:餘弦類似度

      對於向量,因爲它不只有大小並且有方向,因此閔可夫斯基距離不是度量其相異度的好辦法,一種流行的作法是用兩個向量的餘弦度量,其度量公式爲:

     

      其中||X||表示X的歐幾里得範數。要注意,餘弦度量度量的不是二者的相異度,而是類似度!

 

3.羣體聚類距離

前面是樣本之間的距離,若是是一個點集,羣落,如何定義羣體距離。通常有如下幾種距離。

 

二.EM聚類

KMEANS注意點

1.K均值聚類算法對離羣值最敏感,由於它使用集羣數據點的平均值來查找集羣的中心。

在數據包含異常值、數據點在數據空間上的密度擴展具備差別、數據點爲非凹形狀的狀況下,K均值聚類算法的運行結果不佳。

2.K均值對簇中心初始化很是敏感。

 

高斯混合模型聚類算法

高斯混合模型GMMs Gaussian Mixture Models
高斯模型即正態分佈,高斯混合模型就是幾個正態分佈的疊加,每個正態分佈表明一個類別,因此和K-means
很像,高斯混合模型也能夠用來作無監督的聚類分析。
 
高斯混合模型聚類算法EM步驟以下:
  1. 猜想有幾個類別,既有幾個高斯分佈。
  2. 針對每個高斯分佈,隨機給其均值和方差進行賦值。
  3. 針對每個樣本,計算其在各個高斯分佈下的機率。
                     
     4. 針對每個高斯分佈,每個樣本對該高斯分佈的貢獻能夠由其下的機率表示,如機率大則表示貢獻大,
          反之亦然。這樣把樣本對該高斯分佈的貢獻做爲權重來計算加權的均值和方差。以後替代其本來的均值
          和方差。
     5. 重複3~4直到每個高斯分佈的均值和方差收斂。
 
下圖顯示了高斯混合模型的聚類過程:    
                    K-means,高斯混合模型及其EM步驟詳解

 注:當高斯混合模型的特徵值維數大於一維時,在計算加權的時候還要計算協方差,即要考慮不一樣維度之間的相互關聯。

 
 
高斯混合模型和K-means的比較:
       相同點:
  1.        分類受初始值的影響
  2.        可能限於局部最優解
  3.        類別的個數只能靠猜想 (有K越大MAP最大後驗機率越大的趨勢)
      不一樣點:
  1.       K-means是硬分類,要麼屬於這類,要麼屬於那類,而高斯混合式軟分類,一個樣本60%屬於A,40%       屬於B。
  2.       多維的時候高斯混合在計算均值和方差時使用了協方差,應用了不一樣維度之間的相互約束關係。

三.常見聚類模型的比較

 

K-means

層次聚類

EM模型聚類

優勢

屬於快速聚類,計算效率高

一、可以展示數據層次結構,易於理解

二、能夠基於層次過後再選擇類的個數(根據數據選擇類,可是數據量大,速度慢)

相比其餘方法可以擬合多種形狀的類

缺點

一、須要實現指定類的個數(須要指定類)

二、有時會不穩定,陷入局部收斂

一、計算量比較大,不適合樣本量大的情形

二、較多用於宏觀綜合評價

須要事先指定類的個數和初始分佈

 

分羣指標詳細說明:7.9 聚類模型評估

四.聚類分羣的數量如何肯定?分羣效果如何評價?

沒有固定標準,通常會3-10分羣。或者用一些指標評價,而後交叉驗證不一樣羣的分羣指標。

通常的指標:輪廓係數silhouette(-1,1之間,值越大,聚類效果越好)(fpc包),蘭德指數rand;R語言中有一個包用30種方法來評價不一樣類的方法(NbClust),可是速度較慢。既能夠肯定分羣數量,也能夠評價聚類質量

商業上的指標:分羣結果的覆蓋率;分羣結果的穩定性;分羣結果是否從商業上易於理解和執行

1 . 蘭德指數 須要標籤

蘭德指數(Rand index)須要給定實際類別信息$C$,假設$K$是聚類結果,$a$表示在$C$與$K$中都是同類別的元素對數,$b$表示在$C$與$K$中都是不一樣類別的元素對數,則蘭德指數爲:

${\rm RI}=\frac{a+b}{C_2^{n_{\rm samples}}}$,

對於以上公式,

  • 分子:屬性一致的樣本數,即同屬於這一類或都不屬於這一類。a是真實在同一類、預測也在同一類的樣本數;b是真實在不一樣類、預測也在不一樣類的樣本數;
  • 分母:任意兩個樣本爲一類有多少種組合,是數據集中能夠組成的總元素對數;
  • RI取值範圍爲[0,1],值越大意味着聚類結果與真實狀況越吻合。

對於隨機結果,RI並不能保證分數接近零。爲了實現「在聚類結果隨機產生的狀況下,指標應該接近零」,調整蘭德係數(Adjusted rand index)被提出,它具備更高的區分度:

${\rm ARI}=\frac{{\rm RI}-E[{\rm RI}]}{\max({\rm RI})-E[{\rm RI}]}$,

具體計算方式參見Adjusted Rand index

ARI取值範圍爲$[-1,1]$,值越大意味着聚類結果與真實狀況越吻合。從廣義的角度來說,ARI衡量的是兩個數據分佈的吻合程度。

2. 互信息 須要標籤、先驗知識

互信息(Mutual Information)也是用來衡量兩個數據分佈的吻合程度。假設$U$與$V$是對$N$個樣本標籤的分配狀況,則兩種分佈的熵(熵表示的是不肯定程度)分別爲:

$H(U)=\sum\limits_{i=1}^{|U|}P(i)\log (P(i)), H(V)=\sum\limits_{j=1}^{|V|}P'(j)\log (P'(j))$,

其中$P(i)=|U_i|/N,P'(j)=|V_j|/N$。$U$與$V$之間的互信息(MI)定義爲:

${\rm MI}(U,V)=\sum\limits_{i=1}^{|U|}\sum\limits_{j=1}^{|V|}P(i,j)\log\left ( \frac{P(i,j)}{P(i)P'(j)}\right )$,

其中$P(i,j)=|U_i\bigcap V_j|/N$。標準化後的互信息(Normalized mutual information)爲:

${\rm NMI}(U,V)=\frac{{\rm MI}(U,V)}{\sqrt{H(U)H(V)}}$。

與ARI相似,調整互信息(Adjusted mutual information)定義爲:

${\rm AMI}=\frac{{\rm MI}-E[{\rm MI}]}{\max(H(U), H(V))-E[{\rm MI}]}$。

利用基於互信息的方法來衡量聚類效果須要實際類別信息,MI與NMI取值範圍爲$[0,1]$,AMI取值範圍爲$[-1,1]$,它們都是值越大意味着聚類結果與真實狀況越吻合。

3. 輪廓係數

輪廓係數旨在將某個對象與本身的簇的類似程度和與其餘簇的類似程度進行比較。輪廓係數最高的簇的數量表示簇的數量的最佳選擇。

輪廓係數(Silhouette coefficient)適用於實際類別信息未知的狀況。對於單個樣本,設$a$是與它同類別中其餘樣本的平均距離,$b$是與它距離最近不一樣類別中樣本的平均距離,輪廓係數爲:

$s=\frac{b-a}{\max(a,b)}$。

對於一個樣本集合,它的輪廓係數是全部樣本輪廓係數的平均值。

輪廓係數取值範圍是$[-1,1]$,同類別樣本越距離相近且不一樣類別樣本距離越遠,分數越高。

通常來講,平均輪廓係數越高,聚類的質量也相對較好。在這,對於研究區域的網格單元,最優聚類數應該是2,這時平均輪廓係數的值最高。可是,聚類結果(k=2)的 SSE 值太大了。當 k=6 時,SEE 的值會低不少,但此時平均輪廓係數的值很是高,僅僅比 k=2 時的值低一點。所以,k=6 是最佳的選擇。

5、kmeans時候出現的超級大羣現象,如何解決?

 kmeans作聚類的時候,每每會出現一個超級大羣,一類樣本數據不少不少,其餘類別數量不多。兩極分化很嚴重。在實際使用的時候會出現如下這幾個問題:

80%的數據分佈在1%的空間內,而剩下的20%的數據分佈在99%的空間內。聚類時,分佈在1%空間內的大部分數據會被聚爲一類,剩下的聚爲一類。當不斷增長K值時,模型通常是對99%空間內的數據不斷進行細分,由於這些數據之間的空間距離比較大。

      而對分佈在1%空間內的數據則很難進一步細分,或者即便細分了,也只是剝離出了外側少許數據。下圖是咱們在某個項目中的聚類結果,能夠看到有一類用戶佔了90%以上,並且隨着K的增長,這類用戶裏只有很小一部分數據會被劃分出來。

 

      解決辦法:那麼爲了解決這個問題,一種可行的方法是是對特徵取LOG,減輕長尾問題。通過這兩種方法處理後,都能較好的對玩家進行分類。下圖是上圖中的數據點取LOG後獲得的分佈圖。

      缺點:取LOG的方法的缺點在於,會使數據變得不直觀,很差理解。

DBSCAN

k-dist

另外,DBSCAN要求用戶指定一個全局參數Eps(爲了減小計算量,預先肯定參數 Minpts)。爲了肯定取值,DBSCAN計算任意對象與它的第k個最臨近的對象之間的距離。而後,根據求得的距離由小到大排序,並繪出排序後的圖,稱作k-dist圖。k-dist圖中的橫座標表示數據對象與它的第k個最近的對象間的距離;縱座標爲對應於某一k-dist距離值的數據對象的個數。

R-樹

爲了有效地執行區域查詢,DBSCAN算法使用了空間查 詢R-樹結構。在進行聚類前,必須創建針對全部數據的R*-樹。

相關文章
相關標籤/搜索