这是一个关于使用 ngrams 进行线性回归的问题,我们使用的是 Tf-IDF(词频-逆文档频率)。为此,我使用了 numpy 的稀疏矩阵和 sklearn 进行线性回归。
我有 53 个案例,使用 unigrams 时有超过 6000 个特征。预测是基于 LeaveOneOut 交叉验证进行的。
当我创建仅包含 unigram 得分的 tf-idf 稀疏矩阵时,预测结果略好于我创建包含 unigram+bigram 得分的 tf-idf 稀疏矩阵。矩阵中添加的列越多(三元组、四元组、五元组等的列),回归预测的准确性就越低。
这种情况常见吗?这是怎么可能的?我原本以为特征越多,结果会越好。
回答:
bigrams 表现不如 unigrams 的情况并不常见,但确实存在一些情况会发生。特别是,添加额外的特征可能会导致过拟合。Tf-idf 并不能缓解这种情况,因为更长的 n-grams 会更稀有,导致更高的 idf 值。
我不确定你试图预测的是什么类型的变量,我从未在文本上进行过回归分析,但这里有一些文献中的可比结果供你思考:
- 在使用小型(但非-trivial)训练集进行随机文本生成时,7-grams 往往会几乎逐字重建输入文本,即导致完全过拟合,而三元组更有可能生成“新”的但仍然有些语法/可识别的文本(参见 Jurafsky & Martin;我不记得是哪一章,我手头没有书)。
- 在使用核机器进行分类风格的 NLP 任务时,二次核通常比三次核表现更好,因为后者经常在训练集上过拟合。请注意,unigram+bigram 特征可以被认为是二次核特征空间的一个子集,而 {1,2,3}-grams 是三次核的特征空间的一部分。
具体发生什么取决于你的训练集;它可能只是太小了。