PCA算法

article/2025/10/13 19:32:50

主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。
参考:http://www.cnblogs.com/pinard/p/6239403.html

PCA的思想

PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有m个数据 (x(1),x(2),...,x(m)) 。我们希望将这m个数据的维度从n维降到n’维,希望这m个n’维的数据集尽可能的代表原始数据集。我们知道数据从n维降到n’维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这n’维的数据尽可能表示原来的数据呢?

我们先看看最简单的情况,也就是n=2,n’=1,也就是将数据从二维降维到一维。数据如下图。我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量方向, u1 u2 ,那么哪个向量可以更好的代表原始数据集呢?从直观上也可以看出, u1 u2 好。
这里写图片描述
为什么 u1 u2 好呢?有两种解释:

  • 样本点到这个直线的距离足够近;
  • 样本点在这个直线上的投影能尽可能的分开。

假如我们把n’从1维推广到任意维,则我们的希望降维的标准为:

  • 样本点到这个超平面的距离足够近;
  • 样本点在这个超平面上的投影能尽可能的分开。

基于上面的两种标准,我们可以得到PCA的两种等价推导。

投影介绍

参考:https://blog.csdn.net/u013719780/article/details/78352262
这里写图片描述
如上图所示,红色点表示原样本点 x(i) ,在u上投影,u是蓝色直线的斜率也是直线的方向向量,而且是单位向量,直线上的蓝色点表示原样本点 x(i) 在u上的投影。容易知道投影点离原点的距离是 x(i) ,由于这些原始样本点的每一维特征均值都为0,因此投影到u上的样本点的均值仍然是0。

  • 原样本点 x(i)
  • 在u上投影
  • 投影点离原点的距离是 x(i)Tu

  • 原m个n维数据 (x(1),x(2),...,x(m)) 进行中心化,即 i=1mx(i)=0
  • 经过投影变换后得到的新坐标系为 {w1,w2,...,wn} 丢弃新坐标系中的部分坐标,则新的坐标系为 {w1,w2,...,wn} ,其中 w 是标准正交基,即||w||2=1,wTiwj=0
  • 投影点的投影为 z(i)=(z(i)1,z(i)2,...,z(i)n) ,样本点在低维坐标系里第j维的坐标 z(i)j=wTjx(i)

  • 如果我们用 z(i) 来恢复原始数据 x(i) ,则得到的恢复数据 x(i)=j=1nz(i)jwj=Wz(i) ,其中,W为标准正交基组成的矩阵。

PCA的推导:基于最小投影距离

我们首先看第一种解释的推导,即样本点到这个超平面的距离足够近。
我们考虑整个样本集,我们希望所有的样本到这个超平面的距离足够近,即最小化下式:

i=1m||x(i)x(i)||22
将这个式子进行整理,可以得到:
i=1m||x(i)x(i)||22=i=1m||Wz(i)x(i)||22=i=1m(Wz(i))T(Wz(i))2i=1m(Wz(i))Tx(i)+i=1mx(i)Tx(i)=i=1mz(i)Tz(i)2i=1mz(i)TWTx(i)+i=1mx(i)Tx(i)=i=1mz(i)Tz(i)2i=1mz(i)Tz(i)+i=1mx(i)Tx(i)=i=1mz(i)Tz(i)+i=1mx(i)Tx(i)=tr(WTi=1mx(i)x(i)T)W)+i=1mx(i)Tx(i)=tr(WTXXTW)+i=1mx(i)Tx(i)
其中第(1)步用到了 x(i)=Wz(i)
第(2)步用到了平方和展开,
第(3)步用到了矩阵转置公式 (AB)T=BTAT WTW=I
第(4)步用到了 z(i)=WTx(i)
第(5)步合并同类项,
第(6)步用到了 z(i)=WTx(i) 和矩阵的迹,
第(7)步将代数和表达为矩阵形式。

注意到, i=1mx(i)x(i)T 是数据集的协方差矩阵,W的每一个向量 wj 是标准正交基。而 i=1mx(i)Tx(i) 是一个常量。最小化上式等价于:

