21/7/16 讀書筆記
數據挖掘導論 簇評估概述
我們需要意識到聚類分析本身是一項試探性的數據分析工作,即我們並不知道什么是最優的聚類結果(數據中甚至並不存在聚類模式),因此對於簇的質量的評估是一個尷尬的過程,我們自以為得出了高質量的簇,但是實際上原數據可能只是隨機分布的點。盡管如此,我們依然希望能夠通過已有的信息盡可能判斷得到的簇的質量,畢竟高質量的簇至少有較高高概率對應了某些聚類模式。
對於簇的評估可以被分為三種主要形式:
- 非監督:根據得出的簇的信息,來評估簇結構的優良性。通常來說非監督的度量由稱為內部指標,主要是凝聚性和分離性,描述了簇內部和簇之間的質量,而脫離實際的外部信息。
- 監督:需要參考外部的信息,比如在我們已知數據對應的類標號時,通過計算先驗的類標號和聚類算法得出的分類之間的相似度來評判聚類質量。
- 相對的:對於兩個不同的聚類和簇,我們需要對比他們的質量。其本質還是要用到監督和非監督的度量來進行對比。
數據挖掘導論 非監督簇評估
對於划分的聚類,我們定義簇的有效性。簇的有效性可以指出的凝聚性,也可以指簇的分離性,其描述了聚類算法得出的簇的質量。一個有效的簇,應該具有較高的凝聚度或者較高的分離度。我們用所有簇的(加權)有效性的和來描述一個聚類的總有效性。以下分別從基於圖的聚類技術和基於原型的聚類技術兩個角度,去探討什么是凝聚度和分離度。
在基於圖的聚類技術中,我們將數據視作單獨的點,點與點之間的鄰近度用點之間的邊的長度來表示。一個簇之內所有的點之間的邊的長度的加權和,表示了這個簇的凝聚度。兩個簇之間的點與點之間的邊的長度的加權和,表示了這兩個簇之間的分離度。
在基於原型的聚類技術中,我們將簇用原型來進行代表。一個簇內所有點到其原型的鄰近度之和,表示了簇的凝聚度。兩個簇的原型之間的距離,表示了這兩個簇之間的分離度。額外的,單個簇的分離度度量可以用該簇原型到所有數據的總原型的鄰近度描述。這是因為對於一個聚類,其總分離度與所有簇之間的相對分離度有直接關系,而總分離度又可以用所有簇原型到總原型鄰近度表示。
根據凝聚度和分離度,我們可以分析:
- 一個凝聚度不好的簇可以將其分裂,一對分離度不好的簇可以進行合並
- 對於一個數據點,其對所在簇的有效性貢獻反映了其在簇中接近“中心”的程度
我們基於其中的第二點,引入一個新的概念:輪廓系數
輪廓系數
對於一個體點,我們:
-
計算該點到所在簇中其他對象的平均距離,記為\(a\)
-
計算該點到任何不包括該點的簇中所有對象的平均距離,記為\(b_i\)。而在所有簇中,找出最小的那個\(b_{min}\)
-
計算輪廓系數
\[s=\frac{b_{min}-a}{\max(a,b_{min})} \]
輪廓系數處於-1到1之間。我們期望輪廓系數盡可能得大(接近1),且應該是正的。如果輪廓系數為負,代表該點距離其他簇更近,這不符合我們對於優質簇的定義。可以發現,簇中越靠近中心的點輪廓系數越高,越是在邊緣輪廓系數越低。
鄰近度矩陣評估
在得到聚類結果后,如果我們將鄰近度矩陣中的行列重新排序,使得聚類分析中處於同一個簇的對象連續排布,這樣得到的鄰近度矩陣應該能夠呈現出明顯的塊對角結構。因為我們期望一個簇中的所有點之間的鄰近度盡可能高,不同簇之間的點之間的鄰近度低。這樣我們就能通過可視化的手段觀察聚類效果。當塊對角結構越明顯,聚類的效果越好。
這種方式對於大型數據集來說計算開銷比較大,我們可以對簇進行抽樣,大簇少抽樣,小簇多抽樣,以防止鄰近度矩陣丟失某些較小的簇的表述。
層次聚類的共性分類距離與系數
回想凝聚的層次聚類分析技術,我們采用樹狀圖描述聚類過程。其中縱軸描述了合並后簇內部的分離程度。對於每次合並,我們將一個簇中所有點到另一個簇中所有點的共性分類距離記為這次合並后樹狀圖中點對應的縱軸值。
共性分類相關系數描述了由共性分類距離組成的矩陣與原相異度矩陣之間的相似性,相似性越高,說明層次聚類的性能越好。這是因為層次聚類中定義共性分類距離反映了點之間的相異程度,相異度越高的點之間所期望的共性分類距離越長。
確定簇的正確個數
我們對於簇的挖掘可能是隨意的,事先並不知道應該有幾個簇。以K均值為例,我們通過指定不同的K值,多次進行聚類分析,可以發現隨着K值增大,聚類的總SSE是遞減的,這非常好理解,因為簇的數量增大引起簇內部的凝聚度上升。但是並不是越多的簇越好,因為則不符合客觀需求。
我們考慮平均輪廓系數關於K的變化,通常可以發現平均輪廓系數在K取一定值時達到極大值,此時的K應該是正確的簇個數。這是因為簇過多,會導致邊界點增加,平均輪廓系數下降;簇過少,會導致凝聚度不高,簇內點的輪廓系數普遍降低。
當然,我們考慮的是K均值技術,這使得我們必須考慮有時會存在嵌套的簇或者非橢圓的簇,而K均值技術傾向於用更多的球狀簇去擬合他們,使得最終得出的K值通常較大。
聚類趨勢:數據中是否真的存在聚類模式呢?
我們可以通過實行聚類得出的簇的質量來評價,如果多種技術均不能得到較高的簇,那么說明數據中可能並不存在明顯的聚類模式。
而我們也可以通過直接評估的方式來評價,而不施行聚類技術。本書介紹了Hopkins度量,其從數據空間內隨機取k個點,然后從數據中隨機取k個數據點,考慮這2k個點各自的最近鄰距離,如果這兩組的最近鄰距離大致相同,說明從數據中提取的點從統計意義上接近數據空間內隨機提取的點,暗示數據可能是隨機分布的。反之如果最近鄰距離差異較大,說明數據在數據空間內很可能是規律分布的,此時進行聚類更可能提取出有意義的簇。
數據挖掘導論 監督度量
在聚類分析中引入關於數據的外部信息,通常來說是引入已知的數據對象的類標號形式,通過對比聚類分析的簇標號和類標號的對應程度來反映聚類技術的質量。由於我們在聚類分析之外就已知了對象的分類信息,因此這種評估主要還是針對聚類技術的性能測試,以表明聚類技術能夠在何種程度上替代人工標注,而不是進行實際的聚類分析任務。
對於簇有效性的監督度量,本書中從三種方面進行了介紹:
- 面向分類准確度的度量:主要評估預測的類標號與實際類標號的對應程度。這使得聚類算法的評估問題變成了一個分類器性能的評估問題,因此可以回想第四章我們所學的哪些度量:熵、純度、精度、召回率、F度量等。
- 面向相似性的度量:聚類算法除了需要准確進行分類外,還應該盡可能使得簇內的對象的相似性盡可能高。聚類算法的本質也在於聚合相似性高的對象,而不是進行分類。這種度量基於這一個前提:同一個簇的兩個對象同樣應該屬於一個類。
- 層次聚類的簇有效性評估:層次聚類的簇評估較為復雜,書中給出一個根據類標號集合進行評估的例子,其主要評估層次聚類是否對於每個類,至少有一個簇相對較為純粹,且能夠包含該類的大部分對象。需要對每個類,計算簇層次結構內每個簇的F度量。
數據挖掘導論 簇有效性度量的顯著性
我們不得不考慮一個問題:我們對於簇的有效性進行了評估,由此得出了某個數值來反映其有效程度。但是我們怎么通過這個數值來准確反映“簇究竟有多有效”這個問題呢?
本書定義一個簇是有效的,當且僅當其有效性度量是非隨機的。即這個簇越不像是隨機出現的,那么這個簇越可能是顯著的。這需要基於統計概率進行評估,通過隨機生成多組數據,然后運用聚類算法后對生成的簇的有效性度量進行計算,得到有效性度量的概率分布。當原數據生成的簇的有效性度量顯然在該概率分布中出現的概率很低,那么說明原數據集上執行的聚類算法很可能得到了有效的簇。