quantization product for nearest search

量化乘积方法过程:
1. 将D维向量集进行聚类,生成N个子集,以及每个子集的质心;
2. 将每个子集中的向量,转变为这个向量在这个类中的余量,即 r(y)=yqc(y) ,可以理解成在高维空间中,质心坐标到y坐标的向量。
3. 将每个余量,分成m个子余量,对m个组的子余量再进行聚类,每组会得到mk个质心;
4. 最后可以得到一个三层的聚类树,第一层对向量进行聚类,第二层对向量的余量,划分成m组,第三层对每个组进行聚类;
5. 搜索时,先把x划分到第一层的某几个类中,然后计算余量,再分m组,在每组的子类中,参照公式 d(x,y)=d(x,q(y))=jd( uj(x), qj(uj(y)) ) 2 ,计算余量的每组子余量和对应组的每个质心的距离,然后计算每个划分到这个类(第一层)中的y和x距离。

聚类过程用MiniBatchMKMeans可以得到比较好的性能;

你可能感兴趣的:(数据科学,机器学习)