PCA背景简介

在许多领域的数据的分析和处理中,往往会有许多复杂的变量,变量与变量之间通常还存在着相关性,要从大量的变量中提取出能反映事物特征的信息是极其困难的,对单个的变量分析不全面,并且会损失信息,造成错误的结论。主成分分析(PCA)便是通过数学降维,找出最能决定数据特性的主元成分的数据分析方法,用较少的综合指标,揭示隐藏在多维复杂数据变量背后的简单结构,得到更为科学有效的数据信息。

PCA降维

PCA降维的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

对于主成分坐标轴的选择,有两个要求:一是要相互正交,即基向量线性无关;二是要选取方差最大的方向,以实现数据在坐标轴上分散开来,便于观测。第一个坐标轴是原始数据中方差最大的方向,第二个坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。通过这种方式可以得到n个这样的坐标轴。我们从这样的坐标轴中选出k个含有最大信息的坐标轴,便实现了降维处理。

具体实现方法

1. 协方差矩阵

对于我们得到的一组数据,可以求出其样本均值

样本方差:

两个样本之间的协方差:

当协方差为0时,说明X和Y变量之间是线性无关的。

由所有的样本的列向量组成的矩阵X,根据
可以得到两两数据之间的协方差矩阵:

由矩阵知识可知,协方差矩阵为对称矩阵,对角线上为样本的方差,其他为两两变量之间的协方差。我们便可以利用对称矩阵的对角化将协方差化为0,实现变量间的线性无关,并且此时对角线上选取最大的K个方差即可。

2.特征值与特征向量

根据协方差矩阵计算其特征值与特征向量,由线性代数我们知道,如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:

从而利用 |λE - A| = 0可解出矩阵的特征值,一个特征值便对应一组特征向量,特征向量之间是相互正交的。将所得到的特征向量对应其特征值从大到小排列,选出最大的k个向量单位化,便可作为PCA变换所需要的k个基向量,且方差最大。
通过数学方法可以证明,特征值λ即为降维后数据的方差,具体证明可以参照拉格朗日乘数法的最优化,在此不赘述。

3.基向量变换

X是一个mxn 的矩阵,它的每一个列向量都表示一个采样点上的数据 。Y 表示转换以后的新的数据集表示。 P是他们之间的线性转换,即计算向量内积。可表示为:

Y=PX
P便是由基向量组成的变换矩阵,经过线性转换,X的坐标便转换到新的基向量所决定的空间中的坐标Y,从几何上看,YX在新的空间中的投影。

经过基向量变换,即完成了数据的降维。

实例分析

以这样一组二维数据为例

我们要把它降到一维,两组行向量的均值都为零,故不需要零均值中心化。

求协方差矩阵:

再根据所求的协方差矩阵计算其特征值与特征向量,求解得特征值为:


对应的特征向量为:

将特征向量单位化得到:

故基向量变换矩阵为:

最后利用P与矩阵X做向量内积,便得到降维后的矩阵Y:

N维的数据矩阵也可以此类推,在得到k维降维后的向量之后,通常取2-3维作为主成分坐标,便可反映绝大部分的特征信息。

Matlab代码如下:
clear;
clc;
k = 1;
A = [-1 -1 0 2 0;
-2 0 0 1 1 ]’
[rows cols] = size(A)
covA = cov(A) %求样本的协方差矩阵
[vec val] = eigs(covA) %协方差矩阵的特征值D和特征向量V
meanA = mean(A) %样本均值mean

SCORE2 = (A - tempA)*vec %降到1维后得到的的主成分
pcaData2 = SCORE2(:,1:k) %取第一组数据
figure;
scatter(pcaData2(:,1));

