HASHING

Posted sharalynwon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HASHING相关的知识,希望对你有一定的参考价值。

1.Locality-Sensitive Hashing(Shingling+MinHash) (LSH, 局部敏感哈希)

2. Learning to Hash

1.Introduction

很多的网页挖掘问题都可以表述为寻找相似集合:

  1. 论文查重;
  2. 推荐系统;

2.Finding Similar Documents

流程:
技术图片

2.1 Shingles

k-shingle(or k-gram)是文件中出现的k个字。通常使用一个文件的k-shingle集合来表示这个文件。
举例:k =2, doc = abcab。Set of 2-shingles = {ab, ac, bc, ca}
注意:k要尽量取的大一些,否则大多数的文档会产生很多shingles。
-k=5适用于小文档;k=10适用于大文档。

2.2 Min-Hashing

2.2.1

基础数据模型:集合
Jaccard Similarity of sets
杰卡德相似性是集合的交集除以他们的并集。
技术图片
技术图片

2.2.2 Outline of Min-Hashing

  1. 计算每一列的签名 = 对每一列进行总结;
  2. 发现成对签名;
  3. 检查具有相似签名的列的确是相似的。
    技术图片
    技术图片

    签字

  4. 每一列是随机置换的;
  5. 定义hash函数为h(C)=the number of the first(in the permuted order) row in which column C has 1.
  6. 用几个独立的hash函数构建签名。
    技术图片

    特性

    h(C1)=h(C2)的概率与Sim(C1, C2) = a/(a+b+c)

    Implementation

    如果有10000行数据的话,要进行随机置换也是很困难的。可以使用不同的函数来代替每一次的置换。
    Notation:
    Mi, C) the smallest value of hi(r) for which column c has 1 in row r
    hi(r) gives order of rows for ith permuation
    ---
    伪代码:
Initialize M(i,c) to infity for all i and c
for each row r
    for each column c
        if c has 1 in row r
           for each hash function hi do
               if hi(r) is a smaller value than M(i, c)
               then
                      M(i, c) := hi(r);

Example:
技术图片

以上是关于HASHING的主要内容,如果未能解决你的问题,请参考以下文章

Hashing算法的Python索引为None

1078. Hashing (25)Hash + 探测——PAT (Advanced Level) Practise

一致性hash算法Consistent Hashing

Rendezvous Hashing vs Consistent Hashing

A1078 Hashing (25分)(哈希表平方探测法)

Hashing图像检索源码及数据库总结