PCA降维技术

PCA
降维
Fly

Time: 2017-2-28


主成分分析(PCA)


主成分分析(Principal Component Analysi)是一种掌握可以提取主要特征对的方法,它可以从多元失误中解析出主要影响因素。计算朱成福的目的是将高维数据投影到低维空间。主要是用于降维,提取数据的主要特征分量。

降维,当然以为着信息的丢失,但是鉴于数据本身常常存在相关性,我们可以想办法在降维的同时将信息的随时尽量降低。

PCA Algorithm


主要思想:

利用较少数据的特征对样本进行描述以达到降低特征空间维数的目的,根据样本点在多维空间的位置分布,以样本点在空间中变化最大方向,即方差最大方向,作为差别矢量来实现数据的特征提取。具体可以参考这篇文章 关于K-L变换的部分。

在PCA中,我们要做的是找到一个方向向量,当我们把所有的数据都投射到该向量上时,我们希望投射的平均均方误差尽可能的小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量垂线的长度。大致的情形如下图

具体步骤:

step 1. 数据:

step 2. 零均值化

step 3. 计算出协方差矩阵

step 4. 计算出协方差矩阵的特征值与特征向量, 可以使用SVD分解来实现

step 5. 取特征值最大的前K个特征向量组成矩阵

step 6. 计算PCA: , Y为降维后的结果

  1. 在step 2, 对原始数据进行均值化处理后,不仅消除了指标量纲和数量的影响,而且能更加全面地反映原始数据中各指标的变异程度和相互影响程度的信息

  2. 而关于协方差矩阵主要是因为,对于,当计算自相关()而协方差计算的主要是数据的相关性质,所以我们可以减少相关性,从而来实现对数据的降维。关于为什么需要使用协方差矩阵可以看这篇文章

  3. 需要注意的是PCA主要是减少投射的平均均方误差,这里需要和线性回归做区别,线性回归主要减少的是最小均方误差。如下图

实例


假设有5条数据,两个特征属性,矩阵的形式如下:

按照上面的算法来实现:

[1]

[2] 均值化:我们可以知道

[3] 计算协方差矩阵

[4] 求特征值 以及特征向量可得

[5] 这里我们取最大的一列,可得到

最后我们得到了最终的降维结果如下图

投影结果

为了更好的观察,把Andrew Ng的课件图拿了过来:

PCA降维技术的更多相关文章

  1. 机器学习算法-PCA降维技术

    机器学习算法-PCA降维 一.引言 在实际的数据分析问题中我们遇到的问题通常有较高维数的特征,在进行实际的数据分析的时候,我们并不会将所有的特征都用于算法的训练,而是挑选出我们认为可能对目标有影响的特 ...

  2. 降维技术---PCA

    数据计算和结果展示一直是数据挖掘领域的难点,一般情况下,数据都拥有超过三维,维数越多,处理上就越吃力.所以,采用降维技术对数据进行简化一直是数据挖掘工作者感兴趣的方向. 对数据进行简化的好处:使得数据 ...

  3. [机器学习之13]降维技术——主成分分析PCA

    始终贯彻数据分析的一个大问题就是对数据和结果的展示,我们都知道在低维度下数据处理比较方便,因而数据进行简化成为了一个重要的技术.对数据进行简化的原因: 1.使得数据集更易用使用.2.降低很多算法的计算 ...

  4. 数据降维技术(2)—奇异值分解(SVD)

    上一篇文章讲了PCA的数据原理,明白了PCA主要的思想及使用PCA做数据降维的步骤,本文我们详细探讨下另一种数据降维技术—奇异值分解(SVD). 在介绍奇异值分解前,先谈谈这个比较奇怪的名字:奇异值分 ...

  5. 利用PCA降维

    参考:<机器学习实战>- Machine Learning in Action 一. 基本思想  PCA(Principal Component Analysis),主成分分析.是目前应用 ...

  6. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  7. 用PCA降维 (Principal Component Analysis,主成分分析)

    参考资料:Mastering Machine Learning With scikit-learn 降维致力于解决三类问题.第一,降维可以缓解维度灾难问题.第二,降维可以在压缩数据的同时让信息损失最 ...

  8. 机器学习(十六)— LDA和PCA降维

    一.LDA算法 基本思想:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的.这点和PCA不同.PCA是不考虑样本类别输出的无监督降维技术. 我们要将数据在低维度上进行投影,投 ...

  9. [综] PCA降维

    http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mx ...

随机推荐

  1. Java中继承,类的高级概念的知识点

    1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩 ...

  2. Sorting It All Out(拓扑排序)

    http://poj.org/problem?id=1094 1.判断所给关系是否为合法的拓扑序列,若存在环,输出 "Inconsistency found after %d relatio ...

  3. 使用node成功安装完某插件typescript后,在使用时提示:tsc(或xxx)不是内部或外部命令,也不是可运行的程序或批处理文件

    具体出错情形: 使用npm安装typescript明明安装成功,但在使用时一直报错,报错语句为  tsc不是内部或外部命令,也不是可运行的程序或批处理文件 具体出错原因: node未正确安装,或相关环 ...

  4. django-2的路由层(URLconf)

    URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...

  5. mygenerator().next() AttributeError: 'generator' object has no attribute 'next'

    def mygenerator(): print ("start ...") yield 5 mygenerator() print ("mygenerator():&q ...

  6. KindEditor文本编辑框的实现

    效果图: kindeditor 是一个插件 下载地址: https://files-cdn.cnblogs.com/files/lxnlxn/kindeditor.zip 解压后将其放在项目的js文件 ...

  7. 获取Json中特定的值

      假如我们得到了一个json的数据:json===>   {"Head":{"TransCode":"X1009","Tr ...

  8. VS2012 +OpenCv2.4.4配置

    使用OpenCV少了数据读取.填充.存储的麻烦. 转载于opencv官网:对于2010和2.43的配置可以直接挪用到新配置环境 http://www.opencv.org.cn/index.php/V ...

  9. Spring MVC 中的基于注解的 Controller(转载)

           终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法 ...

  10. 【sqli-labs】 less41 GET -Blind based -Intiger -Stacked(GET型基于盲注的堆叠查询整型注入)

    整型的不用闭合引号 http://192.168.136.128/sqli-labs-master/Less-41/?id=1;insert into users(id,username,passwo ...