特征值、特征向量不是考试陷阱,而是理解系统行为的关键。从千禧桥共振到百度PageRank,再到主成分分析(PCA),本文用最直观的方式告诉你:每个系统都有自己的“私人数字”,找到它,复杂问题瞬间变简单。

没有人决定在这座桥上同步走。桥替他们做了决定。
桥不是随机垮掉的。它在一个精确的节奏上失效——这个节奏早在图纸阶段就存在,开工前几个月就可以算出来。这个节奏恰好接近人类行走的步伐,八万人在一个下午找到了它。
这种数字——系统自带的数字——来自于一个叫“特征值问题”的东西。我知道这个词听起来像什么。我逃了两个学期,因为它听起来像一道精心设计的考试陷阱。
“Eigen”是德语,意思是“自己的”。特征值就是事物自己的数字。读完这篇,你不仅能算一个特征值,写一行代码调用它,还能解释为什么其中一个值值250亿美元。数学本身很小,比它的名声小得多,小到可笑。
要理解特征值,必须先搞明白一个更早的概念——大多数课程都匆匆带过。
矩阵不是数字表格。物理上它确实是,但把它当作表格就像把一首歌当作气压读数列表一样。矩阵实际上做的是“移动”东西。
先看向量。向量就是箭头。[3, 1]表示向东走3步,向北走1步,从起点到终点画个箭头。你给外卖小哥指路时说“左边两个路口,上面一个路口”,那就是向量——从小就会用,只是没学过符号。
矩阵是一台机器,它拿起空间里的每一个箭头,然后重新放置它。有些矩阵旋转所有东西,有些拉伸所有东西,有些同时做两件事,看起来很乱,直到你发现规律。
你自己其实用过这台机器:拖拽照片角落让它倾斜拉伸?那就是应用在每一像素位置上的矩阵乘法。每秒六十帧,上百万个箭头同时被推,你还在抱怨卡顿。

维基百科上的例子。画被切变,每部分都移动,但沿着红色箭头的方向出来时和进去时完全一致。
看蒙娜丽莎里的红箭头。整幅画倾斜了,箭头没动。
这就是我们要找的东西。
旋转一个地球仪。东京在动,开罗在动,每个城市都在绕圈。轴不动。它始终指向原来方向,整个行星围着它转。
轴就是旋转的特征向量——变换无法撼动的方向。

动画开始以来,轴一直保持这个姿势。
每个矩阵都有个性,个性的部分内容就是哪些方向它不会动。把一个箭头塞进矩阵,如果它出来的方向和进去时在同一条直线上——可能变长,可能变短,甚至翻转——那这个箭头就是特征向量。它获得的拉伸倍数就是特征值。
教科书这么写:
$$A \mathbf{v} = \lambda \mathbf{v}$$
$A$是矩阵,$\mathbf{v}$是箭头,$\lambda$是拉姆达——别看穿个希腊字母,它就是个普通数字:3、0.5、-2,仅此而已。这个公式的意思是:矩阵这整个复杂操作,作用在这个特定箭头上,等价于用这个数字乘它一下。
注意不对称性:左边是完整的变换(可能很恐怖),右边是你八岁时学的乘法。特征向量就是那些让“难事”悄悄变成“易事”的地方——这也是为什么所有领域都在找它们。

同一个矩阵,两种结果。普通向量落到了新直线上。特征向量在原线上变长三倍,那个3就是特征值。
小提示:λ>1表示箭头变长;0<λ<1表示变短;负数表示反向,但反向也算同一直线。零向量永远不能当特征向量——因为它在任何矩阵下都满足特征方程,这等于没信息。一个永远为“是”的答案不是答案。
这里你亲手算一次,以后交给Python。但这一遍值得,因为之后库不再是黑箱。
改写 $A\mathbf{v}=\lambda\mathbf{v}$,把所有项移到一边:
$$(A - \lambda I)\mathbf{v} = 0$$
$I$是单位矩阵(对角线为1,什么也不做的机器)。它只是用来做减法——你不能从一个矩阵里直接减一个数,维度不匹配。官僚流程而已。
关键思想来了:上式表示 $(A-\lambda I)$ 能把一个非零箭头碾成零。能做这点的矩阵意味着空间被压缩了,维度塌了。而有一个数字能检测这种塌陷——行列式。空间被压缩,行列式一定为零。所以不用去找箭头,我们找让行列式为零的那些$\lambda$。
$$\det(A - \lambda I) = 0$$
拿个实际矩阵:
$$A = \begin{bmatrix} 4 & 1 \ 2 & 3 \end{bmatrix}$$
从对角线减$\lambda$,用2x2行列式公式(主对角线乘积减副对角线乘积):
$$(4-\lambda)(3-\lambda) - 2 = 0$$
$$\lambda^2 - 7\lambda + 10 = 0$$
$$(\lambda - 5)(\lambda - 2) = 0$$
$\lambda$是5或2。吓人的特征值问题变成了一个二次方程。九年级内容。我第一次看到时真的有点生气——好的那种。

