引言:最近在刷《資料探勘導論》,第九章, 9.5.1小節有提到,可以用三角不等式,減少不必要的距離計算,從而達到加速聚類演算法的目的。這在超大資料量的情況下,尤為重要。但是書中並沒有給出解釋和證明。本文以k-means聚類演算法為代表,講解下怎麼利用三角不等式減少計算過程。
任一三角形,兩邊之和大於第三邊,兩邊之差小於第三邊。可以從歐式距離擴充套件到多維歐幾里得空間:設任意三個向量a,b,c。d(x,y)代表x,y在空間上的距離,則三角不等式滿足:
\[d(a,b)+d(b,c)\ge d(a,c) , d(a,b) - d(b,c) \le d(a,c)
\]
k-mean演算法隨機選擇k個資料點作為初始質心
repeat:
計算每乙個資料點計算到現有k個質心的距離,將它歸屬到距離最近質心的所在簇中
重新計算質心。
until所有質心不再變動
\[假設存在資料點集 x=\ , 質心的集合c=\, 對應的簇集合為s=\。
\]
引理1:
\[設 c_i ,c_j(i\neq j )\in c, x \in x。如果2 d(x,c_i) \le d(c_i,c_j) ,那麼d(c_i,x) \le d(c_j,x) 。
\]
引理2:
\[ 設c_i \in c, \exists c_j \in c,使得d(c_i,c_j) = min \ d(c_i,c)。對於資料點x \in x,若有2 d(x,c_i) \le d(c_i,c_j),\
那麼min \ d(x,c) = d(c_i,x)。(記d(x,c)是x到所有質心的距離)\]
證明引理1:
因為有 $$2 d(c_i,x) \le d(c_i,c_j) \ (1)$$證明引理2:且由三角不等式:$$ d(c_i,c_j) \le d(x,c_i) + d(x,c_j) \ (2)$$
所以 $$2 d(c_i,x) \le d(x,c_i) + d(x,c_j),即d(c_i,x) \le d(c_j,x)$$
運用反證法:假設 $$ \exists c_k \in c,使得d(c_k,x) < d(c_i,x), $$
由題幹有:
\[d(c_k,c_i) \ge d(c_i,c_j) (1) , d(x,c_i) \le d(c_i,c_j) (2)
\]又因為 $$ d(c_k,x) +d (c_i,x) \ge d(c_k,c_i) (3)$$
所以結合(1)(3):
\[d(c_k,x) +d (c_i,x) \ge d(c_i,c_j) (4)
\]又由假設:
\[2d(c_i,x) > d(c_i,c_j) (5)
\]這與條件中$$2 d(x,c_i) \le d(c_i,c_j)$$相矛盾,所以可知假設不成立。
即 $$min \ d(x,c) = d(c_i,x)$$
首先$$對於每乙個c_i,用乙個hash表存放與它最近的距離 d(c_i,c_j)。$$
1.如果資料點x已經被分配:
\[則x與它目前所在簇的質心的距離為d(c_i,x),與d(c_i,c_j)比較。
\]\[如果 2 d(c_i,x) \le d(c_i,c_j),則說明不需要更換x的歸屬。\\(注意反之: 2 d(c_i,x) \gt d(c_i,c_j)),並不能說明x應該資料 c_j所在的簇,所以還需要繼續計算x與每個質心的距離。)
\]2.如果資料點x還未被分配
\[則需要遍歷計算, \forall c_i \in c, 比較 2 d(c_i ,x) \le d(c_i,c_j)是否成立,若成立,說明x應當歸屬 c_i ,無需再計算其他距離。
\]前文介紹了如何運用引理1,2 將它運用在k-means演算法上,改寫的k-means演算法如下:
k-mean演算法隨機選擇k個資料點作為初始質心
repeat
計算k個質心間的距離,並且用hash表儲存每個質心的到其他質心的最短距離。(用d(ci,cj)表示質心ci和它最近質心是cj的距離)。
4.repeat
對於每個資料點x
if(資料點x已分配在質心ci所在簇)
if2d(ci,x) <=d(ci,cj)
x分配無需變動;
else
繼續計算x到現有k個質心的距離,將它歸屬到距離最近質心的所在簇中
end if
else(資料點x未分配到任何簇)
fori from 0 to kdo
if2d(ci,x) <=d(ci,cj)
將x歸屬到ci所在簇中
退出for迴圈
end if
end for
end if
重新計算質心。
until所有質心不再變動
本文中只舉例了使用歐幾里得距離的k-means演算法。其實本文中的d(x,y)不僅可以指代distance,更廣義的可以指代dissimilarity。任何通過度量相異性的聚類演算法都可以使用三角不等式,避免多餘的計算,例如計算最近鄰的dbscan。感興趣的讀者可以自己推導改進。
三個不等 關於「刑事和解」的三個不等式
故意傷害案的當事人,往往是鄉鄰 親戚或者朋友,原本可以和睦相處 友愛互助,卻因瑣事惡言相向 拳腳相加,一方遭受皮肉之苦,一方落得刑罰懲處,可謂兩敗俱傷。辦案檢察官在唏噓之餘,要充分運用刑事和解制度,消弭矛盾,重建和諧,做有情懷 有溫度的司法人。關於檢察官在主導刑事和解中應注意的幾個問題,梁小檢邀請到...
三個不等 關於「刑事和解」的三個不等式
故意傷害案的當事人,往往是鄉鄰 親戚或者朋友,原本可以和睦相處 友愛互助,卻因瑣事惡言相向 拳腳相加,一方遭受皮肉之苦,一方落得刑罰懲處,可謂兩敗俱傷。辦案檢察官在唏噓之餘,要充分運用刑事和解制度,消弭矛盾,重建和諧,做有情懷 有溫度的司法人。關於檢察官在主導刑事和解中應注意的幾個問題,梁小檢邀請到...
三個不等 數學雜談之伯努利不等式
高老師 小七,見過這個不等式沒有?小七 沒有。高老師 滾回去翻課本,選修4 5,作為一道例題出現在課本上。這是伯努利不等式在課本上的表現形式,我們今天來講課本上的這個不等式的證明方法。今天會講到三個方法。求導 注意此處觀察到的特殊點。這裡簡單分析一下這個導函式 小七 啊,正常思路。2.數學歸納法 這...