从0开始机器学习--Day27--主成分分析方法

主成分分析方法(Principal components analysis)

在降维算法中,比较普遍的是使用主成分分析方法(PCA)

PCA算法简单示例

如图,假设我们有一个二维的特征,想要将其降为一维,简单的方法是寻找一条直线,图中选择的是过原点斜率为正的直线,可以观察到,每个样本点到直线之间的距离都很小,这就是PCA算法实现的结果,每个样本点到直线或低维平面的距离叫做投影误差,而PCA的目的简单来说就是寻找到一个投影平面,使得所有样本点的投影误差最小。

往往在实行PCA算法之前,我们会进行均值归一化和特征规范化处理,使的特征的均值为0,并使得其数据在可比较的范围内,有利于对预测结果的判断。一般来说我们会用

来表示那条直线也就是向量,但对于一般的问题来说,往往都是将n维的数据降为K维,以把三维数据降为二维为例,降维后我们会得到两个向量,这两个向量会组成一个平面,降维前的数据点就会投影到这上面,所以我们会得到一组K维的向量组。

注意,PCA在将二维降成一维的时候,拟合的向量有时会跟线性回归拟合直线很像,但实际上这是两个不同的东西,直观来讲就是前者是计算点到直线的距离,做的是垂线,特征之间没有区别;后者是直接取相同的x值并对y值作差,y是我们的预测目标,接下来我们来看PCA的具体实现过程。

首先,我们对数据进行预处理。先判断是否要进行特征缩放(如一个特征是房子的尺寸,另一个是卧室数量,此时我们就需要进行特征缩放,将其减去方差并除以偏差),接着进行归一化处理。这里的均值归一化是指在计算出均值后,与其作差并替代原本的样本点,这样新的样本点的均值就变成了0。

接下来,我们通过将协方差矩阵带入到SVD函数中来求的这些向量以及误差投影,协方差矩阵公式为:,经过SVD函数的计算后,首先会输出由向量组成的,加入我们想降到K维,只需要取前K个向量即可,取得的向量重新组成 ,最终得到我们想要的降维矩阵

而在PCA算法中,我们通过以下这个式子来判断,分母是样本点到原点的距离,分子是样本点的平均投影误差平方:

PCA算法的K值判断

我们一般会设置这个式子的值小于等于1%,意为保留了百分之九十九的方差,而在PCA算法中,挑选K值的过程就是循环计算每个K值,看哪个符合。当然,这个式子是为了方便我们理解他的含义,事实上,我们在运行SVD函数时,还会输出一个矩阵S,类似的,我们将K值带入进去,计算,只需要满足这个式子也小于等于1%即可,所以有时我们为了方便也会表示为

视频参考:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.videopod.episodes&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=85

相关推荐
人邮异步社区10 小时前
如何有效地利用AI辅助编程,提高编程效率?
人工智能·深度学习·ai编程
许泽宇的技术分享11 小时前
当AI Agent遇上.NET:微软Agent Framework的架构奥秘与实战启示
人工智能·microsoft·.net
爱笑的眼睛1111 小时前
PyTorch Lightning:重新定义深度学习工程实践
java·人工智能·python·ai
做cv的小昊11 小时前
VLM经典论文阅读:【综述】An Introduction to Vision-Language Modeling
论文阅读·人工智能·计算机视觉·语言模型·自然语言处理·bert·transformer
开放知识图谱11 小时前
论文浅尝 | 利用条件语句激发和提升大语言模型的因果推理能力(CL2025)
人工智能·语言模型·自然语言处理
KG_LLM图谱增强大模型11 小时前
[经典之作]大语言模型与知识图谱的融合:通往智能未来的路线图
人工智能·大模型·知识图谱·graphrag·本体论·图谱增强大模型
YJlio11 小时前
「C++ 40 周年」:从“野蛮生长的指针地狱”到 AI 时代的系统底座
c++·人工智能·oracle
机器之心11 小时前
小米开源首个跨域具身基座模型MiMo-Embodied,29个榜单SOTA
人工智能·openai
六行神算API-天璇11 小时前
架构实战:打造基于大模型的“混合搜索”系统,兼顾关键词与语义
人工智能·架构
龙卷风040511 小时前
深入理解Spring AI Alibaba多Agent系统:图结构驱动的智能协作
人工智能·后端