主成分分析

  • 前言

    • 近年来,随着互联网和信息行业的发展,数据已经渗透到各行各业,成为重要的生产因素如数据记录和属性规模的急剧增长。社会已经进入大数据时代,数据越多越好似乎已经成为公理。然而,数据量并不是越大越好,有时过犹不及,在数据分析应用中大量的数据反而会产生更坏的性能。这些海量数据可能含有噪声或冗余信息,当数据集包含过多的数据噪声时,会导致算法的性能达不到预期的效果。移除信息量较少甚至无效信息可能会帮助用户构建更具扩展性、通用性的数据模型。对这些海量数据进行挖掘与运用,也推动了数据降维的应用,大数据处理平台和并行数据分析算法也随之出现。
    • 数据降维
      • 数据降维,一方面可以解决“维数灾难”,缓解“信息丰富、只是贫乏”的现状,降低复杂度;另一方面,可以更好地认识和理解数据。
      • 数据降维,也称为维数约简(Dimensionality Reduction),即降低数据的维数,将原始高维特征空间的点向一个低维空间投影,新的空间维度低于原特征空间,所以维数减少了。在这个过程中,特征发生了根本性的变化,原始的特征消失了(虽然新的特征保持了原特征的一些性质)。
      • 时至今日,数据降维的方法有很多。不同的角度有不同的分类。
        • 根据数据特性分为以下几种。

          • 线性降维

            • 主成分分析(PCA),线性辨别分析(LDA)等。
          • 非线性降维
            • 核方法(核主成分分析KPCA,KFDA),二维化和张量化(常见算法有二维主分量分析、二维线性判别分析、二维典型相关分析),流形学习(ISOMap等距映射、LE拉普拉斯特征映射、LLE局部线性嵌入等)。
        • 根据是否考虑和利用数据的监督信息分为以下几种。
          • 无监督降维(PCA等)
          • 有监督降维(LDA等)
          • 半监督降维(半监督概率PCA、半监督判别分析SDA等)
      • 此外,在数据处理中,经常会遇到特征维度比样本数量多得多的情况,如果直接运用模型,效果不一定好,一是因为冗余的特征会带来一些噪声,影响计算的结果;二是因为无关的特征会加大计算量,耗费时间和资源。所以通常会对数据重新变换一下,再运用模型处理。数据变换的目的不只是降维,还可以消除特征之间的相关性,并发现一些潜在的特征变量。
    • 图像压缩
      • 图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。数据降维的思想也可以应用到图像压缩上,图像数据之所以能被压缩,就是因为数据间存在冗余。图像数据的冗余主要表现在以下几个方面。

        • 图像中相邻像素之间的相关性引起的空间冗余。
        • 图像序列中不同帧之间存在相关性引起的时间冗余。
        • 不同彩色平面或频谱带的相关性引起的频谱冗余。
      • 数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数。由于图像数据量庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。
    • 信息时代带来了“信息爆炸”,数据量大增,因此,无论传输或存储都需要对数据进行有效的压缩。在遥感技术中,各种航天探测器采用压缩编码技术,将获取的巨大信息送回地面。
  • 原理
    • 主成分分析(PCA)是一种常见的数据降维方法,其目的是在“信息”损失较小的前提下,将高维的数据转换到低维。
    • PCA的本质就是发现一些投影方向,使得数据在这些投影方向上的方差最大,而且这些投影方向彼此之间是相互正交的,即寻找新的正交基,然后计算原始数据在这些正交基上的方差。方差越大,说明在对应正交基上包含了更多的信息量。输入空间经过旋转投影后,输出集合的第一个向量包含了信号的大部分能量(即方差)。第二个向量与第一个向量正交,它包含了剩余能量的大部分;第三个向量又与前两个向量正交,并包含剩余能量的大部分,以此类推。假设在N维空间中,可以找到N个这样的相互正交的投影方向(坐标轴),取前r个去近似原先的数据空间,这样就从一个N维的空间压缩到了r维空间。
    • 那么,数据降维到什么程度呢?如何找到新的投影方向使得原始数据的“信息量”损失最少?
    • 样本的“信息量”指的就是样本在特征方向上投影的方差。方差越大,则样本在该特征上的差异就越大,因此该特征越重要。原始数据协方差矩阵的特征值越大,对应的方差越大,在对应的特征向量上投影的信息量就越大。反之,如果特征值较小,则说明数据在这些特征向量上投影的信息量很小,可以将小特征值对应方向的数据删除,从而达到了降维的目的。
    • 在原始数据很多维的情况下,先得到一个数据变换后方差最大的方向,然后选择与第一个方向正交的方向,该方向是方差次大的方向,如此下去,直到变换出与原特征个数相同的新特征或变换出前N个特征(这前N个特征包含了数据绝大部分信息),简言之,PCA是一个降维的过程,将数据映射到新的特征,新特征是原始特征的线性组合。
    • 数学推导不介绍了,看一下基本步骤。
      • 计算平均值,所有样本减去对应平均值。
      • 计算整个样本的协方差矩阵。
      • 计算协方差的特征值和特征向量。
      • 将特征值按照从大到小的顺序排列,选择其中较大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。
      • 将样本点投影到选取的特征向量上。
  • 实战
    • sklearn已经封装了PCA,具体参数名称自行查看源码
    • 使用PCA降维随机数据
    • 代码
      •   # -*-coding:utf-8-*-import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom sklearn.datasets.samples_generator import make_blobsfrom sklearn.decomposition import PCAX, y = make_blobs(n_samples=10000, n_features=3, centers=[[3, 3, 3], [0, 0, 0], [1, 1, 1], [2, 2, 2]],cluster_std=[0.2, 0.1, 0.2, 0.2], random_state=9)# 显示数据fig = plt.figure()ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=10)plt.scatter(X[:, 0], X[:, 1], X[:, 2], marker='o')plt.show()# 进行主成分分析pca = PCA(n_components=3)pca.fit(X)print(pca.explained_variance_ratio_)print(pca.explained_variance_)# 降维pca = PCA(n_components=2)pca.fit(X)X_new = pca.transform(X)plt.scatter(X_new[:, 0], X_new[:, 1], marker='o')plt.show()
        
    • 运行效果
  • 补充说明
    • 参考书为《Python3数据分析与机器学习实战》,对部分错误修改
    • 具体数据集和代码见我的Github,欢迎Star或者Fork

