主成份剖判算法

动机一:压缩数据(Data Compression)

现假设有如下数据集,横坐标为特征变量x1,其单位为厘米;纵坐标为特征变量x2,其单位为英寸。

图片 1

我们知道这两个特征变量均为长度计量单位,同时使用不免重复。因此,我们需要将这个二维数据集降为一维数据集。

对于该问题降维的具体做法为:先找到一条合适的直线,然后将数据投影到这条直线上,最后我们将这些投影到直线上的数据用z标识。

降维可以将对存储、内存占用空间减半,使得运行这些数据的算法运行得更快。

下图为三维数据集降为二维数据集的例子。

图片 2

PCA
算法主要是把高维度的数据降为低维度数据。典型地应用包括数据压缩和数据可视化。本文介绍
PCA 算法及其典型应用。
今天简书有点问题,公式的图片老是上传不成功,感兴趣的移步
http://blog.kamidox.com/pca.html

动机二:数据可视化

我们将数据可视化能让我们更为直观地找寻一个更好的解决方案。但对于维度较高的数据集,我们将其可视化是不可能的。因此,我们可以通过降维使得数据集可视化。

维数约减

维数约减 (Dimensionality Reduction)
是把高维度数据损失最小的情况下转换为低维度数据的动作。

动机:为什么需要维数约减

动机一:数据压缩

维数约减即减少数据的维度,比如从 2 维降成 1 维,从 3 维降成 2
维等。好处是节省内存,提高运算速度。比如,我们有多个特征,其中两个特征的相关性非常大,一个是用
cm 测量的长度,另外一个是用 inch 测量的长度
(实际上这可能是个真实的例子,因为一个实际问题可能有 1000
个特征,而采集这些特征的工程师可能不是同一个人,这样他们采集回来的数据就可能存在重复,即高相关性)。那么我们可以把这两个高相关性的特征用一条直线来表示,$x^{(i)}
= {x_1^{(i)}, x_2^{(i)}}$ 简化为 $z^{(i)} =
{z_1^{(i)}}$。相同的原理,如果在一个 3
维空间里,一些点基本分布在一个平面上,那么就可以把 3 维降成 2 维,即
$x^{(i)} = {x_1^{(i)}, x_2^{(i)}, x_3^{(i)}}$ 简化为 $z^{(i)} =
{z_1^{(i)}, z_2^{(i)}}$。

图片 3

数据压缩

上图示例的就是把用英寸测量的特征和用厘米测量的特征合并起来的示意图。这里有个问题,为什么按
inch 测量的特征和按 cm
测量的特征不是在同一条直线上,而是在一条直线周围波动?实际上这个是正常的,因为测量的人和误差等方面的原因,会导致特征采集时数据会在误差范围内波动。

动机二:数据可视化

比如考查一个国家的经济状况,可能会有 50 个特征,经济总量,人均
GDP,出口值,进口值等等。如果想要直观地观察多个特征之间的关系,就比较难办。因为我们很难画出
50 个特征的图出来。这个时候,我们可以把 50 个特征简化为 2 维或 3
维的数据,然后画出 2D 或 3D 图出来,就可以直观地观察这些数据的样子。

主成份分析法

主成份分析法简称 PCA (Principal Component
Analysis),这是目前最常用和流行的数据降维方法。

假设需要把 2 维数据降为 1 维数据时,我们需要找出一个向量 $u^{(1)}$
,以便让 2 维数据的点在这个向量所在的直线上的投射误差最小

图片 4

PCA – 2D to 1D

上图中,我们的目标就是找到红色的向量所在的直线,以便让所有黑色的点到这条直线的平均距离最短,这样我们就可以把原来在二维平面上的点映射到在红色直线所在的一维直线上的绿色的点来表示。即把二维数据降为一维数据。

假如需要把 3 维数据降为 2 维数据时,我们需要找出两个向量 $u^{(1)},
u^{(2)}$,以便让 3 维数据的点在这两个向量所决定的平面上的投射误差最小。

从数学角度更一般地描述 PCA 算法,当我们需要从 n 维数据降为 k
维数据时,我们需要找出 k 个向量 $u^{(1)}, u^{(2)}, … , u^{(k)}$ ,把 n
维的数据投射到这 k
个向量决定的线性空间里,最终使投射误差最小化的过程。

PCA 算法主要步骤

步骤一:数据归一化和缩放

在进行 PCA 算法前,需要对数据进行预处理。预处理包括两个步骤:

  • 数据归一化 (Mean Normalization):使数据的均值为零。加快 PCA
    运算速度。
  • 数据缩放 (Feature Scaling):使不同的特征数值在同一个数量级。

数据归一化公式为:

$$
z_j^{(i)} = x_j^{(i)} – mu_j
$$

其中,$mu_j$ 是训练样本中第 j 个特征 ($x_j^{(i)}$) 的平均值。然后用
$z_j^{(i)}$ 代替 $x_j^{(i)}$ 进行 PCA 运算。

接着对数据进行缩放,缩放只在不同特征数据不在同一个数量级上时才使用。

$$
x_j^{(i)} = frac{x_j^{(i)} – mu_j}{s_j}
$$

其中,$mu_j$ 是训练样本中第 j 个特征 ($x_j^{(i)}$) 的平均值

$$
mu_j = frac{1}{m} sum_{i=1}^m x_j^{(i)}
$$

$s_j$ 是训练样本中第 j 个特征 ($x_j^{(i)}$) 的范围,即 $s_j =
max(x_j^{(i)}) – min(x_j^{(i)})$。

发表评论

电子邮件地址不会被公开。 必填项已用*标注