聚類有效性檢驗(Hubert )

2021-08-05 18:54:59 字數 2992 閱讀 7607

假設現在有n個樣本需要聚類,根據某個聚類演算法我們把這n個樣本聚為k個簇,現在問題是怎麼確定現在的聚類結果是有意義的,而不是僅僅通過隨機得到的。下面我們將構造hubert』γ 統計量,通過假設檢驗的方法來解決這一問題。以下內容大部分出至jain和dubes的聚類教程《algorithms for clustering data》。部分理解可能有誤,歡迎指出錯誤。

在具體論述之前,我先直接給定義,具體說明放在後面。

先定義兩個n*n大小的矩陣x和y。 x(

i,j)

表示樣本i和樣本j的距離,是對稱陣。 y(

i,j)

的定義如下: y(

i,j)

=/sx

sy(3)

其中 m=n

(n−1

)/2(4) m

x=(1

/m)∑

∑x(i

,j)(5) m

y=(1

/m)∑

∑y(i

,j)(6) s

2x=(

1/m)

∑∑x2

(i,j

)−m2

x(7) s

2y=(

1/m)

∑∑y(

2i,j

)−m2

y(8)

所有的累加是在

上進行的,m是矩陣右上角元素的個數(不包括對角線上的元素),mx

,s2x

分別是矩陣x右上角元素的均值和標準差,同樣的my

,s2y

分別是矩陣y右上角元素的均值和標準差。

我們從乙個具體的例子出發,假設我們要對4個樣本(x

1.x2

,x3,

x4) 進行聚類,

現在根據某個聚類演算法(比如k-means)得到如下的結果:x1

和x3 被劃分成乙個簇,而x2

和x4 被劃分被另乙個簇。

我們的目的是想要知道這樣的乙個劃分到達好不好,但聚類不同於有監督的學習,並沒有乙個標籤來評判好壞。我們想要知道這個劃分有多不尋常(unusualness),換句話說它與完全無意義的隨機劃分有多大的差別,因此我們需要構造前面定義過的hubert』γ 統計量來進行假設檢驗。

要搞清楚γ統計量的意義,首先得清楚矩陣x和y的意義。

原書中提到x和y可以有多種定義,為方便理解,我只講最常見的一種。

首先x是這4個樣本兩兩之間的距離,比如說最常用的歐式距離,很明顯x是乙個對稱陣,對角線上的元素為0(這個很好理解,自己和自己距離為0)。

假設在本例中 x=

⎧⎩⎨⎪

⎪⎪⎪⎪

⎪0−−

−1.20−

−0.6

0.30

−0.2

0.40.10⎫

⎭⎬⎪⎪

⎪⎪⎪⎪

(9)

從上面描述的y的定義可以看出,y的元素和聚類的結果有關 y(

i,j)

=0表示樣本

i 和

j屬於乙個簇 y(

i,j)

=1表示樣本

i 和

j不屬於乙個簇

y反應的聚類的情況。根據上面的例子y矩陣如下: y=

⎧⎩⎨⎪

⎪⎪⎪⎪

⎪0−−

−10−

−010

−101

0⎫⎭⎬

⎪⎪⎪⎪

⎪⎪(10)

在計算出矩陣x和y後可由(2)式或(3)式得到統計量γ的值,其實你會發現γ的值就是矩陣x和y右上角對應元素乘積的和,γ越大意味著這兩個矩陣相互之間更吻合。如果採用式(3)得到的γ的區間為(-1,1)。

本例中根據式(2)得到:γ=

1.2+

0.2+

0.3+

0.1=

1.8

現在的問題是,我們想知道1.8是乙個很不同尋常的值嗎,如果這個聚類演算法僅僅是隨機進行聚類(瞎猜的),那麼得到γ=1.8的概率有多大。

現在要做的就是改變式(10)的橫軸(和縱軸)的順序,從而得到不同的γ值

要知道式(10)是按排列(x

1.x2

,x3,

x4) 得到的,4個樣本的排列數為4!=24

例如當排列為(x

2,x4

,x1,

x3) 時: y=

⎧⎩⎨⎪

⎪⎪⎪⎪

⎪0−−

−00−

−110

−110

0⎫⎭⎬

⎪⎪⎪⎪

⎪⎪(11)

γ(2,4,1,3) = 0.6+0.2+0.3+0.4=1.5

24種排列的γ的值的分布如下表:

γ的值1.5

1.82.3頻數8

88在知道了γ的具體分布之後,就可以進行假設檢驗了

原假設h0:演算法得到的γ值只是y隨機排列的結果

我們發現γ=1.8的概率為1/3, 也就是說瞎猜也有1/3的概率得到1.8的值,拒絕原假設的把握只有2/3,因此我們有理由任認為這個聚類演算法其實沒有任何意義。

當n=4的時候,排列數為24,我們還可以算出每個γ的值。但隨著n的增長,其排列數呈指數增長,8!

=40320

,n取12是時,其排列數超過了4億。顯然不可能計算出每種可能的γ值,因此我們需要近似和估計統計量γ的分布。

一種方法是對γ的值進行隨機抽樣,比如抽取100個不同排列下的γ值,先設定好不同的區間,統計落入不同區間的γ的個數,然後畫出直方圖,這樣就可以近似γ的真實分布。當我們使用某種演算法得到乙個γ值時,將其比較與其他100個點進行比較。

如果這個演算法真的有效,那麼統計量γ的值應該足夠大,比大多數隨機得到的γ[i]都要大,這樣才能有足夠把我拒絕原假設。

一種情況是如果隨機模擬了100個y,得到100個γ[i],真正聚類得到的γ只比42個γ[i]大,那麼拒絕原假設的把握只有0.42,因此有理由懷疑這個聚類沒有任何意義。

另一種情況是真正聚類得到的γ比所有的γ[i]都要大很多,那麼我們就有充分的理由拒絕原假設,認為聚類的結果是有意義的,至於有什麼意義,還需要進一步研究。

聚類有效性指標(CVI)

參考聚類有效性指標 cluster validity index,cvi 用於度量聚類的效果。詳細介紹wiki 聚類具有隨機性,聚類效果的好壞我們並沒有辦法去判斷,這裡面給出的聚類有效性指標,可以幫助我們在聚類一組資料後對其聚類效果進行度量,然後根據資料的實際意義做出判斷。聚類評估目前常用的方式有兩...

C 檢驗資料有效性驗證類

using system using system.text using system.text.regularexpressions namespace dachie.common d 0?1 9 1 0 2 0?1 9 1 2 0 9 30 31 private const string reg...

C 檢驗資料有效性驗證類

using system using system.text using system.text.regularexpressions namespace dachie.common d 0?1 9 1 0 2 0?1 9 1 2 0 9 30 31 private const string reg...