用于在稀疏机器学习中生成uint64或uint32特征id的良好哈希函数



我在特征字符串(如查询和标题)上使用哈希函数来生成稀疏的特征id。这个哈希函数应该是高效的,并且在uint64或uint32上有很好的分布。有人能给我一些建议吗?我在java中测试了两种方法。第一个是java hashCode。我发现它在类似的geohash字符串上有很多冲突。第二个是打击。它比hashCode有更多的冲突。

public static long gene(String s) {
        long hash = 5381;
        int c;
        for (int i = 0; i < s.length(); i++) {
            c = s.charAt(i);
            hash = ((hash << 5) + hash) + c;
        }
        return hash;
    }

(请忽略java long和c++uint之间的区别。一切都很好)

您可以尝试Murmurhash和cityhash

最新更新