主成分分析法PCA的原理及计算

主成分分析法

主成分分析法(Principal Component Analysis),简称PCA,其是一种统计方法,是数据降维,简化数据集的一种常用的方法

它本身是一个非监督学习的算法,作用主要是用于数据的降维,降维的意义是挺重要的,除了显而易见的通过降维,可以提高算法的效率之外,通过降维我们还可以更加方便的进行可视化,以便于我们去更好的理解数据,可以发现更便于人类理解,主成分分析其一个很重要的作用就是去噪,有的时候,经过去噪以后再进行机器学习,效果会更好

我们可以基于主成分分析法的降维来理解其原理

原理及计算

我们设一个二维的坐标系,横轴为特征一,纵轴为特征二,相应的存在一些样本,其对应相应的点,既然是二维的,那么我们就可进行降维

那么降维到一维的具体操作是什么呢?

一个很明显的方案就是对这两个特征选一个特征,将另一个特征去除掉,如果说我们将特征二扔掉保留特征一的话,那么全部的点就会相应的全部映射到横轴上,相反,我们选择特征二的话,所有的点就会映射到纵轴上

这就是对应的两种降维的方案,这两个方案哪一个是更好的呢,我们将所有的点映射到了横轴以后,点和点之间距离是相对比较大的的方案就是更好的方案,为什么呢,点和点之间的距离大,即点和点之间有着更高的可区分度,这样也更好的保持了原来的点和点之间的距离,虽然也不同,但是也相应的更小的

还有一种更好的方案,我们可以选取一条直线,将所有的点都映射到这根直线上,使用这种方式,所有的点更趋近于原来的分布情况,区分度也比映射到横纵轴上更加明显

那么如何找到这个让样本间间距最大的轴?为了找到这个轴,我们先使用方差来定义一下这个样本间间距

这样这个问题就变成了,我们需要找到一个轴(直线),使得样本空间中的所有点在映射到这个轴以后,方差是最大的

那么怎么操作呢?

首先,我们将样本的均值归0,即所有的样本都减去这批样本的均值,这样就相当于让坐标轴进行了移动,使得样本在每个维度上均值都为0,这样我们就可以将方差的式子变成(xi是已经映射到新的轴上的新的样本)

然后我们要求这个轴的方向w=(w1,w2)(此处用二维来表示),使得我们所有的样本,在映射到w以后,有使映射以后的样本Xproject的方差值最大,式子展开如下

需要注意的是:

对于这个X来说,可能有多个维度,因此每一个X都是一个有多个元素的向量,因此更准确的式子应该是

其均值等依然是含有多个内容的向量,为什么呢,因为虽然映射到了这个轴上,但是本身这个轴还是处在这个n维的坐标系中,那么这实际上就是这两个向量相减之后的模的平方,又因为我们之前对样本进行了demean处理(均值取0),因此,这个式子化简以后为,即为映射完的点的模的平方和再除以m最大

那么这个Xprojecti到底是要怎么表示呢?

我们设这个轴为w,样本点为Xi,其也是一个向量,那么现在这个Xi要映射到w轴上的话,可以向w轴做一个垂直的直线,那么其与w轴的交点就是我们对应的Xproject这一点,那么说白了我们要求的模的平方就是指向交点的这个直线,相当于我们要求将一个向量映射到另一个向量上对应的映射的长度是多少

实际上这种映射就是点乘的定义

我们知道现在这个w轴是一个方向向量,所以其模为1,那么式子就化简成

运用数学定理,很明显可以得出

那么我们带入之前的式子就可以得到我们真正要求的式子,即Xi与w点乘完以后的平方和再除以m以后的结果最大

这样我们的主成分分析法就是要求一个w轴,使得映射上去的点与w点乘完以后的平方和再除以m以后的结果最大,这样主成分分析法就变成了一个目标函数的最优化问题,求一个函数的最大值,我们就可以使用梯度上升法来解决

线性回归和这个是不一样的,最直观的不同在于线性回归的样本是关于这个新的垂直的方向是关于特征的方向,并不是垂直于这根直线的

用梯度上升法来求解PCA问题

我们说可以使用梯度上升法来解决主成分分析问题,那么怎么用梯度上升法来求解此类问题呢?

那么我们知道,求一个函数的最大值,关键是我们要求这个函数的梯度,对于上面最终的式子来说,除了w以外就没有未知数了,那么对应的梯度就是函数对w求偏导,整理合并以后可以写成

