我应该如何在 sklearn 的 FeatureHasher 中选择 n_features?

数据挖掘 机器学习 scikit-学习 数据 散列技巧
2022-02-05 18:57:41

我应该如何n_features在 scikit-learn 中选择 FeatureHasher?假设我在特征“案例”中有 1000 个类别,我想对它们进行散列。

1个回答

如其文档中所述,建议使用 2 的幂作为特征数;否则,特征将不会均匀地映射到列。此外,建议将特征数量保留为其默认值 2 ** 20 以用于实际设置。当内存或下游模型大小成为问题时,请选择较低的值,例如 2 ** 18参考

请记住,正如文档中所述,少量特征可能会导致哈希冲突,但大量特征会导致线性学习器Ref中的系数维度较大

我的总体建议是使用 2 的幂作为特征数。如果您有少量特征,您可以将特征数量(例如,您在下面的评论中提到的 30 个)视为超参数,并使用交叉验证找到最佳值。例如,您可以根据数据的大小测试 2 的不同幂,例如 2、4、8、16 等,并使用交叉验证来找到最佳值。那是最好的解决方案。但是请注意,当输入特征的数量非常大时,散列方法是有效的。在您的情况下,我会使用技术文献中可用的其他方法。