Skip to content

Latest commit

 

History

History
71 lines (36 loc) · 4.31 KB

useful-data-science-feature-hashing.md

File metadata and controls

71 lines (36 loc) · 4.31 KB

有用的数据科学:特征哈希

原文:www.kdnuggets.com/2016/01/useful-data-science-feature-hashing.html

c 评论

威尔·麦金尼斯

在之前关于 分类编码 的文章中,我们探讨了将分类变量转换为数值特征的不同方法。 在这篇文章中,我们将探讨另一种方法:特征哈希。

特征哈希,或称哈希技巧,是将任意特征转化为稀疏二进制向量的方法。 它可以非常高效,因为只需一个独立的哈希函数,而无需预先构建可能类别的字典。

一个简单的实现方法是让用户选择所需的输出维度,只需将输入值哈希为一个数字,然后将其除以所需的输出维度并取余数 R。 这样,你可以将特征编码为一个零向量,其中在索引 R 的位置为一。

在伪代码中,来自维基百科的文章:

function hashing_vectorizer(features : array of string, N : integer): x := new vector[N] for f in features: h := hash(f) x[h mod N] += 1 return x

或在 Python 中,从 分类编码:

def hash_fn(x): tmp = [0for_inrange(N)] for val in x.values: tmp[hash(val)% N] += 1 return pd.Series(tmp, index=cols)

cols = ['col_%d'% d for d in range(N)] X = X.apply(hash_fn, axis=1)

这效果如何呢?好吧,上次我们用相同的模型运行了所有编码器并比较了得分。 一些编码每次略有不同(取决于初始序数变换如何进行),所以我们运行模型 100 次,并生成其得分的箱线图。 使用蘑菇数据集:

分类编码得分

在这个图中,你可以看到一些有趣的东西。 首先,虽然在上篇文章中介绍的二进制编码在平均水平上表现良好,但运行到运行的方差相当高,这并不理想。 此外,你可以看到随着用于哈希编码器的组件数量增加,性能逐渐上升,但在 16 时饱和,因为这个数据集的类别数量不足以需要超过 16 个组件。

在下一篇文章中,我将介绍这些兼容 scikit-learn 的转换器,提供一些使用示例,并分享一些关于如何在高维分类数据上构建优质模型的经验法则,以避免内存溢出。

查看更新的存储库,尝试你自己的编码器,使用我的编码器,或在你自己的数据上尝试:

github.com/wdm0006/categorical_encoding

原文.

相关:

  • 数据科学职位市场 – 现状如何

  • Michael Li,Data Incubator 谈数据驱动的招聘策略

  • 数据科学的艺术:你需要的技能及如何获得它们


我们的三大课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业生涯

2. 谷歌数据分析专业证书 - 提升你的数据分析能力

3. 谷歌 IT 支持专业证书 - 支持你组织的 IT 工作


更多相关内容