机器学习-降维之主成分分析PCA算法原理及实战相关推荐

  1. 机器学习-降维之奇异值分解SVD算法原理及实战

    奇异值分解 简介 PCA是通过特征值分解来进行特征提取的,但它要求矩阵必须是方阵,但在实际应用场景中,经常遇到的矩阵都不是方阵,如N个学生,每个学生有M门课程,其中N!=M, 这就组成了一个M*N的非 ...

  2. 机器学习-集成之随机森林算法原理及实战

    Bagging和随机森林 前言 集成学习是目前机器学习的一大热门方向.简单来说,集成学习就是组合许多弱模型以得到一个预测结果比较好的强模型.对于常见的分类问题就是指采用多个分类器对数据集进行预测,把这 ...

  3. 机器学习-回归之逻辑回归算法原理及实战

    逻辑回归 简介 在一元回归和多元回归模型中,处理的因变量都是数值型区间变量,建立的模型描述的是因变量的期望与自变量之间的线性关系.然而,在实际的问题分析时,所研究的变量往往不全是区间变量而是顺序变量或 ...

  4. 机器学习--主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?

    原文链接:主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是"投影"?_天下对手教会少林武僧-CSDN博客_pca投影矩阵 这是从网上看到的PCA算 ...

  5. 主成分分析|PCA算法大全

    主成分分析|PCA算法大全 文章目录 主成分分析|PCA算法大全 1. PCA原理 1.1 最大方差理论 1.2 最小平方误差理论 1.3 高维数据下的特征值分解 2. CCIPCA增量主元分析算法[ ...

  6. PCA算法原理及python实现

    [原理]PCA算法原理 1.PCA算法 PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法.在PCA中,数据从原来的坐标系转换到新的坐 ...

  7. 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...

    机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

  8. 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))

    机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...

  9. 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)

    文章目录 0. 前言 1. 主成分分析PCA 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 维数灾难:在高维情形下出现的数据样本稀疏.距离计算困难等问题. 缓解 ...

最新文章

  1. 深入理解Java虚拟机——第二章——Java内存区域与内存溢出异常
  2. scvmm2008R2创建委派管理员角色
  3. matlab安装_走进数模(三)MATLAB安装
  4. 洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ)
  5. 深度报文检测 linux,DPI-深度报文检测
  6. php 反射类,PHP中的反射类
  7. 设置git协议clone代理
  8. 299. 猜数字游戏
  9. 工作失误:没有分析进程消耗了这么多内存的原因
  10. cboard企业版源码_CBoard的部署与使用
  11. 网吧的监控系统和服务器如何连接,网吧监控系统安装解决方案
  12. 电脑telnet失败的解决方法
  13. 优雅草YYC松鼠短视频2022年12月28日更新v5.1.6版本更新·修复因为消息提醒二开导致菜单栏无法显示·进一步完善推送
  14. 核电工程能源行业案例 | 达索系统百世慧®
  15. PR剪辑-电子相册学习笔记
  16. 第一类和第二类曲面积分的转换
  17. 2018互联网寒冬之裁员浪潮--感同深受(winter is here)
  18. srs linux开机启动,SRS之安装与使用
  19. nvl2与nvl使用区别
  20. Git入门教程之注册(一)

热门文章

  1. 手写自己的MyBatis框架-MapperProxy
  2. 请解释下Spring 框架中的IOC 容器?
  3. 逆向推导https的设计过程
  4. 字节流写数据的两个小问题
  5. OAuth2解决什么问题
  6. SasSHRM中基于shiro的认证授权:环境搭建
  7. 数据库-优化-慢查日志分析工具-pt-query-digest介绍及作用
  8. Redis实现分布式锁释放锁
  9. plsql(轻量版)_游标的使用2
  10. d3中文案例_D3.js柱状图例子