原文来源:http://blog.csdn.net/ying_xu/article/details/50563208
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
Spherical Hashing是一种二进制编码嵌入技术,不同于现存的许多哈希技术,都是使用超平面来将数据点分离到两个不同的集合,并根据它们每一个点被分配到的集合,分配两个不同的二进制编码(+1或者-1),该技术使用一种超球面来分割数据点,使得仅仅用一个单一的超球面就可以在任意的高维空间中形成一个封闭的区域,使得比超平面必须使用d+1个平面才能在d维平面中构成封闭空间拥有更加强的空间封闭能力。
这也是它们之间最大的区别,在于定义中可以被一个二进制编码索引的一个封闭区域的能力。并且,通过使用多个超球面,更多数量的封闭区域可以被生成,且每一个区域中点之间的距离是有界的。除此之外,可以将一个超平面近似看成是一个有着很大的半径且中心非常远的超球面。
那么,为什么有更强的空间封闭能力就更好呢?这是因为,在最近邻搜索中,有着更强的距离边界的封闭区域的构成能力可以更加有效地根据一个查找点定位到最近的邻居。该区域可以包含更多的候选近邻。
1.二进制编码之间的距离
大多数基于超平面的二进制编码嵌入方法都使用的是汉明距离来定义两个二进制编码之间的距离,也就是两个编码之间不同位的个数,使用的是XOR异或操作,非常简单快捷。也可以理解为给定的两个数据点之间超平面在它们相反一侧的数量。但是汉明距离并不能针对球面的哈希函数反映出有着更强边界的定义封闭区域的特性。
因此基于以上原因,作者提出了一种对应其提出的哈希函数的距离度量,Spherical Hamming Distance(SHD),定义如下:
分母是同时为1 的位的数量,也就是做AND操作。实验证明,随着二进制编码中的同为1的位数的增多,平均距离边界会减小。为了避免除数为0的情况,在分母上加了一个很小的值(如0.1),并且为了避免昂贵的除操作开销,实现计算了一个SHD表,
作者也尝试另外一种距离的度量,
但是性能比SHD稍差一点,因此弃选。
2.哈希函数之间的独立性
哈希本质上是一种二值分类算法,不论是基于超平面还是超球面,都可追溯于Machine Learning中的SVM分类问题,SVM中包含两类分类和单类分类,均基于超平面,还有一种单类分类方法基于超球面叫做支持向量数据表示(Support Vector Data Description, SVDD),和球哈希有些类似。
球哈希在做特征降维的时候是定义一组哈希函数,将原始的维特征向量映射为一个二维向量。
在构建多个Hashing函数的时,需遵守两个原则:
(1) Hashing函数之间相互独立,即
(2) Hashing函数将整个数据空间进行Balanced partition,即
构建Spherical Hashing函数的过程就是选取每个超球面球心和半径的过程,为了保证上述两项原则,首先定义以下两个辅助变量:
1)
2)
版权声明:本文为博主原创文章,未经博主允许不得转载。