机器学习:一文从入门到读懂PCA(主成分分析)

简介: 机器学习:一文从入门到读懂PCA(主成分分析)

机器学习:一文从入门到读懂PCA(主成分分析)

前置知识

维度灾难

内积的几何意义

向量与基向量的内积,就是向量在基向量方向上的投影坐标。

点乘(Dot Product)的结果是点积,又称数量积或标量积(Scalar Product)。在空间中有两个向量:
在这里插入图片描述
从代数角度看,点积是对两个向量对应位置上的值相乘再相加的操作,其结果即为点积。
在这里插入图片描述
从几何角度看,点积是两个向量的长度与它们夹角余弦的积。

在这里插入图片描述

假设有一个列向量A:=[3,2],如下图:

在这里插入图片描述

我们假设图中每个蓝色方格的单位为1,那么即使图中没有标注黄色向量是谁,我们也可以脱口而出他就是[3,2]。那么为什么我们可以直接看出他是谁呢?
答案也很简单,因为我们根据有一个参考依据,那就是坐标系(笛卡尔坐标系)。然而,这个二维坐标系他其实是由两个基向量:i ,j所组成的空间,其中:
image.png

在这里插入图片描述

基变换

假设有两个人,小泽,小乐,他们看待问题的‘角度’不认同,也、也就是基不同,其中小泽的基向量为:

在这里插入图片描述
而小乐的基向量为为:b1 ,b2,b1b2这两个向量在小乐看来数值就是

在这里插入图片描述

然而在小泽看来b1,b2数值为:
在这里插入图片描述

上面的向量A,在小泽的角度来看,就是[3,2],然而在小乐的角度看就变成了:[5/3,1/3]。

在这里插入图片描述

它们之所以认为这个向量是不同的,因为它们看待问题的角度不同,‘横看成岭侧成峰,远近高低各不同’,也就是基向量不同。

不同基下的向量变换

假设小泽角度下的向量B:
在这里插入图片描述

现在我们知道小泽与小乐的基向量,还知道了向量B在小泽中的数值表示,那么我们如果把小泽角度看的向量B,用小乐的角度表示,计算公式应该为:
在这里插入图片描述
于是,我们就把小泽角度下的向量B,转换成了小乐角度的向量。

逆矩阵

请添加图片描述
A的逆矩阵代表的含义就是A变换的逆过程。
求解 Ax =b的几何意义,就是找到一个向量x使得在A的变换下,x被映射为b。如果A为满秩矩阵,则有唯一解 $x=A^{-1}b$ ,也就是对b施加逆变换即可找到x。

在上面我们说在小泽的眼中,小乐的基向量b1,b2就是:
在这里插入图片描述
那么在小乐的眼中(以b1,b2为基向量),小泽的基向量i,j 如何表示呢?
这时候就用到了逆矩阵,把小泽的视角下的小乐的基向量的表示切换到小乐的视角小泽基向量的表示,需要用到上图矩阵做变换,那么我们反过来,就得到:
在这里插入图片描述

不同基下的空间变换

在上面我们已经介绍了什么是不同基下如何转换向量,下面我们介绍我们在不同基下的空间变换。
在小泽的视角中,我们如果想把坐标系逆时针旋转90度,如下图:
在这里插入图片描述
这个变换在小泽的视角下用矩阵A表示则是:
在这里插入图片描述
那么我们想做的就是知道:在小乐的视角下这个变换矩阵怎么表示呢?
现在我们已经有的是:二者的基向量,小泽的旋转矩阵。
我们的流程是:

  1. 在小乐的视角下找到一组向量
  2. 把这组向量用小泽的视角表示
  3. 然后把这向量通过旋转矩阵得到旋转后的向量
  4. 把旋转后的向量通过逆矩阵返回到小乐的视角

其中P为小乐视角下小泽基向量的表示,A为旋转矩阵,P的逆矩阵是小泽视角下小乐基向量的表示。
在这里插入图片描述
其中M就是我们要的小乐视角下的旋转矩阵,这就表示了不同基向量下的相同变换的相互转化。
在这里插入图片描述

方差

方差多用于一维随机变量离散程度的表示,公式如下:
在这里插入图片描述

协方差

协方差是方差对两个以上随机变量的推广,它表示多个随机变量的联合变动程度,也叫相关性(正相关、负相关),当正相关协方差>0,负相关协方差<0,反之协方差=0。

  1. 样例:

  1. 公式:

假设有两个随机变量a, b

在这里插入图片描述

m-1为无偏估计,这个大家不必在意,当数据量足够大的时候,差距微乎其微

协方差矩阵

假设有两个随机变量 a,b,观测数据矩阵用X表示。
在这里插入图片描述
根据协方差表达式可知协方差矩阵的表达式(假设数据已经中心化):

在这里插入图片描述
其中对角线上为每个随机变量的方差,其他为不同随机变量之间的协方差。

协方差矩阵对角化

通过观察协方差矩阵,我们发现协方差矩阵为实对称矩阵,所以可以对角化。

观测数据用X表示,它的协方差用C表示,旋转矩阵用P表示,旋转后的结果用Y表示,Y的协方差用D表示。

现在我们要通过P旋转矩阵X,那么旋转后的结果为:
在这里插入图片描述
根据上面的公式,Y的协方差D为:
在这里插入图片描述

特征值分解、空间变换

主成分分析(PCA)

