本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书.
本博客仅为个人总结学习,非商业用途,侵删.
网址 http://www.ptpress.com.cn

目录:

  • PCA最大方差理论

  • PCA最小平方误差理论

在机器学习中, 数据通常需要被表示成向量形式以输入模型进行训练。 但是在对向维向量进行处理和分析时, 会极大地消耗系统资源, 甚至产生维度灾难。 因此, 对特征向量进行降维, 即用一个低维度的向量表示原始高维度的特征就显得尤为重要。

PCA(Principal Components Analysis),它属于一种线性,非监督,全局的降维方法。旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。

PCA最大方差理论

我们不妨先从最简单的二维数据进行推到,看PCA是如何工作的。如下图所示:

上图中表示经过中心化的一组数据,我们很容易看出主成分所在的轴的大致方向,即图b中黄线所在的轴。因为在黄线所处的轴上,数据分布的更为分散,意味着数据在这个方向上方差更大。所以从上图可以引出,PCA的目标即最大化投影方差,也就是让数据在主轴上投影的方差最大。

对给定的一组数据点{\(v_1,v_2,…,v_n\)},其中所以向量均为列向量,中心化后的表示为:
=,其中

进行中心化的意义是让数据投影后的平均值为0,更容易描述找到的投影向量。且在进行了中心化后,所有样本投影之后的均值为0,即

我们知道向量内积在几何上表示为第一个向量投影到第二个向量上的长度,因此向量\(x_i\)在ω( 单位方向向量) 上的投影坐标可以表示为 。 所以目标是找到一个投影方向ω, 使得\(x_1,x_2,...,x_n\),在ω上的投影方差尽可能大。

所以投影后得方差可以表示为:



仔细观察可以发现,其实就是样本的协方差矩阵,我们将其写作Σ。由于ω是单位方向向量, 即有\(ω^Tω\)=1。因此我们要求解的最大化问题,可以表示为:

引入拉格朗日乘子, 并对ω求导令其等于0, 便可以推出Σω=λω, 此时

根据我们学过的线性代数知识,我们会发现,原来,\(x\)投影后的方差就是协方差矩阵的特征值。我们要找的最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应得特征向量。次投影方向位于最佳投影方向得正交空间中,是第二大特征向量对应得特征向量,以此类推。
所以我们可以得到PCA求解得步骤:

  • 1,对样本数据进行中心化;
  • 2,求样本得协方差矩阵;
  • 3,对协方差矩阵进行特征值分解,将特征值从大到小排序;
  • 4,去特征值前d大对应得特征向量\(ω_1,ω_2,...,ω_d\),通过以下映射将n维样本映射到d维。

新的\(x_i^′\)的第d维就是\(x_i\)在第d个主成分\(ω_d\)方向上的投影, 通过选取最大的d个特征值对应的特征向量, 我们将方差较小的特征( 噪声) 抛弃, 使得每个n维列向量\(x_i\)被映射为d维列向量\(x_i^′\), 定义降维后的信息占比为

总结: PCA是一种线性降维方法,有一定的局限性,我们可以通过核映射对PCA进行扩展得到核主成分分析(KPCA),也可以通过流形映射的降维方法, 比如等距映射、 局部线性嵌入、 拉普拉斯特征映射等, 对一些PCA效果不好的复杂数据集进行非线性降维操作。

PCA最小平方误差理论

前面求解一条直线使得样本点投影到该直线上的方差最大。从求解直线的思路出发,很容易联想到数学中的线性回归问题,其目标也是求解一个线性函数使得对应直线能够很好地拟合样本点集合。从这个角度出发,PCA的目标就会转换为一个回归问题,在高维空间中,我们实际要找一个d维超平面,使得数据点到这个超平面的距离平方和最小.

以d=1为例,超平面退化为直线,即把样本投影到最佳直线,最小化的就是所有点到直线的距离平方之和。如下图所示:

数据集中每个点\(x_k\)到d维超平面D的距离为:

其中 表示\(x_k\)在超平面D上的投影向量。如果该超平面由d个标准正交基构成,根据线性代数理论可以由这组基线性表示:

其中\(ω_i^T x_k\)表示\(x_k\)在\(ω_i\)方向上投影的长度.因此,实际上就是\(x_k\)在W这组标准正交基下的坐标.而PCA要优化的目标为:

由向量内积的性质,我们可以知道,,于是可以将上面式子中的每一个距离展开

根据展开后的式子来看,

  • 第一项\(x_k^Tx_k\)与选取的W无关,是个常数。
  • 第二项为:


  • 第三项为:

第三项中,\(ω_i^T x_k\) 和\(ω_j^T x_k\) 表示投影长度, 都是数字.且当i≠j时,\(ω_i^Tω_j=0\),因此第三项的交叉项中只剩下d项:

我们可以看到实际上就是矩阵\(W^Tx_kx_k^TW\)的迹(对角线之和),于是可以将距离差的平方继续化简为:

所以原来的优化目标函数可以写成:


根据矩阵乘法的性质,因此优化问题可以转化为,这等价于求解带约束的优化问题

如果我们对W中的d个基\(ω_1,ω_2,...,ω_d\)依次求解, 就会发现和最大方差理论的方法
完全等价。 比如当d=1时, 我们实际求解的问题是

最佳直线ω与最大方差法求解的最佳投影方向一致, 即协方差矩阵的最大特征值所对应的特征向量, 差别仅是协方差矩阵Σ的一个倍数, 以及常数 偏差,但这并不影响我们对最大值的优化。

总结:我们从最小平方误差的角度解释了PCA的原理、 目标函数和求解方法。 不难发现,这与最大方差角度殊途同归, 从不同的目标函数出发, 得到了相同的求解方法。

【降维】主成分分析PCA推导的更多相关文章

  1. 机器学习之路:python 特征降维 主成分分析 PCA

    主成分分析: 降低特征维度的方法. 不会抛弃某一列特征, 而是利用线性代数的计算,将某一维度特征投影到其他维度上去, 尽量小的损失被投影的维度特征 api使用: estimator = PCA(n_c ...

  2. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

  3. 降维(一)----说说主成分分析(PCA)的源头

    降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...

  4. 主成分分析(PCA)原理及推导

    原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...

  5. 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射

    机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...

  6. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  7. 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)

    1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...

  8. 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)

    目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...

  9. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

随机推荐

  1. IntelliJ IDEA 2017.3尚硅谷-----取消标题单行显示

  2. CTF_论剑场 头像

    首先打开链接发现这个链接是一个头像 然后下载这个头像 通过hxd分析一下 在编辑中查找 flag 然后发现flag是一个用base64 加密的一串文字 然后我们将这串文字 解密 然后再通过md5 32 ...

  3. 【渗透测试】ZipperDown 漏洞分析

    0x01 漏洞危害 1. 在使用 HTTP 下载 zip 包并使用有问题的第三方库 unzip 时,攻击者通过劫持 HTTP 流量,可以导致 APP 下载一个恶意的 zip 包,在解压 zip 包时可 ...

  4. ($children,$refs,$parent)的使用

    如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? $refs 首先你的给子组件做标记.demo :<firstchild ref="one"> ...

  5. mybatis的8月29日

    一.select查询语句 1.mybatis的映射,jdbc预处理 <select id="selectPerson" parameterType="int&quo ...

  6. go基础_切片

    切片创建方式 1.通过数组创建 2.通过内置函数make创建 切片允许的操作 1.追加元素 2.通过内置函数make创建 package main import "fmt" fun ...

  7. 数据提取之JSON与JsonPATH

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  8. 每天进步一点点------Altium Designer Rules规则详解

    对于PCB的设计, AD提供了详尽的10种不同的设计规则,这些设计规则则包括导线放置.导线布线方法.元件放置.布线规则.元件移动和信号完整性等规则.根据这些规则, Protel DXP进行自动布局和自 ...

  9. Eclipse导入git上的maven web项目 以及部署成功运行

      在公司开发的时候都是用maven 以及git环境 开发的环境,那么我们初学者怎么将公司的项目成功导入到eclipse中,并且成功运行那???下面的教程就可以告诉大家~ (ps:第二步可能是大家会遇 ...

  10. 种树-洛谷P1250(差分约束)

    传送门 令前缀和为s[i],则⼀一个要求等价于 s[r] - s[l - 1] >= x. 题中还有别的要求,包括 s[i] - s[i - 1] <= 1 和 s[i] - s[i- 1 ...