【问题标题】:Why is MCA so much slower than PCA?为什么 MCA 比 PCA 慢这么多?
【发布时间】:2019-12-05 07:36:25
【问题描述】:

我有一个大型(50k 行,2k 列)稀疏二进制数据集,因此 PCA 不是降维的最佳选择。我下载了this mca 包,运行如下代码:

import mca
import pandas as pd
data_dummy = mca.dummy(pd.DataFrame(data))
mca_counts = mca.MCA(data_dummy)
mca_components = mca_counts.fs_r(1)

我已经让它运行了一个多小时,仍然没有。相比之下,sklearn 的 PCA 实现在 30 秒内完成了相同的数据集。我做错了什么可怕的事情吗?或者 MCA 不是一种确定性的全局优化算法,不像 PCA 那样。如果是这样,我应该看看另一种实现吗?我只是想为稀疏的分类(二进制)数据找到一种快速的、下降的降维技术。

【问题讨论】:

  • 尝试使用 skmca 或 Prince : github.com/MaxHalford/Prince
  • 你的数据怎么样?它有分类数据还是数值数据?
  • 数据为数字
  • 如果它是数字的,你应该使用 PCA,MCA 更适合分类数据MCA。我认为正在发生的事情是它假设您的数据是分类的,然后尝试将其转换为数字以减少维度会花费时间。但是不要相信我的话,我不是 100% 确定。
  • 我不认为这是正在发生的事情。即使我不运行将数据转换为数字分类数据(并自己转换)的mca.dummy() 函数,它仍然不会在一小时内完成。实际的 MCA 是什么,我不知道为什么

标签: python performance pca dimensionality-reduction


【解决方案1】:

不要使用我正在使用的 MCA 包。使用Prince,就像@LazyCoder 建议的那样。我不太确定为什么它这么快,但这似乎解决了它。

【讨论】:

    猜你喜欢
    • 2013-02-01
    • 2013-06-05
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2011-02-28
    • 2018-02-18
    相关资源
    最近更新 更多