【机器学习算法】4、降维算法之PCA(深入理解与实践)(一)

简介: 【机器学习算法】4、降维算法之PCA(深入理解与实践)(一)

简介


   一般情况下,向量的各个分量之间可能存在一定的相关性。直接将向量送入机器学习算法中处理效率会很低,也会影响算法的精度。为了可视化显示数据,人们需要把向量变换到低维空间后再送入算法中进行处理。


   目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据,之所以使用降维后的数据表示是因为在原始的高维数据空间中,包含冗余信息以及噪声信息,在实际应用例如图像识别中的误差,降低了精度;而通过降维处理,可以减少冗余信息造成的误差,提高模型的精度。又或者希望通过降维算法来寻找数据内部的本质结构特征。


   在很多算法中,降维算法只是数据预处理的一部分,接下来讨论的主要是对于PCA降维算法的理论分析。


PCA算法的流程



维度灾难的几何解释


   如图所示的超几何图像,数据处于D维空间中,r=1

5a259dced0d7210fd32730e323b52e9f.png

   通过上式可以看出,当空间维度D趋近于无穷大时,空间内的超球体的体积趋近于0,也就是说样本基本上都落于绿色的区域内,同理看右侧图:

ea897ecd277bd7cffe93bebeb37b925f.png

   同样可以看出,当数据维度D趋近于无穷大的时候,数据也落在绿色的区域内,也就是说深蓝色区域中基本上是空的,也就是说,当数据维度为很高的D维是,中间很多一部分是空的,导致数据维度很高,但是数据是稀疏的,也就造成了维度灾难。


PCA算法具体步骤的推导


1、数据中心化的解释

   假设数据为如下定义的形式:

f569af15c22747fdb610be4d47b94d8d.png

   样本均值(Sample Mean)和样本方差(Sample Co-variance):

61214b558c10b35bace82f53b1c45c7e.png

对于样本方差,继续进行推导可以得到:

e762e100d8249eb7dc3ab4c1b3e007b4.png

等式的右边的前半部分

4d12610fb513debd7067d424b88abaf4.png

同理,等式右边的后半部分

febe68bd34b7326818d390fe10d66e3c.png

于是可以的到样本协方差为:

4756c13f791b7ae07577dcec53ac8dd4.png

其中

c4109d2ae05319ddb7ba506dde1ee4a8.png


2、最大投影方差的解释

已知Sample Mean和Sample Co-variance分别为:

1ab07ea74317a55013f3fdb26bdad8de.png

da58560e768ac1a62b36797c358b5a9f.png

   所谓的投影方差最大化,意思就是样本在低维空间尽可能地分离,从图2可以看出来,样本在基向量u1上投影得到的结果对于分类而言更容易分出结果,而在u2上的话很容易造成数据在低维空间的重合而形成本来没有的线性关系,造成有用的信息被清除,进而影响结果。

166bbd44355c98e224795bd3d26661dc.png

   通过图3可以得到单个样本投影的方差为:

b8b8f93ef4da5ac9e15ee1c8732b799e.png

不妨设

5bd0af418b8b9bb3cc870328833a0fa2.png

   可以看出投影方差最大化其实就是一个带约束的最优化问题,假设拉格朗日函数为:

9701c9565739e5f71385ad38f6c16b6a.png

对拉格朗日函数关于u1求导可以得到如下的等式:

53f1f226169ba25988ba49f6e43f5051.png

   于是便找到了最大投影向量和特征值的对应关系,至此推导完毕。


3、最小重构距离的解释

   所谓的重构距离就是降维后的数据重新映射到原来的维度后与原始的数据点尽可能地接近,让损失地信息尽可能小。

45d5eb173b360aff4dcf6e1527d3d527.jpg

已知基向量u和中心化后地数据,于是重构向量可以得到;

c4611ddf1c5bde3a333c8cbc95b26a73.png

所以可以得到重构距离为:

3d06c667f73c185344fb5517e75be08c.png

   可以看出和最大投影方差一样依然是一个带约束的优化问题,通过构造拉格朗日函数和求得可以得到:

17d4e5736a9e4d26ecc0cd4635ed7cfc.png

于是找到对重构距离影响最小的(P-q)个维度。得证。


4、维度取舍问题的解释

   依据就是方差,方差越大的特征,特征中的数据分布的离散程度就越大,特征所包含的信息量也就越大;反之,如果特征中的数据方差比较小,数据特征中包含的数据信息了也比较小;而我们设计模型时就是要求在数据维度一定的同时特征中包含的信息越多越好,而特征值越大所包含的数据分布信息越多,所以保留特征值大的队列。

相关文章
|
1月前
|
机器学习/深度学习 算法 数据挖掘
讲解机器学习中的 K-均值聚类算法及其优缺点。
讲解机器学习中的 K-均值聚类算法及其优缺点。
|
1月前
|
机器学习/深度学习 分布式计算 算法
Spark中的机器学习库MLlib是什么?请解释其作用和常用算法。
Spark中的机器学习库MLlib是什么?请解释其作用和常用算法。
16 0
|
26天前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
23 0
|
23天前
|
机器学习/深度学习 算法 数据可视化
Python | 机器学习之PCA降维
Python | 机器学习之PCA降维
20 0
|
3天前
|
机器学习/深度学习 人工智能 算法
利用Python实现简单的机器学习算法——线性回归
本文介绍了如何使用Python语言和相关库,通过实现线性回归算法来进行简单的机器学习模型训练和预测。通过详细的代码示例和解释,帮助读者了解机器学习中的基础概念和实践操作。
|
10天前
|
缓存 Rust 算法
Rust中的数据结构与算法优化实践
在Rust编程语言中,优化数据结构与算法是提高程序性能的关键。本文首先介绍了Rust的特点,然后重点讨论了如何在Rust中优化数据结构和算法,包括使用标准库中的高效数据结构、自定义数据结构的优化技巧、算法选择与改进、以及Rust特性如所有权和借用检查器的应用。通过实际案例,我们将展示如何在Rust中实现更高效的数据结构与算法。
|
19天前
|
机器学习/深度学习 数据挖掘 程序员
深入理解Python协程:提升并发编程效率基于Python的机器学习入门:从理论到实践
本文旨在探讨Python协程(Coroutine)的内部机制及其在并发编程中的应用。区别于传统的线程和进程,协程提供了一种更轻量级、高效的并发编程模式。通过深入分析协程的工作原理,本文将展示如何利用协程优化程序性能,实现高效的异步任务处理。我们将通过实例探讨协程的创建、事件循环的管理、以及与异步IO的集成,为读者提供一套完整的协程应用方案。此外,本文还将对比协程与其他并发模型(如多线程和多进程)的优劣,帮助读者全面理解协程在现代编程中的重要性。 在本文中,我们将深入探讨机器学习的核心概念,并通过Python实现其基础应用。不同于传统的技术文章摘要,我们希望通过一个故事性的引入,让读者感受到
|
22天前
|
机器学习/深度学习 人工智能 算法
【深度学习】因果推断与机器学习的高级实践 | 数学建模
【深度学习】因果推断与机器学习的高级实践 | 数学建模
|
23天前
|
机器学习/深度学习 算法 数据挖掘
Python | 机器学习之聚类算法
Python | 机器学习之聚类算法
45 0
|
26天前
|
机器学习/深度学习 供应链 算法
智能供应链中的预测算法:理论与实践
智能供应链中的预测算法:理论与实践
24 1

相关产品