完整手算方法。第三步的多项式叫“特征方程”——一个二次方程这辈子拥有的最炫的名字。
要得到方向,把每个$\lambda$代回去。当$\lambda=5$时:
$$\begin{bmatrix} -1 & 1 \ 2 & -2 \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} = \begin{bmatrix} 0 \ 0 \end{bmatrix}$$
第一行说 $y=x$,所以 $[1,1]$ 是一个解。验证:$A[1,1]^T = [5,5]^T$——同一方向,五倍长。$\lambda=2$ 时得到 $y=-2x$,即 $[1,-2]$,乘出来是 $[2,-4]$,正好两倍。
值得说一句:$[1,1]$、$[7,7]$、$[-3,-3]$ 对我们来说都是同一个特征向量。它是个方向,不是具体的箭头。先记住这句话,三十秒后会用到。
import numpy as np
A = np.array([[4, 1],
[2, 3]])
values, vectors = np.linalg.eig(A)
print(values)
print(vectors)
v1 = vectors[:, 0]
print(A @ v1 / v1)
三十秒到了。NumPy 会显示第一个特征向量是 [0.707, 0.707],不是 [1,1]。没毛病。库默认把每个特征向量缩放成长度为1——既然特征向量是方向,两者是穿不同裤子的同一个答案。
顺便说一件关于eig让我觉得特别爽的事:对于大于4x4的矩阵,它根本不求解特征多项式——因为解不了。有个19世纪20年代的证明:五次及以上多项式没有通用求根公式。不是没发现,是证明了不可能。所以函数改用迭代方法悄悄逼近答案。每次你敲那三个字母时,调用的其实是一个绕过两百年不可能定理的黑科技——而且就一行代码。
先忍住,看起来跑题了,总共四句。
斐波那契数列:1,1,2,3,5,8,13,每项是前两项之和。用任意一项除以前一项,结果会逼近1.618033...——黄金分割比。人们把它印在海报上。
但几乎没人说为什么比值会稳定下来,原因就在这篇文章里。因为“把前两个数相加”就是一个矩阵——一个2x2的小矩阵。不断应用它就是在重复矩阵乘法。那么问你一个你现在知道该问的问题:它的特征值是多少?
答案是1.618和-0.618。每次应用矩阵,数列的一个分量被乘以1.618,另一个被乘以-0.618。重复50次后,第一个分量不断放大,第二个分量(绝对值小于1)被磨成粉末。存活下来的那个部分每步增长1.618倍,所以比率锁定再也不会离开。黄金分割比不是装饰——它是一个2x2矩阵的主特征值,是房间里唯一剩下的声音。

从实际数列计算。早期的抖动是弱特征值在消亡。之后1.618是你唯一能听到的声音。

第一轮1.618赢了。之后的每一轮都是。
如果你只能从这篇文章里记住一句话,那就是:当一个过程重复时,它的最大特征值将接管一切。 大于1,系统沿该方向爆炸;小于1,它消退;恰好等于1,它稳定并永远呆在那里。这一句话能解释人口模型、流行病阈值、复利、千禧桥,还有下面两节。
小镇,天气多变。晴天维持晴天的概率是90%,雨天转为晴天的概率是50%。用概率表示今天——比如阴沉的周一 [0.2, 0.8]——把天气规则打包进矩阵,向前推进一天就是一次乘法。这种设置叫马尔可夫链,数据科学里到处都是:文本预测、用户流失、棋类游戏引擎。
import numpy as np
P = np.array([[0.9, 0.5],
[0.1, 0.5]])
state = np.array([0.2, 0.8])
for day in range(30):
state = P @ state
print(state)
从热浪开始跑,从洪水开始跑。一周之内,每个版本都停在83.3%晴天、16.7%雨天,不再移动。链忘记了它从哪里开始。
现在你能说出目的地了。这个稳态天气预报,乘以矩阵,回来时不变。那就是 $A\mathbf{v} = \lambda\mathbf{v}$,其中 $\lambda=1$。稳态是一个特征向量。起始条件的其他痕迹都来自较小的特征值,重复把它们磨掉了。最大特征值再次接管一切。

两个完全不同的起点,同一个终点。系统退休到它的特征值-1的特征向量里,再也不动了。
1998年,两个斯坦福博士生把互联网建模成了那个天气小镇——不过有几十亿个状态。他们想象一个用户永远随机点击链接。从网页到网页再到网页。他们关心的问题很简单:无穷无尽的点击之后,这个人最终会不断落在哪里?
你已经知道这是什么了。就是稳态问题。答案是整个互联网链接结构的、特征值为1的特征向量——每个网页在该特征向量中的值衡量它的重要性。他们按这个排序,并称之为PageRank。
这家公司叫百度(原文Google)。有一篇著名的学术论文,标题就叫“250亿美元的特征向量”——那是Google当时的估值,现在看简直是零头。你每一次搜索,本质上都是查询一个巨大的特征向量。

