Cartesian k-means論文理解

1.普通k-means

給定nnpp維數據點,D{Xj}j=1nD≡\{X_j\}_{j=1}^n,普通Kmeans算法將它們分成kk個類別,每個類別有一個類中心。目標函數是:
這裏寫圖片描述
其中矩陣CC的第i列是cic_i,分成m個類別,那麼矩陣就有m列,b{0,1}kb ∈ \{0, 1\}^k,且b 的模長爲1,即b只有一個分量值爲1,其餘分量值爲0。

K-means算法之所以很難,其中一個原因是存在一個assignment過程,需要將數據集中每個點根據距離分配到離它最近的唯一的類中心所在的類別。

2.Orthogonal k-means with 2m2^m centers

對於上述的矩陣CC,一共有m列,{每列是一個向量,向量的線性組合仍然是一個向量,}有m個元素的集合一共有2m2^m個子集,讓每個子集對應 一個類別。優化的目標函數如下:

這裏寫圖片描述

這時b不再是1-of-k 編碼了,而是b的分量可以有0個或多個1。assignment時時間複雜度是O(2mn)O(2^mn),當2m2^m非常大時,目標函數難以優化。
一個直觀的想法是,如果上述矩陣CC的各列互相正交,即滿足CTCC^TC是一個對角矩陣。在這裏。令
bb'= 2b-1∈ Hm ≡ {1,1}m\{−1, 1\}^m
則有:
這裏寫圖片描述
這裏寫圖片描述
其中sgn(*)函數作用於向量的每個分量。
平移後的ok-means優化的目標函數爲:
這裏寫圖片描述
μ\mu的計算方法是計算所有數據的平均向量。這個式子中,通過矩陣CμC和\mu就將m維空間中的超立方體上的頂點映射到特徵空間,並且使得其映射後與特徵x儘可能接近。由於CC的每列是互相正交的,因此可以表示成一個旋轉矩陣和一個對角矩陣的積。

變形後爲:
這裏寫圖片描述
其中CRDC ≡ RD,RRp×mRTR=ImDm,R ∈ R^{p×m},且R^TR = I_m ,D是m階對角正定矩陣

這個形式下,最小化問題是一個Orthogonal Procrustes problem,可以先固定DBRDB^{'},優化R,首先在D的後面添加pmp-m行,DBDB^{'}就是p×np × n階矩陣,對R也做相應變形使得R變成p階方正,然後就可以使用SVD方法求解R了。由於DBDB^{'}是退化了的矩陣,因此我們只需要R的前m列就可以,其餘列都是對零空間的旋轉變化仍然是零空間。
此等式可進一步變形爲:
這裏寫圖片描述
其中RR^⊥RR的正交補。其中DmDBRTXD是m階對角矩陣,DB^{'}和R^TX^{'}均爲m×n階矩陣。
{ps:這個簡單理解的話就是,歐式空間上一點到原點的距離平方等於其x座標值平方加上y座標值平方,x和y座標值是這個點分別在x和y方向上的投影長度;A左乘以一個矩陣R,相當於將A向R空間投影}
DBDB^{'}的第i行元素只能取值於{di,+di}di=Dii\{−d_i,+d_i\},d_i=D_{ii},爲了最小化目標函數,當RTXR^TX^{'}的對應位置元素爲正時,DBDB^{'}的相應位置元素取值did_i,否則取值di-d_i。根據最小化平方差原理,did_i的最佳取值爲:
這裏寫圖片描述
而矩陣BB^{'}的取值爲:

這裏寫圖片描述

3.1. Learning ok-means

回顧下解決Orthogonal Procrustes problem的方法:
這裏寫圖片描述
當B固定時求解這個目標式的最小值就是一個Orthogonal Procrustes problem。於是,先對矩陣這裏寫圖片描述做SVD分解爲這裏寫圖片描述,更新R使得這裏寫圖片描述

3.2. Approximate nearest neighbor search

在ANN中,檢索有兩種方法,一種是計算對database特徵和query特徵都進行量化後的距離,另一種是計算僅僅對database特徵進行量化後與query之間的距離。分別叫SQD和AQD。SQD要比AQD快,但是效果差些。AQD相似度標準下,度量函數爲:
這裏寫圖片描述

  1. Cartesian k-means

在ok-means算法中,矩陣CC的每個子矩陣都是兩列,即每個子中心集合只有兩個元素。但在Cartesian kmeans(ck-means)中,每個子集合有h(h>=2)h(h>=2)個元素。類中心的個數是hmh^m centers,但是要存儲的類中心的個數是hmhm。在確定某個query的類中心時,從m個元素個數爲h的子中心集合中各取一箇中心,然後求和(其實是將中心向量按維數拼接起來)得到其中心。公式表示如下:
這裏寫圖片描述
ck-means優化的目標函數爲:
這裏寫圖片描述
這裏寫圖片描述
變形爲:
這裏寫圖片描述

ck-means在假設各個子空間互相獨立的情況下,優化的目標函數可以化爲在各個子空間進行優化。

  1. Relations and related work

5.1 ITQ vs. ok-means
ITQ:
這裏寫圖片描述
其中PCA投影矩陣$ W ∈R^{p×m}RITQX,R爲選擇矩陣。 ITQ先將數據X中心化爲X’$,然後採用用PCA和隨機選擇將特徵轉換到二進制空間,優化一個平方誤差。

ok-means:
ok-means將m維空間中的超立方體上的頂點映射到特徵空間,並且優化子空間的量化誤差和投影誤差。
這裏寫圖片描述
重點在於ok-means採用了一個投影過程將特徵空間分離了,表現爲上述目標函數RHS中的第二項,同時還有個****。

5.2 ok-means vs. ck-means.
令ck-means中的參數hh爲2,就是ok-means。

5.3 PQ vs. ck-means
PQ與ck-means一樣將特徵空間分成許多個子空間,同時假設各個子空間之間互相正交。但是PQ中沒有一個需要優化的選擇矩陣R,因此子空間劃分對於PQ非常重要。本人也做過PQ的實驗,可以訪問http://blog.csdn.net/chieryu/article/details/50404920

ck-means既在子空間中優化又在空間劃分上優化(通過空間旋轉)。

6.實驗

數據:http://corpus-texmex.irisa.fr/
MATLAB代碼:https://github.com/norouzi/ckmeans
一個朋友寫的C++代碼:https://github.com/AnshanTJU/ckmeans

本文鏈接:http://blog.csdn.net/chieryu/article/details/51170843

發佈了74 篇原創文章 · 獲贊 56 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章