降维与PCA算法

作者: 此间不留白 | 来源:发表于2019-05-08 21:00 被阅读70次

前言

在之前的学习中,已经学习了无监督学习中的K均值算法。除此算法之外,无监督学习还有另外一种新的算法,该算法被称之为降维。使用降维算法的目的之一就是实现数据压缩,数据压缩不仅可以对数据进行优化,减少算法对硬盘空间和内存的消耗,还可以减少算法运行所消耗的时间。

降维

数据压缩

降维,简而言之就是减少数据维度,对于一组数据,可能存在高度冗余的特征。例如同一物体的体积和质量,可以用二维矩阵表示物体的体积和质量特征,但是由于其密度一样,体积和质量特征重合,可以只选择体积或者质量一个特征来表示物体的大小,即也就是降维,将用来表示物体大小的二维矩阵转化为一维向量。
如下图所示的,可以用变量(x_1,x_2)表示某种事物,而变量(x_1,x_2)之间近似存在着线性关系,可以将二维变量(x_1,x_2)投影到一维变量z上,用变量z的位置表示变量(x_1,x_2)的位置,二维变量变为一维变量,减小了数据冗余,实现了数据压缩。

可视化

以上,讨论了降维在对于数据压缩方面的应用。而降维的另外一个作用就是实现数据可视化。对于一个超过三维的高维数据集,很难用图形或者图像化的方式描述这些数据,而通过降维,可以将高维数据转化为二维或者三维,以方便数据可视化的实现。例如,在描述一个国家发展水平方面可以有多项数据作为指标,包括GDP,人均GDP,人均寿命,人均收入,人均消费支出等,将这些指标构成的高维数据及进行可视化是很难实现的。通过降维算法,可以将以上指标化为国家发展指数和国家GDP两个指标,将高维数据集化为二维数据集,如此,对于二维数据集就很容易地实现了可视化操作。如下图所示:


主成分分析算法(PCA算法)

概述

降维实现中,最常用的算法就是主成分分析算法。如下图所示,假设有一个二维数据集需要通过降维算法实现为一维数据集,就像线性回归一样,需要找到一条二维数据集的回归直线,使得二维数据集的每一个点到这条直线的投影距离最小。



推而广之,PCA算法的主要实现思路如下所示:

{n}维数据降维形成k维数据时: 寻找{k}维向量{v_1,v_2,v_3 ……v_k}投影这些数据,并且使得投影误差最小。用线性代数解释就是将这些数据集投影到这{k}个向量展开的线性子空间上。如下图所示,三维数据降为二维向量。

注意,线性回归与PCA之间的区别,以二维数据集为例,线性回归是寻找一条拟合直线,根据输入,对输出做出预测,其点到回归直线的距离表示输入值与输出值之间的差值,这个差值所形成的直线一定与y轴平行,而PCA算法中,点到向量的距离是点与向量之间的正交距离。如下图所示:

PCA算法的主要实现过程如下所示:

  1. 特征缩放/均值标准化
    假设有m个数据构成的训练集x^{(1)},x^{(2)},……x^{(m)}
    则定义u_j=\frac{1}{m}\sum_{i=1}^{m}x_j^{(i)}
    则令 x_j = x_j-u_j
    通过以上特征缩放,能够将相差较大的特征值调整至相同的变化范围。
  2. 协方差矩阵(Covariance Matrix)
    n维数据降维至k维,计算每个特征的协方差矩阵,具体可由如下公式表示:
    A = \frac{1}{m}\sum_{i=1}^{m}(x^{(i)})(x^{(i)})^T
  3. 计算协方差矩阵A的特征向量
    协方差矩阵A总是一个正定矩阵,通过计算这个正定矩阵的特征向量,得到三个矩阵,如下所示:
    [U,S,V] = SVD(A)

