主成分分析PCA以及特征值和特征向量的意义

定义:

主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。PCA的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主成分,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。

简单解释:

具体的,假如我们的数据集是n维的,共有m个数据。我们希望将这m个数据的维度从n维降到k维,希望这m个k维的数据集尽可能的代表原始数据集。我们知道数据从n维降到k维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这k维的数据尽可能表示原来的数据呢?

我们先看看最简单的情况,也就是n=2,k=1,也就是将数据从二维降维到一维。数据如下图。我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量方向,u1和u2,那么哪个向量可以更好的代表原始数据集呢?从直观上也可以看出,u1比u2好,因为数据在这个方向上投影后的样本点之间方差最大。

 例子:

有两维数据:

对X进行归一化,使X每一行减去其对应的均值,得到:

求X的协方差矩阵:

求解C的特征值,利用线性代数知识或是MATLAB中eig函数可以得到:

对应的特征向量分别是:

将原数据降为一维,选择最大的特征值对应的特征向量,因此P为:

降维后的数据:

 那么,为什么要求特征值和特征向量呢?

 特征值和特征向量:

转自https://blog.csdn.net/fuming2021118535/article/details/51339881

定义: 设A是n阶矩阵,如果数λ和n维非零向量x使关系式

                                                                           ……(1)

成立,那么,这样的数λ称为矩阵A的特征值,非零向量x称为A的对应于特征值λ的特征向量,(1)式还可以写为   

                                                                  ……(2)

如果想求出矩阵对应的特征值和特征向量就是求式(2)的解了。

那么,问题来了,这个式子要怎么理解呢?

首先得先弄清矩阵的概念:一个矩阵代表的是一个线性变换规则,而一个矩阵的乘法运行代表的是一个变换;

比如有一个矩阵A:

一个列向量为X为:

一个矩阵的乘法为:

向量X通过矩阵A这个变化规则就可以变换为向量Y了

                      

 

 知道了这个就可以从几何上理解特征值和特征向量是什么意思了,由  

               

可知:

所以,确定了特征值之后,向量x的变换为: 

引用《线性代数的几何意义》的描述:“矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。”

那么这样定义的特征值和特征向量有什么实际用途呢?在这里我举个数据挖掘算法中重要的一个算法:PCA(主成分分析)来给大家直观的感受一下。

首先,理解一下信息量这个概念

看几张图:

如果我们单独看某一个维度的话,比如看x1这个维度

可以看到将点投影到x1这个维度上看的话,图1的数据离散性最高,图3较低,图2数据离散性是最低的。数据离散性越大,代表数据在所投影的维度上具有越高的区分度,这个区分度就是信息量。如果我们用方差来形容数据的离散性的话,就是数据方差越大,表示数据的区分度越高,也就是蕴含的信息量是越大的。

 基于这个知识,如果我们想对数据进行降维的话,比如图1的两个维度的数据降成一维,我们可以选择保留X1这个维度的数据,因为在这个维度上蕴含的信息量更多。

同理,图2就可以保留x2这个维度的数据。但是,问题来了,图3应该保留哪个维度的数据呢?答案是保留哪个维度都不好,都会丢失较大的信息量。但是,如果我们把图3的坐标轴旋转一下

比较容易看出,图3在新的坐标轴下就能进行降维了。所以选取正确的坐标轴,然后根据各个维度上的数据方差大小,决定保留哪些维度的数据,这样的做法就是主成分分析的核心思想。

选取正确的坐标轴的过程中,我们需要一个矩阵变换,就类似于这样:   

                                           

也就是:

其实,经过数学上的推导的,我们就可以知道,特征值对应的特征向量就是理想中想取得正确的坐标轴,而特征值就等于数据在旋转之后的坐标上对应维度上的方差

也就是说,直接求出矩阵A的特征向量得出对应的特征向量。我们就能找到旋转后正确的坐标轴。这个就是特征值和特征向量的一个实际应用:“得出使数据在各个维度区分度达到最大的坐标轴。”

所以,在数据挖掘中,就会直接用特征值来描述对应特征向量方向上包含的信息量,而某一特征值除以所有特征值的和的值就为:该特征向量的方差贡献率(方差贡献率代表了该维度下蕴含的信息量的比例)。

通常经过特征向量变换下的数据被称为变量的主成分,当前m个主成分累计的方差贡献率达到一个较高的百分数(如85%以上)的话,就保留着这m个主成分的数据。实现了对数据进行降维的目的。整个主成分分析的算法原理也就是这个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

吴恩达《机器学习》学习笔记七——逻辑回归&#xff08;二分类&#xff09;代码一、无正则项的逻辑回归1.问题描述2.导入模块3.准备数据4.假设函数5.代价函数6.梯度下降7.拟合参数8.用训练集预测和验证9.寻找决策边界二、正则化逻辑回归1.准备数据2.特征映射3.正则化代价函数4.…

需要自己调研的框架,以及需要学习的内容

_webView 图文解析需要学习 Core Text 来解决图文混合的xml文件 项目中用到哪些数据持久化&#xff0c;什么场景下使用&#xff1f; http://www.cocoachina.com/ios/20150720/12610.html 解决问题的网站 CSDN.NETCocoaChina51CTO技术论坛特酷吧国外it技术论坛stack overflow 需…

Python获得一篇文档的不重复词列表并创建词向量

获得一篇文档的不重复词列表&#xff1a; def loadDataSet():postingList [[my, dog, has, flea, problems, help, please],[maybe, not, take, him, to, dog, park, stupid],[my, dalmation, is, so, cute, I, love, him],[stop, posting, stupid, worthless, garbage],[mr,…

从认知学到进化论,详述强化学习两大最新突破

来源&#xff1a;大数据文摘深层强化学习&#xff08;deep RL&#xff09;近年来在人工智能方面取得了令人瞩目的进步&#xff0c;在Atari游戏、围棋及无限制扑克等领域战胜了人类。通过将表征学习与奖励驱动行为相结合&#xff0c;深层强化学习又引发了心理学和神经科学领域的…

Python实现一个数组除以一个数

如果直接用python的一个list除以一个数&#xff0c;会报错&#xff1a; a [1.0, 1.0, 1.0] c a/3 print(c) TypeError: unsupported operand type(s) for /: list and int 使用Numpy可以轻松做到&#xff1a; import numpy as npa np.array([1,1,1]) c a/3 print(c)

吴恩达《机器学习》学习笔记九——神经网络相关(1)

吴恩达《机器学习》学习笔记九——神经网络相关&#xff08;1&#xff09;一、 非线性假设的问题二、 神经网络相关知识1.神经网络的大致历史2.神经网络的表示3.前向传播&#xff1a;向量化表示三、 例子与直觉理解1.问题描述&#xff1a;异或XOR、同或XNOR2.单个神经元如何计算…

刚刚,科学家发现了一大堆解释人类进化的基因...

图片来源&#xff1a;《Nature Genetics》来源&#xff1a;中国生物技术网 5月27日发表在《Nature Genetics》上的一项新研究发现&#xff0c; 以前被认为在不同生物体中具有相似作用的数十种基因&#xff0c;实际上是人类独有的&#xff0c; 这或许有助于解释我们这个物种是如…

Android数据存储——SQLite数据库(模板)

本篇整合Android使用数据库&#xff0c;要保存一个实体类的样本。 首先看一下数据库语句&#xff1a; ORM:关系对象映射 添加数据&#xff1a; ContentValues values new ContentValues();values.put("name", "小丽");values.put("phone", &qu…

Python切分文本(将文本文档切分为词列表)

对于一个句子&#xff0c;一种简单的方法是使用split() a This is an apple. Do you like apple? b a.split() print(b) # [This, is, an, apple., Do, you, like, apple?] 可以看到切分结果不错&#xff0c;但标点符号也当成了词的一部分&#xff0c;可以使用正则表达式…

吴恩达《机器学习》学习笔记八——逻辑回归(多分类)代码

吴恩达《机器学习》笔记八——逻辑回归&#xff08;多分类&#xff09;代码导入模块及加载数据sigmoid函数与假设函数代价函数梯度下降一对多分类预测验证课程链接&#xff1a;https://www.bilibili.com/video/BV164411b7dx?fromsearch&seid5329376196520099118 之前笔记…