argminWtr(WTXXTW)s.t.WTW=I
这个最小化不难,直接观察也可以发现最小值对应的W由协方差矩阵 XXT 最大的n’个特征值对应的特征向量组成。当然用数学推导也很容易。利用拉格朗日函数可以得到:
J(W)=tr(WTXXTW)+λ(WTWI)
对W求导有
XXTW+λW=0
整理下即为:
XXTW=λW
这样可以更清楚的看出,W为 XXT 的n’个特征向量组成的矩阵,而 λ XXT 的特征值。当我们将数据集从n维降到n’维时,需要找到最大的n’个特征值对应的特征向量。这n’个特征向量组成的矩阵W即为我们需要的矩阵。对于原始数据集,我们只需要用 z(i)=WTx(i) ,就可以把原始数据集降维到最小投影距离的n’维数据集。

PCA的推导:基于最大投影方差

现在我们再来看看第二种,基于最大投影方差的推导。
对于任意一个样本 x(i) ,在新的坐标系中的投影为 WTx(i) ,在新坐标系中的投影方差为 WTx(i)x(i)TW ,要使所有的样本的投影方差和最大,也就是最大化 i=1mWTx(i)x(i)TW ,即:

argmaxWtr(WTXXTW)s.t.WTW=I
观察上一节的基于最小投影距离的优化目标,可以发现完全一样,只是一个是加负号的最小化,一个是最大化。

PCA算法流程

从上面两节我们可以看出,求样本 x(i) 的n’维的主成分其实就是求样本集的协方差矩阵 XXT 的前n’个特征值对应特征向量矩阵W,然后对于每个样本 x(i) ,做如下变换 z(i)=WTx(i) ,即达到降维的PCA目的。

下面我们看看具体的算法流程:

输入:n维样本集 D=(x(1),x(2),...,x(m)) ,要降维到的维数n’.
输出:降维后的样本集D′
    
1. 对所有的样本进行中心化: x(i)=x(i)1mj=1mx(j)
    
2. 计算样本的协方差矩阵 XXT
    
3. 对矩阵 XXT 进行特征值分解
    
4. 取出最大的n’个特征值对应的特征向量 (w1,w2,...,wn) ,将所有的特征向量标准化后,组成特征向量矩阵W。
    
5. 对样本集中的每一个样本 x(i) ,转化为新的样本 z(i)=WTx(i)
    
6. 得到输出样本集 D=(z(1),z(2),...,z(m))

有时候,我们不指定降维后的n’的值,而是换种方式,指定一个降维到的主成分比重阈值t。这个阈值t在(0,1]之间。假如我们的n个特征值为 λ1λ2...λn ,则n’可以通过下式得到:

i=1nλii=1nλit

PCA算法总结

这里对PCA算法做一个总结。作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。为了克服PCA的一些缺点,出现了很多PCA的变种,比如为解决非线性降维的KPCA,还有解决内存限制的增量PCA方法Incremental PCA,以及解决稀疏数据降维的PCA方法Sparse PCA等。

PCA算法的主要优点有:

  1. 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
  2. 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
  3. 计算方法简单,主要运算是特征值分解,易于实现。

PCA算法的主要缺点有:

  1. 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
  2. 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

核主成分分析KPCA介绍

在上面的PCA算法中,我们假设存在一个线性的超平面,可以让我们对数据进行投影。但是有些时候,数据不是线性的,不能直接进行PCA降维。这里就需要用到和SVM一样的核函数的思想,先把数据集从n维映射到线性可分的高维N>n,然后再从N维降维到一个低维度n’, 这里的维度之间满足 n<n<N .

