目录

一、前言

一、什么是PCA?

二、PCA原理

1.通俗的认知

2.其他视角

三、算法实现


一、前言

老鹰是一个三维立体实物,而图片是二维的,但我们能一眼识别出上图是一只老鹰而非鹌鹑,可见对于某些高维的数据,我们可以在低维空间下识其概貌,对其有个清晰的认知。然而,当我们沿老鹰翅尖拍摄一张照片,我们可能并不能很容易地看出这是一只老鹰。归其原因,拍摄的角度不同,导致最终的结果不同,在第一种情况下,图片保留了鹰的大翅膀等特征,所以我们易于识别,而第二张图片展现的鹰的特征较少,所以我们难以识别。在数据挖掘中,有时候数据的维度过高可能导致计算更为复杂,我们希望能有一种方法将高维空间中的数据映射到低维空间中,但同时保留原始数据体现的信息,PCA便是其中常见的一种方法。

一、什么是PCA?

主成分分析(PCA),一种无监督算法,即它不需要依靠任何类别标签的信息,是一种常用的线性降维方法。该算法的目标是通过某种线性投影,将原本高维空间中的一些数据,映射到更低维度的空间中,并在所投影的维度上满足:1.尽可能保留原始数据的信息。2.新维度下变量间两两各不相关。

在线性回归模型中,一般要求特征之间线性相关性较低且特征数少于样本数,否则容易导致参数估计值方差增大及过拟合等问题。而一旦特征数多于样本数时,我们一般会选择增加样本数及减少无关特征等途径来提高回归算法的性能,然而前者可能会增加采样成本而且在实际情况下常常难以实现;后者在实际执行过程中可能无法很快判断并剔除无关或相关性低的特征。而主成分分析算法在这个时候并能充分发挥其作用,高维转低维、新维度下各特征线性无关等优良特性恰好满足我们的需求,所以当数据特征数过多时,我们一般会考虑用PCA对其降维以减少后续回归模型的计算量并提升模型的性能。

二、PCA原理

1.通俗的认知

PCA最直观的认知是旋转坐标轴,使得在新坐标体系下,变量间两两各不相关。当数据点在某几个维度下的坐标值较为接近(方差较小),那么可以认为这几个维度对于数据特征的体现并没有太大帮助,想象数据某个特征的属性值均相等,那么这个特征对于区分数据并没有太大用处,我们完全可以将其剔除,从而实现维度减少,即降维的目的。

上图中蓝色的小点是随机生成的二维空间下带有一定相关性的数据点,我们的目的是将坐标轴旋转,使得各个数据点在新坐标的某条轴上的投影尽可能分散。

观察上图,我们可以用方差来定义信息量的大小(也可以称为主成分贡献率),方差越大代表投影后的数据点分散得越开即信息量越大。图中将数据点投影到x轴要比投影到y轴更优,但仍然不是最优选择,注意图中虚线,将数据点投影到虚线上后的方差显然要比投影到x,y轴更大,我们的目标即是寻找到这么一种映射,将原始坐标轴旋转,使得新坐标空间下数据点在某几个维度上的投影的方差尽可能大并剔除差距不大的维度,即使得高维空间下的数据点X投影到低维空间上。

回到正题,我们直接展开求解,为方便计算,首先将所有数据中心化处理(方便协方差矩阵的表示),即将原坐标轴圆点偏移到数据中心点(图中红点),不妨以代表中心化后的数据点,代表原始坐标空间所执行的某种旋转,Y代表新坐标空间下的数据点,有:

我们要求新坐标空间下的数据点各维度之间线性无关,即的协方差矩阵为对角矩阵,的协方差矩阵可表示如下:

即我们希望各维度之间线性无关——的协方差矩阵为对角矩阵,而的协方差矩阵,是一个实对称矩阵,故我们可以将其对角化:

其中是个对角矩阵(对角线上的元素即为协方差矩阵的特征值),是个正交矩阵(即特征值对应的特征向量),代入原式得:

要使得仍为对角矩阵,最简便的方法便是令为单位矩阵,即:,此时,我们有:

由于主对角线上的元素为的协方差矩阵的特征值,对应着Y各维度变量的方差(信息量大小),我们希望它越大越好,所以在实际使用中,我们常将特征值从大到小排列,然后选取排名靠前的几个使用,其对应的特征向量也即我们的主成分,对应着新坐标空间下各维度的投影向量。

2.其他视角

从另一种视角来审视这个问题,见下图:

是原坐标空间下中心化后的一个数据点,主成分分析的目的即是寻找到一个向量,将数据点投影到向量上,为尽可能保存原始数据信息,我们希望投影前后数据点间的距离尽可能近,下面展开分析。

