我试图针对文本数据集训练lr分类器,不同于文本数据直接输入到tfidf矢量化器的常见场景,原始文本行首先转换为字典,如{a:0.1, phrase:0.5, in:0.3, line:0.8}
,其中权重计算由于一些特定的规则和一些单词被省略。所以,为了将这些词典提供给lr分类器,我选择了FeatureHasher来做哈希技巧。但是,当FeatureHasher的n_features参数变大时,我发现lr分类器工作得非常慢,比如10 ^ 8。
但据我所知,稀疏矩阵的内存成本和计算成本都不应随尺寸增长而有效元素的数量固定。例如,如果我们有一个双元素稀疏向量[coordinate:(1,2), value:(3,4)]
,其原始维度为10.我们将哈希范围更改为20,我们得到[(3,7), (3,4)]
,存储这些没有区别两个向量,如果我们用另一个稀疏向量计算它的距离,我们只需要遍历具有固定数量元素的列表,因此计算成本如果是固定的。
我认为我的理解肯定有问题,或者我应该错过sklearn的lr分类器,希望有人能纠正我,谢谢!