背景
在对大样本进行聚类时,由于k-means的计算开销问题,通常随机选取部分样本进行聚类,得到聚类中心。然而往往要得到每个样本最近聚类中心,这常用在检索索引构建中,eg. OPQ (PAMI 2014),Inverted Multi-Index(PAMI 2014)。
算法步骤
设一个特征向量p(1*2000),2000是特征维数。聚类中心矩阵为C(256*2000),256为中心数,2000为特征维数。
1. 数据归一化
对p各维计算平方和,得到p_norm,是一个浮点数。
2. 聚类中心归一化
对C的每一行,计算各维平方和,得到c_norm:256*1
3. p_norm 扩展至 1*256
4. 计算p_norm = p_norm+c_norm;
5. 计算点p到256个中心的距离向量 dis=−2C∗p+p_norm
6. 计算dis中最小的那个数据的index,即为离点p最近的聚类中心
分析
为什么第5步中的算式就得到距离了呢?
答:设C中的一个聚类中心向量为 (c1,c2,...,c2000