数据挖掘——近似最近邻算法ANN之LSH

数据挖掘——近似最近邻算法ANN之LSH

简介

局部敏感哈希(Locality Sensitive Hashing,LSH)主要是为了处理高维度数据的查询和匹配等操作。

关于这个算法,综合多个前辈的总结,总算是能搞懂的,现将我使用到的算法说明总结如下:

【文本相似性计算】minHash和LSH算法

大规模数据的相似度计算:LSH算法

在此基础上,再总结下LSH算法的大致步骤,并给出一个具体实例(网页查找)。

LSH算法

必须说明,看到这里之前,一定要仔细研读上面给出的两个链接,不然看不明白下面的实例。

LSH之相似网页查找——Simhash

为了计算哈希后各向量之间的距离,这里使用汉明距离。

实例:
在这里插入图片描述
上面的图是这个算法的大致流程图,下面是具体过程:

在这里插入图片描述
假设当前文本文件为 “美国“51区”雇员称内部有9架飞机,曾看见灰色外星人”

(1)提取特征

使用jieba库函数,将上文本提取出特征分别为“美国”、“51区”、“雇员”、“称”、……,“灰色”、“外星人”等。

(2)Hash

然后使用各种好使(即指尽量减少碰撞又能表达原特征)的手段将提取出的特征进行hash,hash后的特征如上图的第二列所示。

(3)加权

为每一个特征赋予一个权重,这个权重可使用tf-idf统计词频(当前文件中该特征出现的次数/所有文件中该特征出现的总次数),显然,这个词频越大说明该特征越重要,相应地权重就越大。这样给每个hash后的特征乘上这个权重,得到第三列。

(4)合并

将得到的每个乘以相应权重的特征累加起来,各个数位各自相加。这样,得到最右下角的一个对源文件的特征表达。

(5)降维

对于上步骤中得到的特征表达,大于0的另其为1,小于0的另其为0,这样得到最终降维结果:[1,0,1,0,1,1]

思考一个问题:如果去掉特征“灰色”,这样的话对最后的结果会有影响吗?

分析下:特征“灰色”hash并加权后得[4,-4,4,4,4,4],如果去掉该特征,那么累加后特征变为[30,-22,38,-9,51,9],最后对应到降维的结果依然是[1,0,1,0,1,1]没变。

所以,只要那些权重很大(很重要)的特征才会影响到最后的结果。

其他的近邻算法先占个坑,后面再补充:

  • K-Means Tree
  • K-D Tree
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章