【笔记】主成分分析法PCA的原理及计算
主成分分析法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的原理及计算的更多相关文章
- 主成分分析(PCA)原理及R语言实现
原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...
- 主成分分析(PCA)原理及R语言实现 | dimension reduction降维
如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...
- 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)
主要内容: 一.降维与PCA 二.PCA算法过程 三.PCA之恢复 四.如何选取维数K 五.PCA的作用与适用场合 一.降维与PCA 1.所谓降维,就是将数据由原来的n个特征(feature)缩减为k ...
- 主成分分析(PCA)原理总结
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...
- 【机器学习】主成分分析法 PCA (II)
主成分分析法(PAC)的优化——选择主成分的数量 根据上一讲,我们知道协方差为① 而训练集的方差为②. 我们希望在方差尽可能小的情况下选择尽可能小的K值. 也就是说我们需要找到k值使得①/②的值尽可能 ...
- 主成分分析法PCA原理
PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...
- 特征脸是怎么提取的之主成分分析法PCA
机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...
- 【机器学习】主成分分析法 PCA (I)
主成分分析算法是最常见的降维算法,在PCA中,我们要做的是找到一个方向向量,然后我们把所有的数都投影到该向量上,使得投影的误差尽可能的小.投影误差就是特征向量到投影向量之间所需要移动的距离. PCA的 ...
- 主成分分析(PCA)原理详解
一.PCA简介 1. 相关背景 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律.多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上 ...
随机推荐
- Java:Java实例化(new)过程
实例化过程(new) 1.首先去JVM 的方法区中区寻找类的class对象,如果能找到,则按照定义生成对象,找不到 >>如下2.所示 2.加载类定义:类加载器(classLoader)寻找 ...
- Redis的内存回收原理,及内存过期淘汰策略详解
Redis 内存回收机制Redis 的内存回收主要围绕以下两个方面: 1.Redis 过期策略:删除过期时间的 key 值 2.Redis 淘汰策略:内存使用到达 maxmemory 上限时触发内存淘 ...
- 官宣.NET 6 预览版4
我们很高兴发布 .NET 6 Preview 4.我们现在大约完成了 .NET 6 发布的一半.现在是一个很好的时机,可以再次查看.NET6的完整范围.许多功能都接近最终形式,而其他功能将很快推出,因 ...
- 两个有序数组合并为一个有序数组---python
def merge(a, b): """ 合并2个有序数组,默认a,b都是从小到大的有序数组 """ # 1.临时变量 i, j = 0, ...
- 从GAN到WGAN的来龙去脉
一.原始GAN的理论分析 1.1 数学描述 其实GAN的原理很好理解,网络结构主要包含生成器 (generator) 和鉴别器 (discriminator) ,数据主要包括目标样本 \(x_r \s ...
- python import 导入两个模块同时有同一名称的方法如何调用 ?
from moudule import *(这种方法不推荐) 一般不推荐使用"from 模块 import"这种语法导入指定模块内的所有成员,因为它存在潜在的风险. 比如同时导入 ...
- keeplived+mycat+mysql高可用读写分离水平分表(谁看谁都会)
一:环境准备: 应用 主机 mysql-master 192.168.205.184 mysql-slave 192.168.205.185 mycat-01,keeplived,jdk 192.16 ...
- CF466D题解
思路: 我们首先处理出每个位子需要被多少个区间覆盖才能变成 \(h\) .即 $a_i=h-a_i $ 同时设定 \(b\) 序列为 \(a\) 序列的差分系列 如果 \(b_i==1\) ,很显然, ...
- LeetCode 780. Reaching Points
题目链接:https://leetcode.com/problems/reaching-points/ 题意:给定操作可以使点(x,y)变为点(x+y,y)或者点(x,x+y).现已知初始点(sx,s ...
- YARN学习总结之架构
一.yarn产生背景 1) 源于MRv1的缺陷:扩展性受限.单点故障.难以支持MR之外的计算框架: 2) 多计算框架各自为战,数据共享困难,资源利用率低: MR: 离线计算框架 Storm:实时计算框 ...