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. B4010 菜肴制作 拓扑排序(附随机跳题代码)

    今天写了一个自己的随机跳题小程序,第一次试发现跳的全是不可做题,但是在周围我一眼看见了这个题,不能说一眼看出来,但是也是比较有思路,所以就做他了! 做得比较顺利,做完之后美滋滋,突然发现样例第三组过不 ...

  2. nodejs express开发

    用NodeJS+Express开发WEB应用---第一篇 大漠穷秋2014-03-28 预热 为了对后面的内容理解更加透彻,推荐首先阅读下面这篇很好的文章: http://www.nodebeginn ...

  3. Python 31 TCP协议 、socket套接字

    1.TCP协议 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割. (1)三次握手建链接( ...

  4. K8S-删除Terminating状态的namespace

    kubernetes 删除Terminating状态的命名空间 1.检查该namespace下是否还有资源: kubectl get all --namespace=cattle-system 2.删 ...

  5. go 函数高级运用

    一.函数作用域 说明 作用域的定义:已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围 在说函数作用域之前,先简单说一下局部变量和局变量 简单的说: 全局变量:在一个文件中,任何地方都 ...

  6. python 端口扫描程序

    #! /usr/bin/env python3 #-*- coding:utf-8 -*- import socket import threading OPEN_COUNT = 0 lock = t ...

  7. 常用的 Maven 命令

    maven 命令的格式为 mvn [plugin-name]:[goal-name],可以接受的参数如下. -D 指定参数,如 -Dmaven.test.skip=true 跳过单元测试: -P 指定 ...

  8. BZOJ 1877 拆点费用流

    思路: 呃  水题不解释 行么,, //By SiriusRen #include <queue> #include <cstdio> #include <cstring ...

  9. 基于NPOI的扩展

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.HSS ...

  10. sql--Truncate Table

    Truncate Table(截断表) 有时候需要清除一个表中的所有资料.要达到者个目的,一种方式是DROP TABLE 指令.不过这样整个表格就消失,而无法再被用了. 另一种方式是Delete不带w ...