PCA算法和实例

PCA算法

算法步骤:

假设有m条n维数据。

1. 将原始数据按列组成n行m列矩阵X

2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3. 求出协方差矩阵C=1/mXXT

4. 求出协方差矩阵的特征值以及对应的特征向量

5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6. Y=PX即为降维到k维后的数据

实例

以这个为例,我们用PCA的方法将这组二维数据降到一维

因为这个矩阵的每行已经是零均值,所以我们可以直接求协方差矩阵:

然后求其特征值和特征向量,求解后的特征值为:

λ1=2,λ2=2/5

其对应的特征向量分别是:

由于对应的特征向量分别是一个通解,c1和c2可取任意实数。那么标准化后的特征向量为:

因此我们的矩阵P是:

可以验证协方差矩阵C的对角化:

最好我们用P的第一行诚意数据矩阵,就得到了降维后的数据表示:

降维后的投影结果如下图:

PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同的正交方向上没有相关性。

因此,PCA也存在一些限制,例如它可以很好地解除线性相关,但是对于高阶相关性就没有办法了。对于存在高阶相关性的数据,可以考虑Kernel PCA,通过Kernel将非线性相关转化为线性相关。另外,PCA假设数据各特征分布在正交方向上,如果在非正交方向上存在几个方差较大的方向,PCA的效果就大打折扣。

PCA是一种无参数技术,也就是说面对同样的数据,如果不考虑清晰,谁来做结果都一样,没有主观参数的介入,所以PCA便于通用实现,但是本身没有个性化的优化。

本文主要参考:http://blog.codinglabs.org/articles/pca-tutorial.html

时间: 2024-10-15 20:46:41

PCA算法和实例的相关文章

机器学习实战ByMatlab(二)PCA算法

PCA 算法也叫主成分分析(principal components analysis),主要是用于数据降维的. 为什么要进行数据降维?因为实际情况中我们的训练数据会存在特征过多或者是特征累赘的问题,比如: 一个关于汽车的样本数据,一个特征是"km/h的最大速度特征",另一个是"英里每小时"的最大速度特征,很显然这两个特征具有很强的相关性 拿到一个样本,特征非常多,样本缺很少,这样的数据用回归去你和将非常困难,很容易导致过度拟合 PCA算法就是用来解决这种问题的,其

PCA算法详解——本质上就是投影后使得数据尽可能分散(方差最大),PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主?空间(principal subspace),使得投影数据的?差被最?化(Hotelling, 1933),即最大方差理论。

PCA PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维.网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理.这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么. 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的

降维之pca算法

pca算法: 算法原理: pca利用的两个维度之间的关系和协方差成正比,协方差为0时,表示这两个维度无关,如果协方差越大这表明两个维度之间相关性越大,因而降维的时候, 都是找协方差最大的. 1 将XX中的数据进行零均值化,即每一列都减去其均值. 2 计算协方差矩阵C=1mXTXC=1mXTX 3 求出CC的特征值和特征向量 4 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P 5 Y=XPY=XP就是降维到k维后的数据. 代码: # coding=utf-8 import m

分组聚集的K-means算法应用实例

概述 在许多实际应用中,需要对许多数据点进行分组,划分成一个个簇(cluster),并计算出每一个簇的中心.这就是著名的k-means算法. k-means算法的输入是N个d维数据点:x_1, -, x_N,以及需要划分的簇的数目k.算法运行的结果是每个簇的中心点m_1, -, m_k,也可以输出每个簇中有哪些数据点.算法先通过随机,或启发式搜索,确定初始的中心点位置.再通过如下两个步骤的交替,进行数据的计算: 1.数据点划分.根据当前的k个中心点,确定每个中心点所在的簇中的数据点有哪些.即根据

考研计算机基础构造算法的实例研究

构造算法:实例研究1(计数器控制重复) 要演示如何开发算法,我们要解决几个全班平均成绩的问题.考虑下列问题: 班里有10个学生参加测验,可以提供考试成绩(0到100的整数值),以确定全班平均成绩. 全班平均成绩等于全班成绩总和除以班里人数.计算机上解决这个问题的算法是辅人每人的成绩,进行平均计算,然后打印结果. 下面用伪代码列出要执行的操作,指定这些操作执行的顺序.我们用计数器控制重复(counter-conttrolled repetition)一次一个地输人每人的成绩.这种方法用计数器(co

数据挖掘算法学习(四)PCA算法

算法简介 主成分分析(PrincipalComponentAnalysis,简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理.压缩和抽提的有效方法.主要用于对特征进行降维. 算法假设 数据的概率分布满足高斯分布或是指数型的概率分布.方差高的向量视为主元. 算法输入 包含n条记录的数据集 算法输出 降维或压缩后的数据集 算法思想 ?1.计算所有样本的均值m和协方差矩阵S: ?2.计算S的特征值,并由大到小排序: ?3.选择前n'个特征值对应的特征矢量作成一个变换矩阵E=[e1,e2, -,

PCA算法理解及代码实现

github:PCA代码实现.PCA应用 本文算法均使用python3实现 1. 数据降维 ??在实际生产生活中,我们所获得的数据集在特征上往往具有很高的维度,对高维度的数据进行处理时消耗的时间很大,并且过多的特征变量也会妨碍查找规律的建立.如何在最大程度上保留数据集的信息量的前提下进行数据维度的降低,是我们需要解决的问题. ??对数据进行降维有以下优点: ??(1)使得数据集更易使用 ??(2)降低很多算法的计算开销 ??(3)去除噪声 ??(4)使得结果易懂 ??降维技术作为数据预处理的一部

PCA算法

1. 引言 降维是对数据高维度特征的一种预处理方法.降维是将高纬度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.在实际的生产和应用中,降维在一定的信息损失范围内,可以节省大量的时间和成本. PCA(principal compount analysis),即主成分分析法,是一种使用最广泛的数据压缩算法.在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定.转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息.第

2019-07-31【机器学习】无监督学习之降维PCA算法实例 (鸢尾花)

样本 代码: import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris #加载鸢尾花数据集导入函数 data = load_iris()#加载数据,array([[5.1 3.5 1.4 0.2].....]) #print(data) y = data.target #各50个 0,1,2 暂不明作用, #print(y) X = da