矩阵的主成分是什么?主成分分析(PCA)又能做什么?

目录

一、前言

二、什么是主成分

三、为什么需要主成分

四、主成分的直观理解

五、主成分分析(PCA)的核心思想

第一步

第二步

六、主成分和特征值的关系

七、如何选择主成分

八、PCA为什么能降维

九、Python实现PCA

十、查看主成分

十一、查看解释方差比例

十二、PCA的应用场景

图像压缩

人脸识别

数据可视化

机器学习预处理

十三、PCA的优点

降低维度

提高训练速度

去除噪声

防止过拟合

十四、PCA的缺点

可解释性下降

信息损失

只适合线性关系

十五、总结


一、前言

当我们学习机器学习、数据分析或者人工智能时,经常会听到一个词:

复制代码
PCA

Principal Component Analysis

主成分分析

很多教程上来就是一堆公式:

复制代码
协方差矩阵

特征值

特征向量

降维

让人看得云里雾里。

实际上,PCA背后的思想非常简单:

在大量数据中,找到最重要的信息方向,保留这些方向,丢弃不重要的信息。

而这些最重要的方向:

复制代码
就是主成分(Principal Component)

二、什么是主成分

假设我们收集了一批学生的数据:

身高 体重
170 60
175 65
180 70
185 75

如果把这些数据画到坐标系中:

复制代码
      *
         *

            *

               *

会发现:

复制代码
数据并不是随机分布

而是沿着某个方向排列。

这个方向:

复制代码
最能反映数据变化趋势

这就是:

复制代码
第一主成分

简单理解:

复制代码
主成分

=

数据最主要的变化方向

三、为什么需要主成分

现实项目中经常遇到:

复制代码
100个特征

500个特征

1000个特征

例如:

用户画像:

复制代码
年龄

收入

学历

消费金额

浏览记录

点击次数

购买次数
...

特征越多:

复制代码
计算越慢

存储越大

容易过拟合

但很多特征其实高度相关。

例如:

复制代码
身高

腿长

通常同时增长。

那么:

复制代码
保存两个特征

意义不大

因此希望:

复制代码
压缩数据

减少维度

保留主要信息

这就是PCA存在的意义。


四、主成分的直观理解

假设数据如下:

复制代码
身高

体重

绘制后:

复制代码
      *
        *

          *

             *

                *

可以看到:

复制代码
数据主要沿对角线方向分布

因此:

复制代码
对角线方向

就是第一主成分

而垂直方向:

复制代码
变化很小

因此:

复制代码
信息较少

这部分通常会被舍弃。


五、主成分分析(PCA)的核心思想

PCA本质上做了两件事:

第一步

寻找:

复制代码
数据变化最大的方向

得到:

复制代码
第一主成分

第二步

寻找:

复制代码
与第一主成分垂直

且变化第二大的方向

得到:

复制代码
第二主成分

依次类推。


整体流程:


六、主成分和特征值的关系

上一篇文章讲过:

复制代码
A × v = λ × v

其中:

复制代码
v

特征向量

λ

特征值

在PCA中:

复制代码
特征向量

=

主成分方向

而:

复制代码
特征值

=

该方向的重要程度

例如:

复制代码
特征值:

100

20

5

1

说明:

复制代码
第一个方向最重要

因为:

复制代码
100 >> 20 >> 5 >> 1

七、如何选择主成分

假设得到:

复制代码
特征值:

100

20

5

1

总信息量:

复制代码
100 + 20 + 5 + 1

= 126

第一主成分贡献率:

复制代码
100 / 126

≈ 79%

前两个主成分:

复制代码
(100 + 20) / 126

≈ 95%

说明:

复制代码
前两个主成分

已经保留95%的信息

因此:

复制代码
后两个方向可以舍弃

八、PCA为什么能降维

假设原始数据:

复制代码
100个特征

经过PCA:

复制代码
保留前10个主成分

变成:

复制代码
10个特征

这样:

复制代码
维度降低90%

但:

复制代码
大部分信息仍然保留

因此:

复制代码
训练速度更快

存储更少

泛化能力更强

九、Python实现PCA

安装依赖:

复制代码
pip install scikit-learn

导入数据:

python 复制代码
from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data

