PCA可视化解读

数据挖掘 scikit-学习 主成分分析 降维 特征
2022-02-20 20:28:52

我正在尝试构建一个分类器来预测特定时间的节目收视率。

我已经提取了大约 109 个特征,其中一些与时间场有关,即,

  • 一年中的一天
  • 一年中的月份
  • 是在周末吗?
  • 在工作时间?
  • 公共假期?

我还包括了一些分类特征,并使用了标签二值化器来显示它出现在哪个频道和广播公司。

我想检查数据集的线性度,这将告诉我是否可以使用线性回归器或像神经网络这样的非线性东西。我决定使用 PCA 进行降维,以便可视化数据集是否在 2D 中线性可分。

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
data_scaled = pca.fit_transform(df[cols])
plt.plot(data_scaled[:,0], data_scaled[:,1], 'ro')
plt.xlabel('first component')
plt.ylabel('second component')
plt.show()

主成分分析结果

我对结果感到非常困惑,无法解释这一点。

第一个组件的图:

第一个组件的绘图

第二个组件的图:

在此处输入图像描述

PCA 结果能说明什么?什么会导致这些图表?

2个回答

不要将 PCA 应用于分类数据

PCA 试图找到数据集中包含最大方差的维度。当您有分类变量时,点之间的距离和变量捕获的方差是不明确的。首先,您没有适当的距离度量来判断两个类别之间的距离,其次,您的类别的顺序会产生很大的影响。对月份进行分类排序将导致 1 月和 2 月之间的距离较小,但 12 月和 1 月之间的距离较大。如果您要对广播公司或频道等内容进行分类,则放置内容没有自然顺序,因此您的距离测量基本上没有意义。您的 PCA 图看起来很奇怪,因为您已将其应用于分类数据 - 这不是您的数据的有意义的表示。

每个 PCA 组件都是您的居中数据在一条线上的投影。居中将您的原点置于多维数据的中心。然后选择每个分量线方向,以使投影具有最大的可变性。连续的组件方向在构造上是正交的。

通常,PCA 适用于连续数据(与分类数据相反)。当有许多类别并且类别是有序的(即接近连续数据)时,它也可以处理分类数据。

您所看到的是数据的分类性质。第一个组成部分是 12 个月,第二个组成部分是一周中的 7 天。看来这两个变量在您的数据中具有最大的差异。它们是等距的,因为它们的数字表示是等距的。

关于 PCA 的最佳书籍可能是http://cda.psych.uiuc.edu/statistical_learning_course/Jolliffe%20I.%20Principal%20Component%20Analysis%20(2ed.,%20Springer,%202002)(518s) MVsa .pdf