【降维】主成分分析PCA推导
本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书.
本博客仅为个人总结学习,非商业用途,侵删.
网址 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推导的更多相关文章
- 机器学习之路:python 特征降维 主成分分析 PCA
主成分分析: 降低特征维度的方法. 不会抛弃某一列特征, 而是利用线性代数的计算,将某一维度特征投影到其他维度上去, 尽量小的损失被投影的维度特征 api使用: estimator = PCA(n_c ...
- 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】
前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...
- 降维(一)----说说主成分分析(PCA)的源头
降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...
- 主成分分析(PCA)原理及推导
原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...
- 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射
机器学习降维方法概括 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...
- 一步步教你轻松学主成分分析PCA降维算法
一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...
- 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)
1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...
- 主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)
目录 主成分分析(PCA)——以葡萄酒数据集分类为例 1.认识PCA (1)简介 (2)方法步骤 2.提取主成分 3.主成分方差可视化 4.特征变换 5.数据分类结果 6.完整代码 总结: 1.认识P ...
- 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA
本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...
随机推荐
- HTML入门归纳--JavaScript
本人一直在从事.net的开发,界面都是采用的WPF,近期花了一个多月进行HTML前端的学习,在这里呢进行学习总结和归纳. 本系列将主要分为4个模块: 控件 样式 布局 JavaScript 根据多年W ...
- linx下跑多个tomcat
1.修改server.xml文件 <Server port="8005" shutdown="SHUTDOWN"> <Connector po ...
- python中的循环结构等相关知识
==分支结构== 1.单分支:一般用于只会发生一种情况的场景,if #90以上优秀 score=95 if score>90: print("优秀") 2.双分支:一般用于会 ...
- ASA许可证
每台安装了BASE license的ASA平台都自带了一些隐藏的特性和功能.根据不同国际出口规则,有些ASA上安装的有可能是NO Payload Encryption license.这种许可证会绑定 ...
- libcurl库的简介(一)
一.Libcurl库简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP ...
- 在 Fabric 中使用私有数据
本教程将演示收集器(collection)的使用,收集器为区块链网络上已授权的组织节点 提供私有数据的存储和检索. 本教程假设您已了解私有数据的存储和他们的用例.更多的信息请参阅 私有数据 . 本教程 ...
- 搭建robotframework环境
1.安装rf 执行命令:pip install robotframework; 2.安装seleniumlibrary库 执行命令:pip install --upgrade robotframewo ...
- [蓝桥杯2017初赛]青蛙跳杯子 BFS
题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...
- netty(二)---客户端连接
概述 先了解一下 netty 大概框架图 ,可以看到客户端的创建和服务端最大的区别 - 服务端传入两个 EventLoopGroup,客户端传入一个 EventLoopGroup - channel ...
- zabbix4.4安装和简要设置
简介 Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决 ...