首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用HashEmbeddings的思想与sklearn的HashingVectorizer

利用HashEmbeddings的思想与sklearn的HashingVectorizer
EN

Stack Overflow用户
提问于 2018-12-13 17:46:58
回答 1查看 265关注 0票数 4

Svenstrup et.阿尔。2017年提出了一种在散列向量器中处理哈希冲突的有趣方法:使用两个不同的散列函数,并在建模之前将其结果连接起来。

他们声称,多个散列函数的组合近似于一个范围大得多的单个散列函数(见本文第4节)。

我想用我正在学习的一些文本数据来尝试这一点。这样做的想法是两次运行HashingVectorizer,每次使用不同的哈希函数,然后将结果作为输入连接到我的模型中。

我该怎么处理滑雪呢?没有一个选项可以更改所使用的散列函数,但是也许可以以某种方式修改向量器?

或者我可以用SparseRandomProjection实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 13:17:06

HashingVectorizer在scikit-学习中已经包含了一种机制来减少与alternate_sign=True选项的哈希冲突。这在令牌求和过程中添加了一个随机符号,这改善了哈希空间中距离的保存(有关更多细节,请参见scikit学习#7513 )。

通过使用N哈希函数并连接输出,可以通过N增加结果稀疏矩阵中的n_features和非空项(nnz)的数量。换句话说,每个令牌现在将被表示为N个元素。这是相当浪费记忆的智慧。此外,由于稀疏数组计算的运行时间直接依赖于nnz (而对n_features的依赖程度较小),这将比只增加n_features具有更大的负面性能影响。我不确定这种方法在实践中是否很有用。

如果您仍然想要实现这样的向量器,下面是一些注释。

  • 因为FeatureHasher是用Cython实现的,所以如果不编辑/重新编译代码,就很难从Python修改它的功能。
  • 编写一个快速的纯python实现HashingVectorizer可能是一种方法。
  • 否则,在HashingVectorizer包中会有某种实验性的文本矢量化重新实现。因为它是用Rust编写的(带有Python ),所以其他哈希函数很容易访问和可能被添加
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53767469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档