我的数据旁边有一个稀疏矩阵。我认为这些数据可能是有益的,但因为它在通常的使用中是稀疏的,所以没用。有什么方法可以改造吗?比如PCA,你有经验吗?
附加细节:
我从事来自 Kaggle.com 的巨大竞争,我将国籍(基本名称特征)添加到数据中。我的国籍类似于:“北欧,斯堪的纳维亚,挪威”,所以我已将其转换为虚拟变量,但随后我有一个稀疏矩阵。
我认为通常稀疏矩阵对分类没有帮助,我们应该对其进行转换。(???是真的吗?)
我认为我应该以某种方式合并我的功能以减少稀疏性。
我的数据旁边有一个稀疏矩阵。我认为这些数据可能是有益的,但因为它在通常的使用中是稀疏的,所以没用。有什么方法可以改造吗?比如PCA,你有经验吗?
附加细节:
我从事来自 Kaggle.com 的巨大竞争,我将国籍(基本名称特征)添加到数据中。我的国籍类似于:“北欧,斯堪的纳维亚,挪威”,所以我已将其转换为虚拟变量,但随后我有一个稀疏矩阵。
我认为通常稀疏矩阵对分类没有帮助,我们应该对其进行转换。(???是真的吗?)
我认为我应该以某种方式合并我的功能以减少稀疏性。
你的整个问题都很有道理,除了:
因为它在通常的用法中是稀疏的,所以没用
因此,我将尝试从不同的角度来回答这个问题。
稀疏矩阵并非无用,因为许多包包含接受稀疏矩阵作为输入的算法。
您可以以Sklearn的 SVM 为例。
您需要一个特殊的实现来处理稀疏矩阵,因为它们的存储方式与普通矩阵不同。但是,正如@Majid Mortazavi 的评论中提到的,您可以按照此答案将稀疏矩阵转换为普通矩阵并使用任何其他实现。你只需要小心你的内存使用。
稀疏矩阵并非无用,因为机器学习中的许多领域都使用了稀疏特征。
你可以以 NLP 为例。文本分类中使用的一个常见特征是TF-IDF,它是文档的稀疏表示。
由于数据稀疏,通常使用线性模型进行分类就足够了,因为数据点的大部分特征都是。这可以被认为是一件好事,因为它们更容易和更快地计算并且不需要多项式内核。
您还提到了 PCA 用于降维,但我不明白为什么此时您需要它。好像您正在创建一个稀疏矩阵来编码分类特征。
也许,您可以看看更好的方法来处理分类特征,而不是减少您的稀疏矩阵。
对于稀疏矩阵,您可以使用 TruncatedSVD 而不是 PCA。逻辑类似,但它接受 NLP 文本等稀疏数据。