使用了核函数的主成分分析一般称之为核主成分分析(Kernelized PCA, 以下简称KPCA。假设高维空间的数据是由n维空间的数据通过映射 ϕ 产生。

则对于n维空间的特征分解:

i=1mx(i)x(i)TW=λW
映射为:
i=1mϕ(x(i))ϕ(x(i))TW=λW

通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。一般来说,映射 ϕ 不用显式的计算,而是在需要计算的时候通过核函数完成。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。


http://chatgpt.dhexx.cn/article/9YXygfYi.shtml

相关文章

PCA

R语言实现PCA 一次来自男神MR.来的作业PCA读取数据PCA主体部分输出PCA的主要结果&#xff0c;列出主成分分析分析结果利用碎石图来展示PCA结果对component进行一些解释 简略分析利用PCA结果来进行一个排序下面进行聚类分析 一次来自男神MR.来的作业 PCA 读取数据 #读取数据&…

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

转载请声明出处&#xff1a;http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后&#xff0c;颇有体会。最近在做主成分分析和奇异值分解方面的项目&#xff0c…

PCA详解

本文目录 一、来源及作用存在问题基本作用 二、 基本原理及求解步骤核心思想如何选择投影方向 三、原理分析最大投影方差最小重构代价 四、SVD与PCA的关系 一、来源及作用 存在问题 在我们训练模型的过程中&#xff0c;有时会出现在训练集上误差较小&#xff0c;但到了测试集误…

主成分分析法(PCA)

主成分分析&#xff08;Principal components analysis&#xff0c;以下简称PCA&#xff09;是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA&#xff0c;下面我们就对PCA的原理做一个总结。 目录 …

主成分分析(PCA)方法步骤以及代码详解

主成分分析&#xff08;PCA&#xff09;方法步骤以及代码详解 前言 上一节我们了解到在构建神经网络模型&#xff0c;除了掌握如何搭建神经网络架构&#xff0c;了解参数具体含义&#xff0c;规避风险等方法。第一步是要对采用数据集的详细了解&#xff0c;无需接触任何神经网…

机器学习——PCA降维(我至今为止遇见的最好的博文)

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/77151308 PCA&#xff08;Principal Component Analysis&#xff09; 是一种常见的数据分析方式&#xff0c;常用于高维数据的降维&#xff0c;可用于提取数据的主要特征分量。 PCA 的数学推导可以从最大可分型和最大重构性…

通达OA工作流数据报表二次开发版

此模块除具备工作流——数据报表所有功能外&#xff0c;新加入的功能包括&#xff1a; 1&#xff1a;查询条件自带可查询未完成的流程&#xff1b; 2&#xff1a;查询条件可设置查询所有子流程的字段&#xff1b; 3&#xff1a;报表可显示流程当前处理人&#xff0c;并且点击每…

开发通达OA工作流接口从ERP自动生成OA请款单(图文)

ERP系统很多不带审批系统&#xff0c;即使有审批系统的话应用起来也不那么容易&#xff0c;因为领导一般都是不使用ERP系统的&#xff0c;那么我就用通达OA来完成ERP的单据审批吧&#xff0c;是不是很酷呢&#xff0c;而且还支持移动端app和微信审批。 ERP端的数据发起由ERP方…

OA工作流引擎:作为组织血脉支撑的重要性解析

前面提到协同OA管理平台是以“人和事”为管理对象&#xff0c;但如何把“人和事”通过一定的方法能全部贯通起来呢。就如同一个人&#xff0c;有手、脚、嘴、头脑等各种器官&#xff0c;但如何能把这些器官充分的调动起来&#xff0c;里面最核心的还是人的血液&#xff0c;OA系…

通达OA 工作流运行异常情况的紧急处理(图文)

本文整理自通达OA技术交流群&#xff08;QQ群号&#xff1a;378591362&#xff09;群友交流内容。 一位朋友的工作流设计和运行突然出现故障&#xff0c;显示的数据部分都不正常&#xff0c;如下图&#xff1a; 经过重启所有服务&#xff08;包括缓存服务&#xff09;现象依旧。…

通达OA二次开发 小飞鱼应用OA工作流二次开发智能公文系统(三)(图文)

流程流转完毕后&#xff0c;会自动进行归档&#xff0c;默认存成10年存档目录&#xff0c;并且可以在多个存档年限中进行调整切换。点击流程文号可以直接查看具体的流程表单及执行记录。 如果不需要对部门进行管理时&#xff0c;可以直接使用ajax方式快速将存档年限进行修改切换…

通达OA 工作流流转过程中使用系统自带的提醒功能设置(图文)

在流程流转过程中&#xff0c;可以通过增加步骤的方式来提醒相关人员。其实可以使用系统自带的提醒功能&#xff0c;比如需要在某一步骤提醒流程发起人&#xff0c;就可以在提醒设置下设置提醒发起人&#xff0c;有3个选项可选&#xff0c;其中使用手机短信需要短信猫的支持&am…

通达OA工作流不可编辑

找到表&#xff1a;flow_run 搜索自增长ID流水号&#xff0c;查看该条记录的用户是否ok 找到表&#xff1a;flow_run_prcs 搜索流水号&#xff1a;run_id*** 查看结果的PRCS_ID数字最大的那一条记录的OP_FLAG是否为1&#xff0c;如果不为1则改为1即可。

java oa工作流设计_简易OA漫谈之工作流设计(DB)

1、流程图。 工作流可以做得很复杂&#xff0c;也可以设计的很简单。看下图 看这个图&#xff0c;一个流程图最基础的三部分&#xff1a;流程&#xff0c;步骤&#xff0c;操作。 2、流程模板。 流程图的程序描述就叫流程模板。一个流程模板大概需要的一些属性如下图&#xff1…

OA审批工作流设计器实现

OA审批工作流设计器实现 wflow-web&#x1f440;界面一览工作区面板表单管理表单基本设置表单设计器流程设计器 wflow-web 由 Vue ElementUI 驱动&#xff0c;已开源不断更新中 &#xff0c;主要更新 Gitee &#x1f60b; 码云gitee | github地址 &#x1f449; 在线体验地…

OA工作流引擎设计(纯java开发,不需要额外任何插件引擎)

目录 1 系统概览 2 表单管理 2.1 添加表单 2.2 表单智能设置 2.2.1 单行文本 2.2.2 多行文本 2.2.3 下拉菜单&#xff0c;单选按钮和复选框 2.2.4 日期时间控件 2.2.5 计算控件 2.2.6 会签字段 2.2.7 员工选择框和部门选择框 2.3 表单测试 2.3.1 可选日期、时间、日…

OA 系统工作流引擎 Camunda 实践(1)

【审核人员看清楚再审核&#xff0c;我是把自己公司的案例分析一下&#xff0c; 这哪是广告&#xff1f;&#xff1f;&#xff1f;】 Camunda是Activiti最大的贡献者之一(除Alfresco以外)&#xff0c;同时也是它一个主 要的执行咨询合作伙伴。camunda表示Activiti可能太拘束于…

小飞鱼通达二开 OA工作流打印次数统计控制程序(图文)

每个工作流工作打印了多少次了&#xff0c;在OA里不知道&#xff0c;如何能够控制呢&#xff0c;今天小飞鱼带给大家的就是这个工作量打印次数统计控制程序&#xff0c;使用起来是不是会方便很多。 可以查询打印日志明细。 打印页面上多了一个打印按钮和流水号、打印次数的信息…

通达OA工作流-表单设计

第1章 什么是工作流 1.1 工作流的用途 随着企业管理信息化进程的不断深入&#xff0c;协同应用软件的概念已深入人心&#xff0c;而工作流系统正是协同应用软件的核心。通过应用 IT 技术来规范工作流程、提高工作的执行效率和准确度、使企业运营更加高效、规范、稳健&…

通达OA 工作流执行出现的异常现象处理(图文)

一个朋友用的工作流&#xff0c;突然说这里面多了很多人不应该看到这个流程的&#xff0c;就是在查询工作时&#xff0c;最上面多了一个“查阅信息”项&#xff0c;然后最下面多了很多人查询的记录。这个项目是从哪里来的呢&#xff1f;普通的流程倒也无所谓了&#xff0c;而有…