PCA(Principal Component Analysis)原理简单分析

来源:互联网 发布:C语言干什么的 编辑:程序博客网 时间:2024/06/07 14:29

PCA是一种常见的数据分析方法,通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于数据的降维。

例如在淘宝店铺的数据集中,每天的数据记录格式为:(日期,浏览量,访客数,下单数,成交数,成交金额),其中日期是一个记录标志数据而并非实际有用的数据,数据挖掘和机器学习大多只关心数据的度量值而非标记值,因此我们可以忽略日期字段的数据值得到一个五维向量记录。

我们当然可以对这个五维向量进行分析和挖掘,这样的资源消耗是绝对可以接受的,实际情况下,机器学习的维数可能远远超过五维,出现几十维甚至成百上千维,这种情况下如果不对数据进行降维,机器学习的资源消耗是不可接受的。

降维当然就意味着信息的丢失,但是因为不同字段数据之间往往存在着相关性,所以我们可以在降维的同时将信息的损失降低。举个例子,若性别男取值1,性别女取值0,对于这种非此即彼的数据信息,我们去掉其中一类对整个数据信息实际上并没有影响,保留一类完全可以还原另一类。

当然上面只是特例,实际情况中数据信息之间不可能都是非此即彼的关系,此时我们就需要寻找其他的相关关系,还是以上面淘宝店铺为例,从经验我们可以知道,浏览量和访客数往往具有较强的相关关系,而下单数和成交数也关系密切,直观理解为如果某天的浏览量较高那么访客数也较高。这种情况表明,此时我们删除浏览量或访客数其中的一个,应该并不会丢失太多信息,这只是从现实实际例子来看,理论上还需要对降维问题进行数学化和形式化的分析,这就是PCA。

在进行图像的特征提取的过程中,提取的特征维数太多经常会导致特征匹配时过于复杂,消耗系统资源,不得不采用特征降维的方法。所谓特征降维,即采用一个低纬度的特征来表示高纬度。特征降维一般有两类方法:特征选择特征抽取。特征选择即从高纬度的特征中选择其中的一个子集来作为新的特征;而特征抽取是指将高纬度的特征经过某个函数映射至低纬度作为新的特征。常用的特征抽取方法就是PCA。

Matlab中已经包含了实现了的PCA算法,可以通过princomp函数调用。其形式为:

[COEFF,SCORE, latent]=princomp(X);

         其中,参数的含义如下:


0 0