前面介绍了那么多的基础知识,下面我们来说一下PCA到底是在做一件什么事呢?
假设有一组二维数据:
在这里插入图片描述
我们如果想找到其中一个点,就要用两个值表示,现在想对上面的数据降维,就拿一个数值来表示上面的点。

从基变换中我们了解到,同一个向量在不同的基坐标系下可以有不同的表示,但是他们本质是不变的,就如同‘你好这个词’,在中文下翻译为‘你好’,在英文下就是‘Hello’,但是他们本质的意思不变。

所以PCA在做的事情就是,找到一组新的的基坐标系,在这个坐标系里我们可以知道那个维度重要,这样我们就可以省略掉那些不重要的维度从而达到降维的目的。

也可以说是:将一组线性相关的变量,通过正交变换,变成线性无关,也就是原始特征空间的重构。
在这里插入图片描述
在实际的数据中,往往不像上面的图展示的那样,数据可以完美的在一个坐标轴中,实际的数据如下:
在这里插入图片描述
数据往往不会都呆在同一条直线上,我们如果找到了上面所描述的坐标系,然后在新的坐标系表示每一个点可能是这样:
在这里插入图片描述
我们发现其中一个维度比重很小,忽略他的时候,对数据完整性的损失是最小的。

两个原则

那么怎么才可以找到上面所说的坐标系呢?我们遵循这两个原则:

  1. 最大投影方差
  2. 最小重构距离

也就是说两个随机变量之间协方差尽可能的小,单个随机变量的方差尽可能的大,这样我们降维后的数据完整性损失最小。

公式推导

定义符号:观测数据用X表示,它的协方差用C表示,旋转矩阵用P表示,旋转后的结果用Y表示,Y的协方差用D表示。

我们从上面得知,旋转后的协方差表示为:
在这里插入图片描述
这里P是未知的,我们就是要找到一个P:

  1. 让D的对角线上的元素又大到小递减(每个随机变量的方差)。
  2. 其余元素尽可能的小(也就是协方差),也就是让D尽可能的为对角矩阵。

💡那么我们现在就找到了我们的优化目标!
设我们要到的新的基:w

首先计算数据xi在基w下的投影:
在这里插入图片描述

👆这里利用上面的内积的几何意义

之后,计算新的数据的方差:
在这里插入图片描述
其中结果里括号的内容就是原始数据的方差(均值为0),把它用替换
设基向量的模为1,根据拉格朗日乘子法联立方程:

在这里插入图片描述
在这里插入图片描述
于是我们发现数据方差最大的基就是原始数据斜方差矩阵的特征值。

求解流程

在这里插入图片描述

代码实现

import numpy as np
from sklearn.decomposition import PCA

# 输入待降维数据 (5 * 6) 矩阵,6个维度,5个样本值
A = np.array([[84,65,61,72,79,81],[64,77,77,76,55,70],[65,67,63,49,57,67],[74,80,69,75,63,74],[84,74,70,80,74,82]])
# 直接使用PCA进行降维
pca = PCA(n_components=2) #降到 2 维
pca.fit(A)
PCA(n_components=2)
print(pca.transform(A)) # 降维后的结果
print(pca.explained_variance_ratio_ )# 降维后的各主成分的方差值占总方差值的比例,即方差贡献率
print(pca.explained_variance_) # 降维后的各主成分的方差值

PCA的优缺点

优点

  1. 仅仅需要以方差衡量信息的完整性,不受其他因素影响。
  2. 各主成分之间正交,互不影响。
  3. 计算简单。

缺点

  1. 主成分每一个维度可解释性较弱,不如原始数据可解释性强。

    1. 方差小的非主成分也可能含有对样本差异的重要信息,因此降维丢弃可能对后续数据处理有影响。
    2. 降维损失数据完整性。
    3. PCA 保留了主要信息,但这个主要信息只是针对训练集的,而且这个主要信息未必是重要信息。有可能舍弃了一些看似无用的信息,但是这些看似无用的信息恰好是重要信息,只是在训练集上没有很大的表现,所以 PCA 也可能加剧了过拟合;
目录
相关文章
|
2天前
|
机器学习/深度学习 数据可视化 计算机视觉
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
【视频】机器学习交叉验证CV原理及R语言主成分PCA回归分析犯罪率|数据共享
|
2天前
|
机器学习/深度学习 算法 数据可视化
Machine Learning机器学习之高维数据降维(主成分分析PCA、线性判别分析、自编码器超级无敌详细讲解)
Machine Learning机器学习之高维数据降维(主成分分析PCA、线性判别分析、自编码器超级无敌详细讲解)
|
2天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
60 1
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
86 1
|
18小时前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】K-means算法与PCA算法之间有什么联系?
【5月更文挑战第15天】【机器学习】K-means算法与PCA算法之间有什么联系?
|
2天前
|
机器学习/深度学习 算法 图计算
图机器学习入门:基本概念介绍
图机器学习是机器学习的分支,专注于处理图形结构数据,其中节点代表实体,边表示实体间关系。本文介绍了图的基本概念,如无向图与有向图,以及图的性质,如节点度、邻接矩阵。此外,还讨论了加权图、自循环、多重图、双部图、异构图、平面图和循环图。图在描述数据关系和特征方面具有灵活性,为机器学习算法提供了丰富的结构信息。
7 0
|
2天前
|
机器学习/深度学习
机器学习基础入门(二)(线性回归与成本函数)
已知一系列房子的大小以及其对应的价格的数据,要求是已知房子大小预测其房子的价格
|
2天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
2天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。

热门文章

最新文章