初识机器学习:主成分分析

664 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

主成分分析(Principal components analysis,简称PCA)是机器学习中,对初始数据进行预处理的方法之一,通常用来降维,也就是减少数据点中参与运算的变量的个数。PCA 几乎是需要进行数据降维时最优先被想到的算法。

主成分分析的目的,是为了从原始的数据中,找出最能区分数据点的变量,这个变量就被称为主成分。当找到主成分之后,数据点沿着主成分的维度能够最大限度地分散开。主成分可以使原始数据中的一个变量,但更多时候是一个或者多个变量的加权组合,其中的权重可正可负。

PCA 的原理简述

上面的描述比较抽象,接下来用一个简单的例子来描述它的原理。简单期间,例子中会将一个二维的数据,通过主成分分析的方法,降到一维,更高维度的运算,原理是相同的。

如上图中,每个数据点有两个变量(变量 a 和变量 b),它们被分布在一个直角坐标系中。此时我们想将数据维度从二维降到一维,也就是找到一个维度方向,使数据点在这个维度方向上的投影尽可能分散,且向这个方向的投影距离尽量短,这个数据点在这个方向上的投影,便替代原始数据,这样便完成了降维。但是降维会带来数据的损失,上面提到的「数据点向这个方向的投影要尽可能短」就是为了降低降维造成的数据损失。

在上图中,PC1 方向就是最能代表原始数据集的方向,而数据点投影在 PC2 方向上的值,就是会被损失的数据。

假设某一个数据点的两个变量值为 x 和 y,那么,我们最终找到的主成分是ax+bya*x+b*y ,也就是变量 x 和 y 的加权组合,a 和 b 代表权重。最终,包含 x 和 y 两个变量的数据点,就被降维成了包含一个变量(ax+bya*x+b*y )的数据点。

主成分数量的选择

更少的主成分数,可以让结果更简单通用;而更多的主成分数,可以将数据损失降低。因此,最终维度数的选择,也是一个权衡,这里可以使用陡坡图来确定合适的主成分数量。

PCA 的特性

PCA 的使用非常广泛,尤其是分析包含很多变量的数据的时候。但是,它也不是万能的,我们在选择使用 PCA 的时候,有些因素是必须要考虑的。

  • 第一,主成分分析会最大限度地找让数据点最分散的维度,但是实际应用中,并非是这样的维度才是最有价值的,或者并非一定是解决问题的最佳办法。
  • 第二,主成分的意义难以表达。比如上面的例子中,原始数据中数据点的变量 x 和 y 都有其实际意义,它们可能是购物的订单额和事件、或者食物的脂肪含量和维生素含量等,但是我们很难解释ax+bya*x+b*y 代表什么。可能在某些场景中,代表了多个变量的正/负相关性,但并不是所有情况都如此。