原始LSH算法实现详解

**

98年LSH算法实现理论解释

LSH算法适用于高维近似查找,详细的算法理论参见原论文,这里只是记录一下实现中的细节,代码随后附上。
首先需要用排序算法找出数据集中点坐标的最大值C,以及数据的维度d。随机生成哈希映射函数hash;
对于数据集P中所有点用如下方法hash到对应的桶(bucket)中,{桶数的确定根据hash函数的tag数确定:n=2^tag}:
P中有点pi(x1,x2,…,xd),生成的hash函数为h={tag1,tag2,…tagn}
1.由tag1/C取商,确定x的位置
2.由tag1/C取余,将得到的余数与x比较,若x大,则tag1对应为1,否则为0.
3.对所有的tag进行一二步操作,可以得到点pi对应的汉明映射。
举例: 数据维度为4,坐标最大值为5,hash函数h={2,4,6}
有点p(5,1,2,2),先tag1/C有2/5商为0,确定为点p的第一个数5
对tag1/C有2/5取余为2,,,,5>2,因此汉明映射的第一位为1
对tag2操作,tag2/C有4/5商为0,确定为点p的第一个数5
取余操作有5/5余0,数据5>0,因此汉明映射的第二位为1
对tag3操作,tag3/C有6/5商1,确定为点p的第二个数1
取余操作有6/5余1,数据1=1,因此汉明映射的第三个数是1
综上,点p对应的汉明映射为桶{1,1,1}

对于查询点p(3,4,1,2)
2/5商0余2,对应p的第一个数3,又3>2,因此汉明第一位为1
4/5商0余4,对应p的第一个数3,又3<4,因此汉明第二位为0
6/5商1余1,对应p的第二个数4,又4>1,因此汉明第三位为1
对应点p在桶{1,0,1}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值