【问题标题】:Normalization before PCA on different data types在 PCA 之前对不同数据类型进行归一化
【发布时间】:2019-03-18 14:07:18
【问题描述】:

在运行主成分分析之前,您应该对数据进行规范化,以免结果出现偏差。在正常情况下,这是一个相当简单的任务。我很好奇我应该如何规范化我的数据,其中包含数据集中的多种数据类型。我认识的一些(坚信)非常重要。其他我不太确定,但这就是我想在我的数据集上运行 PCA 的原因。

    0       1       2       3       4    ...
  0.112   'Bob'   68.47   'Right'  9493  ...

类似这样的东西,其中可能有一个没有分类支持的字符串,例如名称。而“权利”可以枚举到一个类别。

我不确定这是否有必要,但我会很感激一些建议。

【问题讨论】:

    标签: python pca


    【解决方案1】:

    首先,在没有固有顺序的变量上运行 PCA 时,您应该非常小心。比如分类数据。

    其次,想想将 PCA 应用于名称之类的东西意味着什么。 PCA 适用于具有方向的长度的向量。鲍勃的长度是多少,它指向哪个方向?

    您可以尝试的一件事是将字符串数据转换为 N-Gram,这将是完美的向量。另一件要尝试的事情是应用 TF-IDF 转换,这又会给你一个向量。

    一旦您应用了其中一种转化。您遇到了将向量嵌入向量中的问题。您可以尝试通过串联和归一化将它们组合成一个向量。或者您可以放弃 PCA,将您的数据集视为张量的集合,并应用 multilinear component analysis 之类的东西,这是 PCA 对张量的扩展。

    请注意,这些方法中的任何一种都需要产生巨大的向量,因此您需要拥有大量数据实例才能从分析中获得任何有意义的东西。

    【讨论】:

    • 我目前有数百万行和太多列......所以我正在努力减少。感谢弗拉德的快速回复。
    • 数百万行是好的,很多列是坏的。我上面提到的技术将产生更多的列。一般的经验法则是行比列多两个数量级。因此,数百万行可以支持大约 10,000 列。这听起来可能很多,但是当您开始使用 N-Grams 和 TF-IDF 时,您将生成数千列。最小化列的一种技术是丢弃所有数值非常小的列。您可能应该在标准化后执行此操作。
    • 看看这个 MOOC。您可以学习大量与您的任务相关的好技术open.hpi.de/courses/semanticweb2017
    猜你喜欢
    • 2012-04-24
    • 2020-07-24
    • 2021-11-23
    • 2010-10-24
    • 2020-03-22
    • 2022-01-06
    • 2018-03-27
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多