局部敏感哈希

转载网址1:http://blog.csdn.net/pi9nc/article/details/12250361
simHash算法的具体步骤:http://www.cnblogs.com/chenwenbiao/archive/2011/09/12/2174139.html
张朋飞:http://www.cnblogs.com/hxsyl/p/4456001.html
转载网址2(证明步骤):http://www.cnblogs.com/chenwenbiao/archive/2011/09/12/2174139.html
谷歌的simHash算法:http://taop.marchtea.com/06.03.html
详尽的图解simHash:http://www.cnblogs.com/maybe2030/p/5203186.html
simHash算法论文(必应):Similarity estimation techniques from rounding algorithms.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
局部敏感(Locality Sensitive Hashing,简称LSH)是一种用于高维数据近似最近邻搜索的技术。它通过将相似的数据映射到相同的哈桶中,从而加速近似最近邻的查找过程。 在Matlab中,可以使用以下步骤实现局部敏感: 1. 定义哈函数:LSH使用多个哈函数来将数据映射到不同的哈桶中。在Matlab中,可以使用随机投影或者随机超平面来定义哈函数。 2. 构建哈表:根据定义的哈函数,将数据集中的每个数据点映射到对应的哈桶中。可以使用Matlab中的哈表数据结构来实现。 3. 查询最近邻:对于给定的查询点,使用相同的哈函数将其映射到对应的哈桶中,并在该桶中搜索近似最近邻。可以使用欧氏距离或余弦相似度等度量来评估近似最近邻的相似度。 以下是一个简单的局部敏感Matlab实现示例: ```matlab % 定义哈函数 function hash = hashFunction(data, randomMatrix) hash = sign(randomMatrix * data); end % 构建哈表 function hashTable = buildHashTable(dataSet, numHashFunctions) hashTable = containers.Map; randomMatrix = randn(numHashFunctions, size(dataSet, 1)); for i = 1:size(dataSet, 2) data = dataSet(:, i); hash = hashFunction(data, randomMatrix); if isKey(hashTable, hash) hashTable(hash) = [hashTable(hash), i]; else hashTable(hash) = i; end end end % 查询最近邻 function nearestNeighbor = queryNearestNeighbor(query, hashTable, numHashFunctions) randomMatrix = randn(numHashFunctions, size(query, 1)); hash = hashFunction(query, randomMatrix); nearestNeighbor = []; if isKey(hashTable, hash) candidates = hashTable(hash); minDistance = Inf; for i = 1:length(candidates) candidate = candidates(i); distance = computeDistance(query, dataSet(:, candidate)); if distance < minDistance minDistance = distance; nearestNeighbor = candidate; end end end end % 示例数据集 dataSet = randn(100, 1000); % 构建哈表 numHashFunctions = 10; hashTable = buildHashTable(dataSet, numHashFunctions); % 查询最近邻 query = randn(100, 1); nearestNeighbor = queryNearestNeighbor(query, hashTable, numHashFunctions); ``` 这是一个简单的局部敏感的Matlab实现示例,其中包括了定义哈函数、构建哈表和查询最近邻的步骤。你可以根据实际需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值