假設現在有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...