什么是用于字符串特征转换的好的非加密哈希?

数据挖掘 机器学习 数据挖掘
2022-03-06 08:39:51

什么是一个好的非加密哈希函数用于将字符串特征转换为数字表示以输入机器学习算法?

为了解释这个场景,我的特征集既有分类数据(例如:)Country也有非分类数据(例如:IP AddressEmail address)。到目前为止我已经使用了 MurMur3 哈希函数,有没有更好的算法?

3个回答

另请参阅:神经网络解析字符串数据?

我认为使用 MurMur3 本身没有问题。

对于分类标签,您可以使用 one-hot encoding / one-of-k encoding。

对于字符串,这是一个特定于应用程序的问题。据推测,如果您完全使用这些字符串作为特征,它将非常稀疏。这样做的效果将取决于您使用的算法,以及训练数据与您在实践中看到的数据的比较情况。您面临的风险是,您要么只创建一个传统的 IP/电子邮件白名单/黑名单,要么完全放弃该功能。

您必须决定您想要什么(例如,某个电子邮件地址是否应该始终获得某个输出标签?)并对应用程序有一些直觉,以便从IP 地址电子邮件地址生成更多功能。例如,您可以从电子邮件地址中提取本地部分(例如“john1972”)和,并从其中的每一个中提取:
-长度
-字符三元组
-数字到字母字符的计数/比例
-连字符数
-字典有效性
...
(来自您还可以提取 TLD 和可能的子域。)您可以尝试标记化 . 您甚至可以点击外部服务来获取Google 点击次数检测到的语言垃圾邮件分数等信息。

在回答这个关于在机密数据集中转换名称但保留我不久前阅读并发现非常有趣的名称的一些特征的问题的答案中,您可能会有一些有用的想法。这不是完全正确的主题,但是有一些关于在保留编辑距离的同时加密字符串的讨论,这可能无法回答您的问题,但如果您仍然卡住,也许会给您一些想法......

我建议做一个堆叠模型。

如果您正在进行分类预测,则可以使用朴素贝叶斯模型,使用词袋模型对字符串数据进行预测。现在这是一个要输入 ANN 的连续变量。

处理文本的另一种方法是术语频率/逆文档频率统计并使用与参考文档的余弦距离。假设您有一个关于主题 A 和一个关于主题 B 的文档,您可以将未分类的文档转换为与 A 和 B 的数字距离。(通常,您从许多 A 文档构建“参考”A 向量......)

https://en.wikipedia.org/wiki/Tf –idf

希望这可以帮助。