主成分分析(PCA)原理、步骤相关推荐

  1. 主成分分析(PCA)原理分析Python实现

    目录 1 引言 2 PCA的意义 3 PCA的实现步骤 4 弄懂PCA要回答的问题 5 PCA原理 5.1 如何降维? 5.2 如何量化投影以后样本点之间的区分度? 5.3 求取k维坐标系 5.3.1 ...

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

    主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.最近我们被客户要求撰写关于主成分分析(PCA)的研究报告,包括一些图形和统计输出.例如,使 ...

  3. 清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析

    主成分分析   本文将介绍主成分分析(PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息. 一般 ...

  4. 主成分分析(PCA)原理及推导

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分 ...

  5. 基于特征向量的主成分分析(PCA)原理解释

    引子 首先看一下如何对一维向量的进行分解,我们知道,一个 nnn 维向量 aaa 可以由 nnn 个正交向量线性 vi,i=1,2,...,nv_i,i=1,2,...,nvi​,i=1,2,..., ...

  6. pca主成分分析结果解释_主成分分析(PCA)原理精讲 | 统计学专题

    引言:当数据维度较高时,我们很难通过普通的方法做图,更不能分析样本间的关系.故我们接下来学习降维度.可视化的主成分分析(Principal Component Analysis,PCA). 1.何时使 ...

  7. 主成分分析(PCA)原理详解_转载

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

  8. 主成分分析计算机如何实现,主成分分析(PCA)原理及R语言实现及分析实例

    评价美国法官评分中要保留的主成分个数.碎石图(直线与x符号).特征值大于1准则(水平线)和100次模拟的平行分析(虚线)都表明保留一个主成分即可 可以看出只有左上交Component Number为1 ...

  9. PCA(主成分分析)-------原理,推导,步骤、实例、代码

    最近一直在学习主成分分析(PCA),所以想把最近学的一点知识整理一下,如果有不对的还请大家帮忙指正,共同学习. 一.PCA简介 1.概念:主成分分析是一种统计方法,通过正交变换将一组可能存在相关性的变 ...

  10. 主成分分析PCA(principal component analysis)原理

    PCA在很多方面均有应用,但是之前没有仔细探究过,最近看了一些博客和论文,做一下总结. 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通过正交变换将 ...

最新文章

  1. Yii2 解决2006 MySQL server has gone away问题
  2. springwebflux 页面_Spring WebFlux 入门
  3. 科研人的暑假:学长下地中暑,博士小姐姐留校养鱼......
  4. VC 位图按钮CBitmapButton的使用
  5. 快手与2020央视春晚达成独家互动合作:大年三十发红包
  6. ubuntu下安装php环境
  7. OpenCvSharp4初识
  8. 医学知识图谱构建技术与研究进展
  9. 软件研发相关国家标准汇总
  10. dell 恢复介质_使用Dell OS Recovery Tool制作Windows恢复U盘
  11. 估算项目工作量的方法:定额法
  12. 国内高速下载Google Drive资源
  13. kettle日志解析_Kettle运行日志记录
  14. android vivo 模拟器,逍遥安卓打造VIVO华为魅族OPPO小米联想手游安卓模拟器
  15. android布局空格以及首行缩进表示符
  16. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生学科竞赛管理系统7jdqe
  17. 在苹果Mac上如何关闭触控板防止误触?
  18. 中级微观经济学:Chap 7 显示偏好
  19. Python生成exe文件的方法
  20. mysql sharding 开源_轻量级Mysql Sharding中间件——Shark

热门文章

  1. 微信公众号开发诡异问题:errcode:40125,errmsg解决方案
  2. 取整函数access_ACCESS常用函数总结
  3. Python 关于日期相减 获得两个日期的天数差
  4. Microsoft C++ 异常: std::length_error,位于内存位置 0x000000AF9B7AF810 处
  5. 服务器卡顿修改dns,电视/盒子太卡了怎么办?教你修改DNS解决卡顿问题
  6. Windows 10 创建 删除 合并磁盘分区
  7. 自定义IDM的网页嗅探下载浮条样式
  8. Eigen教程3----矩阵、向量以及标量的运算,转置、共轭以及伴随矩阵
  9. word中-文字尾部空格自动添加下划线的步骤
  10. hairline!ios实现边框0.5px