DeepMind 综述深度强化学习:智能体和人类相似度竟然如此高!

来源&#xff1a;AI科技评论近年来&#xff0c;深度强化学习&#xff08;Deep reinforcement learning&#xff09;方法在人工智能方面取得了瞩目的成就&#xff0c;从 Atari 游戏、到围棋、再到无限制扑克等领域&#xff0c;AI 的表现都大大超越了专业选手&#xff0c;这一进展…

Python随机选择一部分训练样本作为测试样本

假设训练样本有30个&#xff0c;从训练样本中随机获得10个作为测试样本&#xff0c;剩下20个继续作为训练样本 import numpy as nptrainingSet list(range(30)) # 训练样本下标 testSet [] for i in range(10):randIndex int(np.random.uniform(0, len(training…

吴恩达《机器学习》学习笔记十——神经网络相关(2)

吴恩达《机器学习》学习笔记十——神经网络相关&#xff08;2&#xff09;一、 代价函数二、 反向传播算法三、 理解反向传播算法四、 梯度检测五、 随机初始化1.全部初始化为0的问题2.随机初始化的思想六、 神经网络算法整体流程1.选择网络具体架构2.训练神经网络课程链接&…

Ajax跨域请求解决方案——jsonp

转自&#xff1a;http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 1、一个众所周知的问题&#xff0c;Ajax直接请求普通文件存在跨域无权限访问的问题&#xff0c;甭管你是静态页面、动态网页、web服务、WCF&#xff0c;只要是跨域请求&#xff0…

MATLAB的Kmeans函数实现聚类

转自https://blog.csdn.net/a493823882/article/details/79282425 使用方法&#xff1a; Idxkmeans(X,K) [Idx,C]kmeans(X,K) [Idx,C,sumD]kmeans(X,K) [Idx,C,sumD,D]kmeans(X,K) […]Kmeans(…,’Param1’,Val1,’Param2’,Val2,…)各输入…

吴恩达《机器学习》学习笔记十一——神经网络代码

吴恩达《机器学习》学习笔记十一——神经网络代码数据准备神经网络结构与代价函数初始化设置反向传播算法训练网络与验证课程链接&#xff1a;https://www.bilibili.com/video/BV164411b7dx?fromsearch&seid5329376196520099118 数据集链接&#xff1a;https://pan.baidu…

中国科研人员发明单晶体管逻辑结构新原理

▲随着晶体管不断缩小特征尺寸&#xff0c;集成电路的性能得以持续提升。然而在超小器件尺寸下&#xff0c;硅材料的物理极限导致了功耗的大幅提升&#xff0c;难以进一步持续减小晶体管的特征尺寸。来源&#xff1a;文汇网通过引入层状半导体&#xff0c;并依据其特性设计新型…

Java 内存模型

1、并发模型编程的分类 在并发模型编程中&#xff0c;我们需要解决两个关键问题&#xff1a;线程之间如何通信以及线程之间如何同步。线程之间的通信包括两种&#xff1a;共享内存和消息传递。 Java并发采用的是共享内存模型。 2、Java内存模型的抽象 Java内存模型的主要目标是…

神经网络中Batch和Epoch之间的区别

来自蜂口知道公众号 随机梯度下降法是一种具有大量超参数的学习算法。通常会使初学者感到困惑的两个超参数: Batch大小和Epoch数量,它们都是整数值&#xff0c;看起来做的事情是一样的。在这篇文章中&#xff0c;您将发现随机梯度下降中Batch和Epoch之间的差异。 阅读这篇文章…

PyTorch框架学习一——PyTorch的安装(CPU版本)

PyTorch框架学习一——PyTorch的安装&#xff08;CPU版本&#xff09;PyTorch简介PyTorch的安装&#xff08;CPU版&#xff09;机器学习/深度学习领域的学习都是需要理论和实践相结合的&#xff0c;而它们的实践都需要借助于一个框架来实现&#xff0c;PyTorch在学术界目前处于…