机器学习:一文从入门到读懂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月前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
37 2
|
2月前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
86 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
33 1
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
24 1
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
62 2
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
机器学习中空间和时间自相关的分析:从理论基础到实践应用
空间和时间自相关是数据分析中的重要概念,揭示了现象在空间和时间维度上的相互依赖关系。本文探讨了这些概念的理论基础,并通过野火风险预测的实际案例,展示了如何利用随机森林模型捕捉时空依赖性,提高预测准确性。
88 0
机器学习中空间和时间自相关的分析:从理论基础到实践应用
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
30 4
|
2月前
|
机器学习/深度学习 数据挖掘
二、机器学习之回归模型分析
二、机器学习之回归模型分析
129 0
|
24天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
67 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型