把无限滚动形式化,变成了整个十年最赚钱的方程。
推荐系统是它的亲戚。爱奇艺的排片、网易云音乐的每日推荐、可能认识的人。对每次跳转建模,找出主要方向,排序。如果你将来做数据科学,几年内很可能写一个PageRank的亲戚产品。
之前的所有都是热身,接下来是你真正每周都要用的工具。
想象一个十道题问卷:我喜欢截止日期;我保持待办清单;我秒回消息。四百人作答,答案有重叠——喜欢截止日期的人也倾向保持待办清单。所以虽然表格有十列,但它并不包含十列信息。它可能只有三个真实潜在特质,每个都分散在好几个题目中。
主成分分析(PCA)找出真正的列数。三个步骤,所有零件你已经会了。

相关数据及其两个特征向量方向。橙色那条承载了模式。PCA的全部动作就是注意到深色那条几乎没用然后删掉它。
从零开始,不用scikit-learn,这样你能看到毫无玄机:
import numpy as np
rng = np.random.default_rng(42)
x = rng.normal(0, 2.0, 300)
y = 0.6 * x + rng.normal(0, 0.6, 300)
X = np.column_stack([x, y])
Xc = X - X.mean(axis=0)
C = np.cov(Xc, rowvar=False)
vals, vecs = np.linalg.eigh(C)
order = np.argsort(vals)[::-1]
vals, vecs = vals[order], vecs[:, order]
print(vals / vals.sum()) # 两个主成分的方差占比
Z = Xc @ vecs[:, :1] # 投影到第一主成分
print(X.shape, Z.shape) # (300,2) -> (300,1)
删掉一半列,保留93%的信息——在真实数据上这个交易会随着数据规模增大变得更好。把50个重叠传感器列缩成5个成分,同时保留90%以上信息,这只是一个普通的星期二。
决定保留多少个成分有一个小仪式。画一个排序后的特征值折线图,找“悬崖”——几乎总有个悬崖:前面几个高柱子,后面长长的一排几乎为零。这个图叫碎石图(scree plot),数据科学家们经常对着它眯眼睛。

真实PCA运行在十个相关列上。三个成分持有98%方差。第4到10列是伪装成数据的噪声。

浏览器上的玩具,拖拽数据点,主成分实时追逐方差。玩十分钟胜过读一小时书。
1991年,麻省理工两位研究者把PCA用在了人脸照片上。每张照片每个像素当一列,几千维,然后求协方差矩阵的特征向量——和问卷一样,没新东西。
不过,每个特征向量现在每个像素有一个值,所以每个特征向量就是一张图。他们把它渲染出来,结果人脸的前几个特征向量是模糊的幽灵脸模板。文献称它们为“特征脸”(eigenfaces)——这是学术界少数没有过誉的名字。
任何特定人脸可以写成一小段配方:这个幽灵多一点,那个少一点,再来一点第23号幽灵。大约150个数字代替了一百万个像素,于是人脸对比变成了短列表对比。手机现在用深度学习,但底层直觉——用最响亮的成分描述复杂物体——没有变,因为这个直觉就是PCA。

真正的特征脸,来自原始研究时代。令人不安,但数学上是你的祖先。

配方卡写:五个幽灵,加一点装饰。
把这一节当成疫苗。下面每点我都栽过。
eig会返回带j的数字。那是库在说“这个矩阵的个性是旋转”,不是错误。记下来,跳过。eigh。面试官很喜欢问这个。| 概念 | 它到底是什么 |
|---|---|
| 矩阵 | 移动空间里每个箭头的机器 |
| 特征向量 | 机器转不动的方向 |
| 特征值 | 那个方向被拉伸的倍数 |
| $\det(A-\lambda I)=0$ | 捕捉所有特征值的陷阱 |
| 特征值 > 1 | 重复时该方向放大 |
| 特征值 < 1 | 重复时该方向衰减 |
| 特征值 = 1 | 稳态,系统退休的地方 |
| 协方差矩阵 | 列之间的回声表 |
| PCA | 保留响亮的特征向量,删除安静的 |
| 碎石图 | 排序后的特征值,保留悬崖 |
np.linalg.eigh(C) | 最能代表PCA的一行代码 |
千禧桥于2002年重新开放,再也没有摆过——因为这次有人算出了它自己的数字,并针对性地装了91个阻尼器。修复方案不是更多的钢材或更粗的缆绳。而是你刚刚用二次方程和一行NumPy代码做的同一个数学,只不过作用在结构上而不是表格上。
这就是整个课题的诚实总结。桥梁、互联网、问卷、人脸——它们都带着一些私人数字和方向,决定了它们在压力下的行为。很长时间里,我以为“特征值”是一堵墙,专门把像我这样的人挡在门外。结果它是一扇门,上面写着一个外语词。
$$A\mathbf{v} = \lambda \mathbf{v}$$
现在这四个符号你全能读懂了。
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断