• 【笔记】主成分分析法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个特征)

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

    介就是最后的计算公式啦

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

    感谢观看,文笔有限,博客不出彩,还请多多见谅
  • 相关阅读:
    CentOS搭建nginx环境
    Gitment评论插件的使用
    GitPages部署自己的网站
    ubuntu防火墙规则之ufw
    鸟哥的Linux私房菜笔记第六章(二)
    一次使用InfluxDB数据库的总结
    网站实现markdown功能
    鸟哥的Linux私房菜笔记第六章(一)
    Flutter学习笔记(21)--TextField文本框组件和Card卡片组件
    Flutter学习笔记(20)--FloatingActionButton、PopupMenuButton、SimpleDialog、AlertDialog、SnackBar
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14300744.html
Copyright © 2020-2023  润新知