一、什么是PCA

PCA,即PrincipalComponents Analysis,也就是主成份分析;

通俗的讲,就是寻找一系列的投影方向,高维数据按照这些方向投影后其方差最大化(方差最大的即是第一主成份,方差次大的为第二主成份...

如下图:数据点沿该方向投影后,方差最大,投影之后,由于各个点之间的距离之最大化的,因此彼此之间是最容易区分的

二、一些应用

1、数据降维

比如比较常见的人脸识别,假设有10副脸部图像,每副图像存贮为512*512大小的矩阵,经过特征提取后features可能为10000甚至更多,形成一个10*10000的矩阵;针对如此多的特征进行识别计算量很大同时也没有必要(因为一部分特征就已经反应了脸部的大部分信息)。但同时,人为的(指主观的)对这些特征进行筛选也很可能会把很多有用的信息剔除掉了;这时PCA就派上用场了,通过PCA降维的方法就可以控制特征的多少了(通常取Score>85%的前N个主成份就够了,还视具体情况而定吧)。关于PCA降维的应用与理论,PCA算法学习_1(OpenCV中PCA实现人脸降维),讲的很清楚了。

2、特征分析、选择

常用PCA进行数据降维,但使用PCA进行特征选择的案例并不常见。而使用PCA、小波变换等方法可以做到将维数降低、以简化后续分类等过程的复杂度,但这些降维方法本身的计算量也不小,在一些应用场景中需要在线实时的进行数据处理时,在保障模型预测准确性的基础上,模型当然越简单消耗的资源越少越好。面对海量特征,其中每个特征对模型预测准确性的贡献是有所不同的,某个特征与PCA主成分方向夹角越小(可用余弦相似性衡量),该特征对PCA主成分的贡献就越大,新特征F与原特征矩阵X的关系可用X的特征向量A联系:

F=Af

三维情况下,新特征F与原特征f变换关系表示为:

则原特征fj对新特征F的贡献通过下式计算:

贡献度Conj的大小及衡量了原有的某个特征对所有新特征的重要程度。

若原特征维数巨大,在线分析的应用中对其进行PCA的降维操作也有一定的计算量。在模型构建之初,即可使用PCA方法,通过计算特征贡献度Con,选取贡献度大的一些特征来直接训练模型以及后续的分类预测工作。

以上是个人实践中的一些总结,欢迎批评指正~

												

PCA与特征选取的更多相关文章

  1. 特征选取1-from sklearn.feature_selection import SelectKBest

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  2. 转 :scikit-learn的GBDT工具进行特征选取。

    http://blog.csdn.net/w5310335/article/details/48972587 使用GBDT选取特征 2015-03-31 本文介绍如何使用scikit-learn的GB ...

  3. scikit-learn的GBDT工具进行特征选取。

    http://blog.csdn.net/w5310335/article/details/48972587 使用GBDT选取特征 2015-03-31 本文介绍如何使用scikit-learn的GB ...

  4. [模式识别].(希腊)西奥多里蒂斯<第四版>笔记5之__特征选取

    1,引言 有关模式识别的一个主要问题是维数灾难.我们将在第7章看到维数非常easy变得非常大. 减少维数的必要性有几方面的原因.计算复杂度是一个方面.还有一个有关分类器的泛化性能. 因此,本章的主要任 ...

  5. 吴裕雄 python 机器学习——数据预处理过滤式特征选取SelectPercentile模型

    from sklearn.feature_selection import SelectPercentile,f_classif #数据预处理过滤式特征选取SelectPercentile模型 def ...

  6. 吴裕雄 python 机器学习——数据预处理过滤式特征选取VarianceThreshold模型

    from sklearn.feature_selection import VarianceThreshold #数据预处理过滤式特征选取VarianceThreshold模型 def test_Va ...

  7. 吴裕雄 python 机器学习——数据预处理包裹式特征选取模型

    from sklearn.svm import LinearSVC from sklearn.datasets import load_iris from sklearn.feature_select ...

  8. 特征选取方法PCA与LDA

    一.主成分分析(PCA)介绍 什么是主成分分析?   主成分分析是一种用于连续属性降维的方法,把多指标转化为少数几个综合指标. 它构造了原始属性的一个正交变换,将一组可能相关的变量转化为一组不相关的变 ...

  9. [译]使用scikit-learn进行机器学习(scikit-learn教程1)

    原文地址:http://scikit-learn.org/stable/tutorial/basic/tutorial.html 翻译:Tacey Wong 概要: 该章节,我们将介绍贯穿scikit ...

随机推荐

  1. 排序算法的C语言实现(上 比较类排序:插入排序、快速排序与归并排序)

    总述:排序是指将元素集合按规定的顺序排列.通常有两种排序方法:升序排列和降序排列.例如,如整数集{6,8,9,5}进行升序排列,结果为{5,6,8,9},对其进行降序排列结果为{9,8,6,5}.虽然 ...

  2. 初步配置阿里云ECS服务器

    阿里云服务器配置记录01 购买阿里云学生服务器9.9元每月 创建ubuntu64位实例系统,注意必须添加安全组设置才可远程登入(设置课访问端口及IP范围 putty 软件在windows10下远程登入 ...

  3. UIkit复习:UIContorl及子控件的剖析

    1.模块继承关系: 1.UIButton        ->UIControl  -> UIView 2.UILabel          ->UIview 3.UIImageVie ...

  4. 无法启动postgresql的错误

    chown postgres /etc/ssl/private/ssl-cert-snakeoil.key chgrp postgres /etc/ssl/private/ssl-cert-snake ...

  5. Spark Streaming中的操作函数分析

    根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类 Transformations Window Operations J ...

  6. Android开发使用Java8新特性

    Android 支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异).本文介绍您可以使用的新语言功能.如何正确配置项目以使用这些功能,以及您可能遇到的任何已知问题 ...

  7. [文摘]Quick Start to Client side COM and Python

    摘自:PyWin32.chm Introduction This documents how to quickly start using COM from Python. It is not a t ...

  8. YCSB性能测试工具使用

    在网上查In-Memory NoSQL性能测试的资料时,偶然间发现了这个性能测试工具YCSB,全称为"Yahoo! Cloud Serving Benchmark".它内置了对常见 ...

  9. 深入了解UIViewController控制器与对应的View类的详解

    ViewController是iOS开发中MVC模式中的C(视图控制器),ViewController是view的controller,ViewController的职责主要包括管理内部各个view的 ...

  10. windows下Eclipse操作MapReduce例子报错:Failed to set permissions of path: \tmp\hadoop-Jerome\mapred\staging\

    windows下Eclipse操作MapReduce例子报错: 14/05/18 22:05:29 WARN util.NativeCodeLoader: Unable to load native- ...