主成分分析(PCA,Principal Component Analysis)

主成分分析(PCA,Principal Component Analysis)

1.介绍

就像聚类是基于邻近度对数据集进行分区一样,你可以将PCA看作是对数据中的变化进行分区。PCA是一个很好的工具,可以帮助我们发现数据中的重要关系,也可以用来创建更多的信息特征。(技术说明:PCA通常应用于标准化数据。对于标准化数据,“变化”意味着“相关性”。对于非标准数据,“变化”意味着“协方差”。这儿的数据都为标准化数据。)

2.PCA

Abalone数据集中有几千只塔斯马尼亚鲍鱼的物理测量数据(鲍鱼是一种海洋生物,很像蛤蜊或牡蛎。)我们现在只看几个特征:它们壳的“高度”和“直径”。

你可以想象,在这些数据中有“变异轴”,它们描述了鲍鱼彼此之间的差异。从图形上看,这些轴显示为沿着数据的自然维度的垂直线,每个原始特征对应一个轴。


...

通常,我们可以给这些变化轴命名。我们将长轴称之为“Size”组件:小高度和小直径(左下)与大高度和大直径(右上)。我们称短轴为“Shape”的组件:小高度和大直径(扁平形状)与大高度和小直径(圆形形状)。

注意,与其用“高度”和“直径”来描述鲍鱼,不如用“Size”和“形状"Shape”来描述鲍鱼。事实上,这就是主成分分析的全部思想:我们用轴来描述数据,而不是用原始特征来描述数据。变换后的轴成为新的特征。


...

新特征PCA构造实际上只是原始特征的线性组合(加权和):


...

这些新特征被称为数据的主成分。权重本身称为loadings。主成分的数量将与原始数据集中的特征数量一样多:如果我们使用十个特征而不是两个特征,那么我们最终将得到十个成分。

...

这张表告诉我们,在Size构件中,高度和直径沿同一方向(同一符号)变化,但在Shape构件中,它们沿相反方向(相反符号)变化。在每个分量中,荷载的大小都是相同的,因此特征对两者的贡献是相等的。

主成分分析还告诉我们每个成分的变化量。从图中可以看出,数据沿Size分量的变化比沿Shape分量的变化大。主成分分析通过每个成分的可解释方差(explained variance)百分比来精确计算。


...

Size分量捕捉高度和直径之间的大部分变化。然而,重要的是要记住,一个组成部分的方差量并不一定与它作为一个预测因子的好坏相对应:它取决于你试图预测什么。

3.PCA和特征工程

有两种方法可以将PCA用于特征工程。

第一种方法是使用它作为一种描述性的技术。因为组件告诉你变化,你可以计算组件的MI分数,看看什么样的变化最能预测你的目标。这可能会给你一些想法来创建各种特征——比如说,如果“Size”很重要,那么是“高度”和“直径”的乘积;如果Shape很重要,那么是“高度”和“直径”的比值。您甚至可以尝试对一个或多个高分组件进行聚类。

第二种方法是使用组件本身作为特征。因为组件直接显示了数据的变化结构,所以它们通常比原始特征信息更丰富。以下是一些用例:

降维:当特征高度冗余(特别是多重共线)时,PCA将把冗余划分成一个或多个接近零方差的分量,然后可以删除这些分量,因为它们将包含很少或没有信息。 异常检测:从原始特征看不明显的异常变化,通常会出现在低方差分量中。在异常或离群点检测任务中,这些组件可能具有很高的信息量。 降噪:传感器读数的集合通常会共享一些常见的背景噪声。PCA有时可以将(信息性的)信号收集成少量的特征,而不考虑噪声,从而提高信噪比。 去相关:一些ML算法难以处理高度相关的特征。主成分分析将相关特征转换为不相关的成分,这对你的算法来说更容易处理。

注意:

PCA只适用于数字特征,如连续数量或计数。 PCA对尺度敏感。在应用PCA之前标准化你的数据是一个很好的做法,除非你知道你有充分的理由不这样做。 考虑去除或约束极端值,因为它们会对结果产生不适当的影响。

4.例子


... ... ...

我们选择了四个功能,涵盖了一系列属性。这些特性中的每一个都有一个很高的MI分数,目标是价格。我们将对数据进行标准化,因为这些特性自然不在同一范围内。


...

现在我们可以拟合scikit-learn的PCA估计并创建主成分。你可以在这里看到转换数据集的前几行。


... ...
... ... ... ...