第十三章 利用PCA来简化数据

一.降维技术

当数据的特征很多的时候,我们把一个特征看做是一维的话,我们数据就有很高的维度。高维数据会带来计算困难等一系列的问题,因此我们需要进行降维。降维的好处有很多,比如:降低算法开销,让数据更加便于使用,去燥,数据更易于显示等等。

目前的降维技术主要有三种:第一种主成分分析(PCA),也就是本章介绍的内容,它只保留方差方向最大的若干个特征;第二种是因子分析,这种方法它的思想就是认为数据是由隐参数和噪声混合而成,如果我们能够找到隐参数和噪声就能够实现降维;第三种是独立成分分析(ICA),这种方法的思想是它认为数据是由若干个独立的数据源混合而成,如果我们能够找到这些数据源,就能够实现降维。

二.PCA的基本思想

PCA就是把一个高维的空间映射到一个低维的空间,这个低维的空间,让样本点的投影尽可能的分开,距离尽可能的大。要找到这样的一个低维空间,我们是通过不断的选择方差最大的方向来作为新特征维度实现的,当选择的方向的数目少于初始的特征维度,就实现了降维。

PCA算法的一般特性:

1.它的优点:降低数据的复杂度

2.它的缺点:可能用不到,会丧失一些有用的信息

3.它的使用类型:数值型数据

PCA算法实现的一般过程:

1.进行去中心化(也就是将每个数据减掉它的平均值)

2.计算XTX,也就是计算出协方差矩阵

3.计算协方差矩阵的特征向量和特征值

4.将得到的特征值进行从小到大的排列,然后选择值最大的d个特征值对应的特征向量作为新空间的方向向量

5.将数据映射到新的空间

三.PCA算法的实现

根据PC A算法的一般过程我们可以得到以下的实现方式:

首先我们需要获得数据

其次我们就能够定义PC A算法了

四.总结

PC A算法是一种进行降维的重要方法。我们在选择保留的特征的数目时,我们既可以实现设定,也可以根据得到特征值来进行选择。保留合适的特征数目对于数据非常的重要。

当前的降维方法主要有三种,一种是独立成分分析,一种是主成分分析,还有一种就是因子分析。主成分分析是一种应用比较广泛的方法。主成分分析他通过不断选择数据方差最大的方向来实现降维。

PCA算法和python实现的更多相关文章

  1. PCA算法和SVD

    如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值.这里可以将特征值为负,特征向量旋转180度,也可看成方向不变,伸缩 ...

  2. 使用Apriori算法和FP-growth算法进行关联分析

    系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...

  3. 用Spark学习FP Tree算法和PrefixSpan算法

    在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...

  4. 最小生成树---Prim算法和Kruskal算法

    Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...

  5. 经典算法和OJ网站(开发者必备-转)

    一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...

  6. BM算法和Sunday快速字符串匹配算法

    BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...

  7. 台球游戏的核心算法和AI(2)

    前言: 最近研究了box2dweb, 觉得自己编写Html5版台球游戏的时机已然成熟. 这也算是圆自己的一个愿望, 一个梦想. 承接该序列的相关博文: • 台球游戏核心算法和AI(1) 同时结合htm ...

  8. mahout中kmeans算法和Canopy算法实现原理

    本文讲一下mahout中kmeans算法和Canopy算法实现原理. 一. Kmeans是一个很经典的聚类算法,我想大家都非常熟悉.虽然算法较为简单,在实际应用中却可以有不错的效果:其算法原理也决定了 ...

  9. 转载:最小生成树-Prim算法和Kruskal算法

    本文摘自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 最小生成树-Prim算法和Kruskal算法 Prim算 ...

随机推荐

  1. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  2. native2ascii命令

    native2ascii命令 native2ascii的命令行的命名格式:       native2ascii -[options] [inputfile [outputfile]] 说明:     ...

  3. python 操作mysql数据库demo

    sudo apt-get install python-mysqldb #!/usr/bin/env python #encoding=utf-8 import sys import MySQLdb ...

  4. 【leetcode82】Linked List Cycle

    题目描述: 判断有序list是不是环 要求: 时间复杂度o(n) 原文描述: Given a linked list, determine if it has a cycle in it. Follo ...

  5. linux C 获取当前的工作目录

    #include <stdio.h> #include <string.h> #include <unistd.h> int main(void) { char b ...

  6. 浅谈我为什么选择用Retrofit作为我的网络请求框架

    比较AsyncTask.Volley.Retrofit三者的请求时间 使用 单次请求 7个请求 25个请求 AsyncTask 941ms 4539ms 13957ms Volley 560ms 22 ...

  7. Make3D Convert your image into 3d model

    Compiling and Running Make3D on your own computer source: http://make3d.cs.cornell.edu/code_linux.ht ...

  8. iOS雷达图 iOS RadarChart实现

    实现效果 刚拿到设计稿的时候大概看了一眼,当时心里想着放张背景图,然后计算下相应点的坐标,在最上面画一层就OK了,其实一开始实现的时候也确实是这么做的,然后我就日了狗了,发现设计稿上多层五边形的间隔不 ...

  9. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  10. 自定义Interpolator

    nterpolator这个东西很难进行翻译,直译过来的话是补间器的意思,它的主要作用是可以控制动画的变化速率,比如去实现一种非线性运动的动画效果.那么什么叫做非线性运动的动画效果呢?就是说动画改变的速 ...