SVD 即是线性代数中的奇异值分解算法。

  1. 得到降维后的矩阵
    通过以上计算,得到3个n*n的方阵,选取矩阵U的前k个向量,记作U_{k},该矩阵是一个k*n的矩阵,若降维后的矩阵用Z表示,则有:
    Z = U_{k}^T*x

U_{k}^T是一个k*n维的矩阵,而x是一个n*1的矩阵,最后得到的矩阵Z\in R^k

最后,通过以上步骤,实现了使用PCA算法的降维过程。

主成分数量选择

为了尽可能的减小k的值,即也就是主成分的数量,应该满足以下计算公式:

\frac{\frac{1}{m}\sum_{i=1}^{m}||x^{(i)}-x_{approx}^{(i)}||^{2}}{\frac{1}{m}\sum_{i=1}^{m}||x^{(i)}||^2} \le \ \ 0.01

其中x_{approx}^{(i)} 表示第i个数据的投影值。

压缩重现

通过PCA算法,可以实现数据降维,降维后的数据也可以通过PCA算法得到的参数映射得到原来的高维数据,如下所示:

x_{approx} = U_k*z
以上公式中,若||x^{(i)}-x_{approx}||^{2}越小,压缩重#

监督学习中使用PCA算法

以上,主要介绍了在无监督学习中是使用PCA算法。但是在实际应用中,有大量的监督学习算法涉及到高维数据,例如,计算机视觉中,经常涉及到图像处理问题。
监督学习中PCA算法的使用如下所示:
假设有数据为(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),……(x^{(m)},y^{(m)})
其中,x \in R^{100}

  1. 以对训练集中的输入变量x进行无标签处理,即也就是当作无监督学习中的数据,不进行标签划分;

  2. 再使用PCA算法,得到一组新的数据集,得到降维后的数据z^{(1)},z^{(2)}……z^{(m)}

  3. 最后对新的数据集(z^{(1)},y^{(1)}),(z^{(2)},y^{(2)}),……(z^{(m)},y^{(m)})运行监督学习算法。

注意:只能对训练集使用PCA算法,而不能对交叉验证集和测试集使用。

相关文章

  • PCA

    PCA降维 一、算法原理 降维算法 还原算法 二、算法实现 三、scikit-learn PCA 四、PCA降噪 ...

  • Sklearn中的降维究竟是如何实现的

    sklearn中的降维算法 1. PCA与SVD sklearn中降维算法都被包括在模块decomposition...

  • PCA算法实现

    前言 PCA算法是数据降维中最常用的算法之一,利用PCA算法实现的数据降维能够有效减少算法运行时间和算法对硬件的消...

  • 5 主成分分析PCA

    主成分分析(PCA)是最常见的降维算法。 PCA是非监督的机器学习算法 主要用于数据的降维 其他应用:可视化、去噪...

  • 在线作图|2分钟绘制三维PCA图

    三维PCA 主成分分析算法(PCA)是最常用的线性降维方法。PCA降维为了在尽量保证“信息量不丢失”的情况下,对原...

  • PCA原理与Sklearn参数详解

    目录 1、PCA算法原理 2、总结 1、PCA算法原理 2、总结:本文主要介绍了PCA降维原理,并介绍了Sklea...

  • 降维与PCA算法

    前言 在之前的学习中,已经学习了无监督学习中的K均值算法。除此算法之外,无监督学习还有另外一种新的算法,该算法被称...

  • 无监督第一节:PCA 详细介绍及 kernal PCA ,pro

    1.PCA 主成分分析(Principal Component Analysis,PCA)是非常经典的降维算法,属...

  • 哲哲的ML笔记(三十:主成分分析PCA)

    PCA基本概念 PCA:Principal Component Analysis,主成分分析 非常普遍的降维算法要...

  • PCA

    什么是PCA PCA是目前最为流行的的降维算法举个例子,把下图二维数据降维成一维数据。 我们可以找出更低维度的空间...

网友评论

    本文标题:降维与PCA算法

    本文链接:https://www.haomeiwen.com/subject/laxjoqtx.html