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

我使用哈希函数对特征字符串(如查询和标题)进行处理,以生成稀疏特征ID。该哈希函数应高效且在uint64或uint32上具有良好的分布。谁能给我一些建议?我已经在Java中测试了两种方法。第一种是Java的hashCode。我发现它在相似的地理哈希字符串上存在许多碰撞。第二种方法如下。它比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类型之间的差异。一切正常)


回答:

你可以尝试Murmurhashcityhash

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注