print(X.shape)

输出:

复制代码
(150,4)

表示:

复制代码
150条数据

4个特征

进行PCA降维:

python 复制代码
from sklearn.decomposition import PCA

pca = PCA(
    n_components=2
)

X_new = pca.fit_transform(X)

print(X_new.shape)

输出:

复制代码
(150,2)

说明:

复制代码
4维

↓

2维

成功降维。


十、查看主成分

查看主成分方向:

python 复制代码
print(
    pca.components_
)

输出类似:

复制代码
[
 [0.36 0.08 0.85 0.35]
 [-0.65 -0.73 0.17 0.07]
]

每一行:

复制代码
代表一个主成分

十一、查看解释方差比例

查看信息保留率:

python 复制代码
print(
    pca.explained_variance_ratio_
)

输出:

复制代码
[0.92 0.05]

表示:

复制代码
第一主成分

保留92%信息

第二主成分

保留5%信息

总计:

复制代码
97%

说明:

复制代码
2个主成分

已经代表原始数据

十二、PCA的应用场景

图像压缩

原始图片:

复制代码
1920 × 1080

数据量巨大。

利用PCA:

复制代码
保留主要信息

压缩图片

人脸识别

经典算法:

复制代码
EigenFace

就是利用:

复制代码
PCA

提取主要特征。


数据可视化

例如:

复制代码
100维数据

无法直接观察。

通过PCA:

复制代码
100维

↓

2维

即可绘图展示。


机器学习预处理

训练模型前:

复制代码
删除冗余特征

减少噪声

降低维度

提升训练效率。


十三、PCA的优点

降低维度

复制代码
减少特征数量

提高训练速度

复制代码
减少计算量

去除噪声

复制代码
保留主要信息

舍弃次要信息

防止过拟合

复制代码
减少无关特征

十四、PCA的缺点

可解释性下降

降维后:

复制代码
主成分

不再对应具体业务字段

信息损失

降维过程中:

复制代码
部分信息被舍弃

只适合线性关系

复杂非线性问题:

复制代码
效果有限

十五、总结

主成分分析(PCA)是机器学习和数据分析中最重要的降维方法之一。

核心思想:

复制代码
寻找数据变化最大的方向

↓

保留这些方向

↓

舍弃不重要方向

↓

完成降维

其中:

复制代码
主成分

=

数据最重要的变化方向

而:

复制代码
特征值

=

该方向的重要程度

可以这样理解:

复制代码
原始数据

像一堆杂乱信息

PCA

帮助我们找到最重要的信息主干

因此,无论是机器学习、图像处理、推荐系统还是数据可视化,PCA都是必须掌握的经典算法之一。

相关推荐
daxiang_ipo几秒前
AI应用,正式步入质变跃迁期
人工智能·搜索引擎·百度
前沿在线几秒前
2026世界机器人大会主论坛大咖观点(一)
人工智能·ai·大模型
智搜广告2 分钟前
AI回答优化公司智搜广告让品牌成为推荐首选
大数据·人工智能·python·elasticsearch·geo
Three_ST2 分钟前
沐神-动手学习深度学习-习题 4.3. 多层感知机的简洁实现
人工智能·pytorch·python·深度学习·机器学习
必须会一定会3 分钟前
Agent Handoff M5 发布验收:`CHANGES.md`、`npm pack`、`release:check` 与干净环境安装验证
前端·人工智能·npm·node.js·ai编程
Allen_LVyingbo5 分钟前
面向电子病历的批量语义分析自动化工具:从设计到实战(上)
运维·人工智能·机器学习·语言模型·自然语言处理·自动化·健康医疗
明志数科5 分钟前
从实验室到工厂产线:具身智能训练数据的环境差异、分布偏移与工业级采集方案
人工智能·深度学习·计算机视觉
武子康8 分钟前
我让 Qwen3.6-27B 真改了一次 Git 仓库:工具调用怎样形成 Agent 闭环
人工智能·后端·agent
Interview Aid1128 分钟前
Akuna OA 题目拆解|三题思路复盘
linux·运维·算法·面试·职场和发展
嘻嘻的AI日记8 分钟前
告别会后整理负担|智能会议系统,实现会纪要自动生成
人工智能