我们应该如何在分类中使用稀疏矩阵?

数据挖掘 转型
2022-03-01 01:56:52

我的数据旁边有一个稀疏矩阵。我认为这些数据可能是有益的,但因为它在通常的使用中是稀疏的,所以没用。有什么方法可以改造吗?比如PCA,你有经验吗?


附加细节:

我从事来自 Kaggle.com 的巨大竞争,我将国籍(基本名称特征)添加到数据中。我的国籍类似于:“北欧,斯堪的纳维亚,挪威”,所以我已将其转换为虚拟变量,但随后我有一个稀疏矩阵。

我认为通常稀疏矩阵对分类没有帮助,我们应该对其进行转换。(???是真的吗?)

我认为我应该以某种方式合并我的功能以减少稀疏性。

2个回答

你的整个问题都很有道理,除了:

因为它在通常的用法中是稀疏的,所以没用

因此,我将尝试从不同的角度来回答这个问题。

稀疏矩阵的实现

稀疏矩阵并非无用,因为许多包包含接受稀疏矩阵作为输入的算法。

您可以以Sklearn的 SVM 为例。

您需要一个特殊的实现来处理稀疏矩阵,因为它们的存储方式与普通矩阵不同。但是,正如@Majid Mortazavi 的评论中提到的,您可以按照此答案将稀疏矩阵转换为普通矩阵并使用任何其他实现。你只需要小心你的内存使用。

稀疏矩阵的理论应用

稀疏矩阵并非无用,因为机器学习中的许多领域都使用了稀疏特征。

你可以以 NLP 为例。文本分类中使用的一个常见特征是TF-IDF,它是文档的稀疏表示。

由于数据稀疏,通常使用线性模型进行分类就足够了,因为数据点的大部分特征都是这可以被认为是一件好事,因为它们更容易和更快地计算并且不需要多项式内核。0

解决您的挑战

您还提到了 PCA 用于降维,但我不明白为什么此时您需要它。好像您正在创建一个稀疏矩阵来编码分类特征。

也许,您可以看看更好的方法来处理分类特征,而不是减少您的稀疏矩阵。

对于稀疏矩阵,您可以使用 TruncatedSVD 而不是 PCA。逻辑类似,但它接受 NLP 文本等稀疏数据。