对这个式子进行向量化的处理,我们观察这个式子,我们可以发现其中的式子就是点乘的形式,其实际上每一项就是Xw这个向量和X中的第n列中的每一个元素相乘再相加,Xw可以写成这种行向量的形式

而上面的计算过程计算下来就是Xw和一个矩阵相乘,这个矩阵可以写成(其就是X这个矩阵,有m个样本,n个特征)

其最后将梯度的计算的向量化的结果就可以写成(经过转置之后符合要求的)

介就是最后的计算公式啦

我们可以在直接使用这个公式来进行计算,最后得到需要的结果

【笔记】主成分分析法PCA的原理及计算的更多相关文章

  1. 主成分分析(PCA)原理及R语言实现

    原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...

  2. 主成分分析(PCA)原理及R语言实现 | dimension reduction降维

    如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...

  3. 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)

    主要内容: 一.降维与PCA 二.PCA算法过程 三.PCA之恢复 四.如何选取维数K 五.PCA的作用与适用场合 一.降维与PCA 1.所谓降维,就是将数据由原来的n个特征(feature)缩减为k ...

  4. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  5. 【机器学习】主成分分析法 PCA (II)

    主成分分析法(PAC)的优化——选择主成分的数量 根据上一讲,我们知道协方差为① 而训练集的方差为②. 我们希望在方差尽可能小的情况下选择尽可能小的K值. 也就是说我们需要找到k值使得①/②的值尽可能 ...

  6. 主成分分析法PCA原理

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  7. 特征脸是怎么提取的之主成分分析法PCA

    机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...

  8. 【机器学习】主成分分析法 PCA (I)

    主成分分析算法是最常见的降维算法,在PCA中,我们要做的是找到一个方向向量,然后我们把所有的数都投影到该向量上,使得投影的误差尽可能的小.投影误差就是特征向量到投影向量之间所需要移动的距离. PCA的 ...

  9. 主成分分析(PCA)原理详解

    一.PCA简介 1. 相关背景 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律.多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上 ...

随机推荐

  1. netcore3.1 + vue (前后端分离) IIS 部署

    1.安装 aspnetcore-runtime-3.1.1-win-x64.exe 2.安装dotnet-hosting-3.1.1-win.exe 3.安装urlrewrite和applicatio ...

  2. ESP32的Flash加密知识

    一.Flash 加密功能用于加密与 ESP32-S2 搭载使用的 SPI Flash 中的内容.启用 Flash 加密功能后,物理读取 SPI Flash 便无法恢复大部分 Flash 内容.通过明文 ...

  3. LevelDB学习笔记 (3): 长文解析memtable、跳表和内存池Arena

    LevelDB学习笔记 (3): 长文解析memtable.跳表和内存池Arena 1. MemTable的基本信息 我们前面说过leveldb的所有数据都会先写入memtable中,在leveldb ...

  4. 你真的了解 Session 和 Cookie 吗?

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 前言 ...

  5. CF1458D Flip and Reverse[题解]

    Flip and Reverse 题目大意 给定一个 \(01\) 字符串,有机会进行若干次操作,对于每一次操作: 选择该字符串的子串,要求是该子串内包含数量相同的 \(0\) , \(1\) 字符. ...

  6. 视频场景切换检测的FPGA实现

    本文将继续讲述图像处理算法的FPGA实现,后续可能更新图像旋转(1080P).画中画.快速DCT等算法.视频场景切换检测常用于视频编解码领域,我选用的算法是双阈值灰度直方图检测法,起初在MATLAB上 ...

  7. File类与常用IO流第六章——使用try...catch...finally处理流中的异常

    在JDK1.7之前: 1 package com.itheima.demo06.trycatch; 2 3 import java.io.FileWriter; 4 import java.io.IO ...

  8. React组件三大属性之state

    React组件三大属性之state 组件被称为"状态机", 页面的显示是根据组件的state属性的数据来显示 理解1) state是组件对象最重要的属性, 值是对象(可以包含多个数 ...

  9. 如何在VeryCD中下载资源

    这个方法也是百度来的,记在这里的目的不是为了显摆,主要是担心自己大脑记不住,用的时候又要重新找方法. 操作系统:Linux Mint 17 首先,在VeryCD中看好了某个资源,比如搜索的<哈利 ...

  10. django中路由配置的正则

    在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...