对于投影向量,我们只考虑其方向,为使计算方便,不妨设,则投影后的点的模为:

优化的目标即为:

我们的目标是求,观察等式(6),最小化即寻找,不妨设,实际上S即为X的协方差矩阵,我们的目标函数即为:

带有约束条件的求极值问题一般采用拉格朗日优化法,令,应有:

,显然,又是一个矩阵分解问题,即为的特征值,为对应的特征向量,每个向量对应着一个新的维度,与第一种解法一致。

三、算法实现

从第二章我们基本能够得到主成分分析的一般步骤:给定样本,先将其中心化,然后求中心化后样本的协方差矩阵,将其特征值分解,得到特征值(其实就是信息保留量,特征值越大代表该方向投影保留的信息越大)及对应的特征向量(投影方向,也可称为成分),然后用特征向量代码实现如下:

也可以直接使用sklearn库,如下:

两者结果一致,另外需要说明的是,从信息占比中可以看出,前两个成本基本包括了原样本100%的信息,在这种情况下,第三个成分并没有什么意义,可以忽略,降维后的结果如下:

可以发现,投影后第三个维度几乎没有任何实际意义。

PCA的介绍到此为止,本人也是属于学习阶段,只是将学习过程中自我的理解进行整理,如有不妥之处还望指出,有问题欢迎评论区交流,小姜顿首。

PCA算法详解——化繁为简相关推荐

  1. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  2. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  3. PnP算法详解(超详细公式推导)

    PnP算法详解 PnP概述 PnP数学模型 PnP求解方法 DLT直接线性变换法 EPnP EPnP的特点 步骤 理论推倒 1.控制点及齐次重心坐标系 2.控制点的选择 3.计算控制点在相机坐标系下的 ...

  4. 人脸识别系列三 | MTCNN算法详解上篇

    前言 我们前面分享了PCA,Fisher Face,LBPH三种传统的人脸识别算法,Dlib人脸检测算法.今天我们开始分享一下MTCNN算法,这个算法可以将人脸检测和特征点检测结合起来,并且MTCNN ...

  5. 邻域保留投影算法(NPE)(Neighborhood Preserving Embedding)算法详解

    上一篇降维算法的相关论文为LPP算法,也是何小飞老师的论文https://blog.csdn.net/qq_39187538/article/details/90402961 1.问题导入 2.算法出 ...

  6. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  7. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  8. C++中的STL算法详解

    1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...

  9. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

最新文章

  1. 一招教你解决大数据量下的各种报表使用问题
  2. 用VS连接oracle数据库时ORA-12504错误
  3. python跳转到程序顶部_python-如何使Tkinter窗口跳到最前面?
  4. 二进制求和Python解法
  5. 学C++你绝不能错过的干货!
  6. PB 循环删除树的所有根节点
  7. (41)时钟组Clock Group介绍
  8. Java提高班(五)深入理解BIO、NIO、AIO
  9. 【Python笔记】Python/C++解决约瑟夫环问题
  10. 分贝相关概念及转换:dB、dBSPL、dBm、dBu、dBV、dBFS
  11. Rxjava--背压(Backpressure)
  12. 现货黄金的点差费用是怎么收的
  13. 如何让自己发了疯、拼了命、石乐志的学习?
  14. 【漫画科普】什么是POL?什么是全光?
  15. 董明珠500亿造芯片开始行动,踏上了光荣的荆棘路。
  16. 支付宝企业向个人付款实现
  17. CarbonData部署和使用
  18. 安卓dj专业打碟机软件_djay Pro 2 for mac(专业DJ打碟软件) V2.0.12永久激活版
  19. 【社区图书馆】水浒传之水浒感悟
  20. 如何将实时直播链接到视频点播?

热门文章

  1. js判断正负数以及保留小数点后两位
  2. 微信 QQ空间 新浪微博 评论 收藏 点赞 东盟区块链发展新机遇·社交电商3.0
  3. 手机上使用赛效团队便签怎么搜索记录的内容?
  4. 上传MultipartFile格式文件限制文件大小
  5. Android studio 插入gif动图
  6. gta python解指纹_python爬虫JS逆向:X咕视频密码与指纹加密分析
  7. 微信怎么在个人信息里关掉朋友圈的入口?
  8. python画学校_未明学院:Python可视化库Matplotlib绘图入门详解
  9. 更改Jupyter Notebook打开的默认浏览器(切换到Edge为例)
  10. java中怎么合成图片_Java 实现图片合成