Svenstrup et.阿尔。2017年提出了一种在散列向量器中处理哈希冲突的有趣方法:使用两个不同的散列函数,并在建模之前将其结果连接起来。
他们声称,多个散列函数的组合近似于一个范围大得多的单个散列函数(见本文第4节)。
我想用我正在学习的一些文本数据来尝试这一点。这样做的想法是两次运行HashingVectorizer,每次使用不同的哈希函数,然后将结果作为输入连接到我的模型中。
我该怎么处理滑雪呢?没有一个选项可以更改所使用的散列函数,但是也许可以以某种方式修改向量器?
或者我可以用SparseRandomProjection实现这一点?
发布于 2018-12-14 13:17:06
HashingVectorizer在scikit-学习中已经包含了一种机制来减少与alternate_sign=True选项的哈希冲突。这在令牌求和过程中添加了一个随机符号,这改善了哈希空间中距离的保存(有关更多细节,请参见scikit学习#7513 )。
通过使用N哈希函数并连接输出,可以通过N增加结果稀疏矩阵中的n_features和非空项(nnz)的数量。换句话说,每个令牌现在将被表示为N个元素。这是相当浪费记忆的智慧。此外,由于稀疏数组计算的运行时间直接依赖于nnz (而对n_features的依赖程度较小),这将比只增加n_features具有更大的负面性能影响。我不确定这种方法在实践中是否很有用。
如果您仍然想要实现这样的向量器,下面是一些注释。
https://stackoverflow.com/questions/53767469
复制相似问题