数据降维技术——PCA(主成分分析)

2024-08-30 08:48

本文主要是介绍数据降维技术——PCA(主成分分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     为什么要对数据进行降维?

    在机器学习或者数据挖掘中,我们往往会get到大量的数据源,这些数据源往往有很多维度来表示它的属性,但是我们在实际处理中只需要其中的几个主要的属性,而其他的属性或被当成噪声处理掉。比如,13*11的源数据经过将为后变成了13*4的优化数据,那么,中间就减去了7个不必要的属性,选取了4个主要属性成分,简化了计算。

    常用的数据降维方法有:主成分分析、因子分析、独立成分分析。本文仅介绍主成分分析方法。

    主成分分析PCA,Principal Component Analysis),其中的数学原理可参考360图书馆http://www.360doc.com/content/13/1124/02/9482_331688889.shtml

    优点:

    降低数据的复杂性,识别最重要的多个特征。

    缺点:

    不一定需要,且可能损失有用的信息。

    适用类型:

    数值型数据。

    木羊根据自己的学习与理解总结出的PCA步骤:

  1.  获取n行m列原始数据,写成n*m的矩阵形式;
  2. 数据中心化。即把每个属性的均值处理设为0(下面木羊将给出自己编写的源代码,木羊的数据用列代表属性,在该步骤中,就把每列的均值都设置为0)。
  3. 根据中心化后的矩阵求协方差矩阵。协方差有三种值,0表示属性之间相互独立,没有影响;正值表示属性是正相关的关系,若属性A和属性B是正相关关系,则A增加B也增加,A减小B也减小;负值表示属性是负相关的关系,若属性C和属性D是负相关关系,则C增加D减小,C减小D增加。所以,协方差矩阵也可以理解为相关系数矩阵,表示属性间的相关程度。
  4. 根据协方差矩阵求特征值矩阵。特征值矩阵只有对角线上的元素有值,上三角和下三角元素都为0.
  5. 根据特征值矩阵求对应的特征向量。
  6. 对特征值矩阵进行排序,并设定一个阈值,若前i个特征矩阵的和>=设定的阈值,则就有i个主成分,取其对应的特征向量,定为主成分向量矩阵。
  7. 原始矩阵乘以转置后的主成分向量即得降维后的矩阵。比如,原始数据是150*4的矩阵,在步骤6中取得了2个主成分,那么主成分矩阵就是2*4的矩阵。150*4的矩阵乘以4*2的矩阵,即得150*2的矩阵,体现了降维效果。(选取这个属性较少的数据集是为了方便初学者的理解,在实际工程中,我们的属性值往往不止4个,但降维方法都一样的。)

这篇关于数据降维技术——PCA(主成分分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120346

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda