Cartesian k-means论文理解

来源:互联网 发布:淘宝直播流量来源 编辑:程序博客网 时间:2024/06/04 19:26

转自:Cartesian k-means论文理解

1.普通k-means

给定np维数据点,D{Xj}nj=1,普通Kmeans算法将它们分成k个类别,每个类别有个类中心。目标函数是: 
这里写图片描述 
其中矩阵C的第i列是ci,分成m个类别,那么矩阵就有m列,b{0,1}k,且b 的模长为1,即b只有一个分量值为1,其余分量值为0。

K-means算法之所以很难,其中一个原因是存在一个assignment过程,需要将数据集中每个点根据距离分配到离它最近的唯一的类中心所在的类别。

2.Orthogonal k-means with 2m centers

对于上述的矩阵C,一共有m列,{每列是一个向量,向量的线性组合仍然是一个向量,}有m个元素的集合一共有2m个子集,让每个子集对应 一个类别。优化的目标函数如下:

这里写图片描述

这时b不再是1-of-k 编码了,而是b的分量可以有0个或多个1。assignment时时间复杂度是O(2mn),当2m非常大时,目标函数难以优化。 
一个直观的想法是,如果上述矩阵C的各列互相正交,即满足CTC是一个对角矩阵。在这里。令 
b=2b1Hm{1,1}m,则有: 
这里写图片描述 
这里写图片描述 
其中sgn(*)函数作用于向量的每个分量。 
平移后的ok-means优化的目标函数为: 
这里写图片描述 
μ的计算方法是计算所有数据的平均向量。这个式子中,通过矩阵Cμ就将m维空间中的超立方体上的顶点映射到特征空间,并且使得其映射后与特征x尽可能接近。由于C的每列是互相正交的,因此可以表示成一个旋转矩阵和一个对角矩阵的积。

变形后为: 
这里写图片描述 
其中CRD,RRp×mRTR=ImDm

这个形式下,最小化问题是一个Orthogonal Procrustes 
problem,可以先固定DBR,首先在D的后面添加pm行,DB就是p×n阶矩阵,对R也做相应变形使得R变成p阶方正,然后就可以使用SVD方法求解R了。由于DB是退化了的矩阵,因此我们只需要R的前m列就可以,其余列都是对零空间的旋转变化仍然是零空间。 
此等式可进一步变形为: 
这里写图片描述 
其中RR的正交补。其中DmDBRTX均为m×n阶矩阵。 
{ps:这个简单理解的话就是,欧式空间上一点到原点的距离平方等于其x坐标值平方加上y坐标值平方,x和y坐标值是这个点分别在x和y方向上的投影长度;A左乘以一个矩阵R,相当于将A向R空间投影} 
DB的第i行元素只能取值于{di,+di}di=Dii,为了最小化目标函数,当RTX的对应位置元素为正时,DB的相应位置元素取值di,否则取值di。根据最小化平方差原理,di的最佳取值为: 
这里写图片描述 
而矩阵B的取值为:

这里写图片描述

3.1. Learning ok-means

回顾下解决Orthogonal Procrustes problem的方法: 
这里写图片描述 
当B固定时求解这个目标式的最小值就是一个Orthogonal Procrustes problem。于是,先对矩阵这里写图片描述做SVD分解为这里写图片描述,更新R使得这里写图片描述

在ANN中,检索有两种方法,一种是计算对database特征和query特征都进行量化后的距离,另一种是计算仅仅对database特征进行量化后与query之间的距离。分别叫SQD和AQD。SQD要比AQD快,但是效果差些。AQD相似度标准下,度量函数为: 
这里写图片描述

4. Cartesian k-means

在ok-means算法中,矩阵C的每个子矩阵都是两列,即每个子中心集合只有两个元素。但在Cartesian kmeans(ck-means)中,每个子集合有h(h>=2)个元素。类中心的个数是hm centers,但是要存储的类中心的个数是hm。在确定某个query的类中心时,从m个元素个数为h的子中心集合中各取一个中心,然后求和(其实是将中心向量按维数拼接起来)得到其中心。公式表示如下: 
这里写图片描述 
ck-means优化的目标函数为: 
这里写图片描述 
这里写图片描述
变形为: 
这里写图片描述

ck-means在假设各个子空间互相独立的情况下,优化的目标函数可以化为在各个子空间进行优化。

5.1 ITQ vs. ok-means 
ITQ: 
这里写图片描述 
其中PCA投影矩阵WRp×m,R为选择矩阵。 
ITQ先将数据X中心化为X,然后采用用PCA和随机选择将特征转换到二进制空间,优化一个平方误差。

ok-means: 
ok-means将m维空间中的超立方体上的顶点映射到特征空间,并且优化子空间的量化误差和投影误差。 
这里写图片描述 
重点在于ok-means采用了一个投影过程将特征空间分离了,表现为上述目标函数RHS中的第二项,同时还有个**

5.2 ok-means vs. ck-means. 
令ck-means中的参数h为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

0 0