来自 Sk-learn CountVectorizer 的高稀疏矩阵的含义
Posted
技术标签:
【中文标题】来自 Sk-learn CountVectorizer 的高稀疏矩阵的含义【英文标题】:meaning of High sparsity matrix from Sk-learn CountVectorizer 【发布时间】:2020-09-04 15:59:45 【问题描述】:我使用 sk-learn.CountVectorizer() 创建向量矩阵,发现它有 57% 被 0 填充。在某些在线案例中,他们的稀疏矩阵只有 30% 被零填充。我想知道稀疏程度的影响。在稀疏矩阵中具有更少的零是更好还是更差或没有区别?对于这个观察,我们可以给出什么 cmet?
【问题讨论】:
【参考方案1】:事实上,30% 甚至 57% 的零不意味着高度稀疏。因此,在您的情况下,忽略稀疏事实并将您的矩阵视为密集矩阵是足够安全的。
真正的高稀疏性类似于 99.99% 的零。它发生在推荐系统等问题中,当有数千甚至数百万个项目时,每个用户只与其中几个进行交互。另一种情况是当我们有非常短的文本(例如推文或对话轮次)和非常大的词汇量(甚至可能是多语言词汇)时。
如果特征矩阵的稀疏度真的很高,则意味着:
-
如果您想有效地存储矩阵或使用它进行快速计算,您可能需要使用明确支持
scipy
的稀疏矩阵的算法。
特征空间可能是高维的,并且可能某些特征彼此高度相关。因此,您可能会发现降维有助于使您的模型更易于处理和更好地泛化。您可以使用矩阵分解技术(例如 PCA)或神经嵌入层来实现这种降维。或者,也许您可以使用预训练的词嵌入并以某种方式聚合它们来表示您的文档。
一般来说,表示文档的最佳方式取决于您要解决的最终问题。对于某些问题(例如具有大型训练集的文本分类),高维稀疏表示可能是最佳的;对于其他人(例如,小文本的相似性或带有小标签训练集的文本分类),低维密集表示会更好。
【讨论】:
以上是关于来自 Sk-learn CountVectorizer 的高稀疏矩阵的含义的主要内容,如果未能解决你的问题,请参考以下文章