SICI · 蕴灵宗 · 第四章

术法初成

经典机器学习算法 · 炼气四层

你以为算法越多、特征越多就越强。可高维空间中所有点都变成近邻又都变成远点,距离失效,密度消失——没有免费午餐定理告诉你:不存在万能算法,只有合适的问题与合适的归纳偏置。

维度之咒低语:「二十术法,无一万能。你指给我看,哪个最强?账,我记着。」
序章

维度之门

二十术法,哪个才是万能的?

门楣上"术法"二字被虚空的寒气咬掉了一半。门内是碑林,二十座石碑各浮着一道算法铭文,金光明灭不定。石阶上飘着五面光屏,每一面都在吞吐数据,用的算法全然不同。门楣底座刻着一行小字:"二十术法,无一万能。选错算法,比没有算法更糟。"

维度之门,二十座算法碑林金光明灭
高斯老祖 高斯老祖

「这是经典机器学习的二十种术法。你先回答一个问题:这五面屏里,哪一面用的是'最强算法'?」

维度之咒 维度之咒

「打个赌吧。五面屏里总有一面用的是'最强算法'——你指给我看。猜错一笔,我记一笔。账记满了,到 S9 一起算。」

算法碑林下注器 · 没有万能算法

反直觉下注(五选一)→ 逐一点亮看算法与任务匹配 → 算法谱系全景

维度之咒逼你下注:五面剪影屏,哪面用的是"最强算法"?逐个点击。
详解 · K04-18 算法选择指南

没有免费午餐(NFL)定理:对所有可能问题平均,任意两个算法的期望性能相同——不存在普适最优。实践指南:先分析数据规模、特征类型、线性可分性与噪声水平,再选归纳偏置匹配的算法(小样本高维选线性/朴素贝叶斯,非线性表格数据选 GBDT 系,大规模选可并行模型),最后用交叉验证而非直觉做裁决。

第一幕 · 自信建立

线性术法坛 · 最小二乘的基石

线性回归矩阵推导 / 维度之咒第一触手 / 岭回归与 Lasso

金纹石径尽头是一座悬空石坛,坛上摆着一组数据点——散在平面上,像一把撒开的星子。

高斯老祖 高斯老祖

「给你一组数据,找出一条直线让它离所有点最近。用矩阵推导。然后拖动维度滑块,看看特征数超过样本数时会发生什么。」

维度之咒 维度之咒

「加特征。把一维变成十维、百维。维度越高,拟合越好——这不是明摆着吗?」

最小二乘推导器 · 维度推演 + 正则化救赎

拖公式块完成五步推导 → 拖维度滑块触发 XᵀX 奇异 → 岭/Lasso λ 调节看权重

拟合直线 · 维度推演

特征维度 p p=1, n=10
λ 正则强度 λ=10
详解 · K04-01 线性回归与最小二乘

最小二乘的解析解 β̂=(XᵀX)⁻¹Xᵀy 本质是把 y 投影到特征列空间:残差与列空间正交。在高斯噪声假设下,最小二乘等价于最大似然。前提苛刻:XᵀX 必须可逆——要求样本数 n>p 且特征无严格共线;一旦 p≥n,矩阵奇异,解不存在或不唯一。

详解 · K04-02 岭回归与 Lasso

岭回归加 L2 惩罚 λ‖β‖²,解 β̂=(XᵀX+λI)⁻¹Xᵀy 恒存在——λI 把奇异矩阵"垫"成可逆,系数整体收缩趋稳。Lasso 加 L1 惩罚 λ‖β‖₁,菱形约束的尖角把不重要系数压到恰好 0,自带特征选择。λ 由交叉验证选出:偏差-方差权衡的旋钮。

第一幕 · 自信膨胀

判别殿 · 分类之刃

逻辑回归 sigmoid / 交叉熵梯度 / 线性判别分析 LDA

殿中悬着两面碑:左面刻"逻辑回归",右面刻"LDA"。回归预测连续值,分类预测离散标签。

高斯老祖 高斯老祖

「逻辑回归用 sigmoid 把线性输出压进 (0,1) 概率;LDA 找一条投影方向,让类间散布最大、类内散布最小。推给我看。」

维度之咒 维度之咒

「分类嘛,特征越多分得越清。你把维度拉满,两类自然分得开。」

分类之刃 · sigmoid 推导 + 交叉熵 + LDA 投影

拖公式块推 sigmoid → 从最大似然推交叉熵梯度 → 拖 LDA 投影方向最大化 J(w)

sigmoid 曲线 · σ(z)=1/(1+e⁻ᶻ)

交叉熵 · 从最大似然来

LDA 投影 · 拖方向 w 最大化 J(w)=wᵀS_Bw/(wᵀS_Ww)

J(w) = 0.00 类间 S_B = 0 类内 S_W = 0
详解 · K04-03 逻辑回归

名字带"回归"实为分类:sigmoid σ(z)=1/(1+e⁻ᶻ) 把线性输出压成概率,对数几率 log(p/(1−p))=wᵀx+b 保持线性。损失用交叉熵(负对数似然),梯度 ∂L/∂w=Xᵀ(ŷ−y) 恰为预测误差——形式极简、可解释性强,工程上永远是第一个该跑的基线。

详解 · K04-04 LDA 线性判别分析

Fisher 判别准则:找投影方向 w 使类间散布 S_B 尽量大、类内散布 S_W 尽量小,最大化 J(w)=wᵀS_Bw/(wᵀS_Ww)。最优解是 S_W⁻¹S_B 的主特征向量。LDA 一身二任:既是线性分类器,也是监督降维——C 类问题最多降到 C−1 维。

第一幕 · 第一崩塌

间隔裂谷 · 核技巧的深渊

SVM 最大间隔 / 对偶与 KKT / 核技巧升维 → 间隔消融

裂谷中央悬着一组线性不可分的数据——两类点纠缠在一起,没有任何直线能分开。

高斯老祖 高斯老祖

「SVM 不找直线——找最大间隔。可这组数据线性不可分。怎么办?推完对偶,用核技巧试试。」

维度之咒 维度之咒

「升维。用核技巧把它映到一百维、一千维、无限维。维度越高,越高维空间里总能找到超平面分开它们。这是你的万能钥匙。」

SVM 推导器 · 核维度滑块 + 间隔消融监控

拖公式块完成 SVM 五步推导 → 拖核维度滑块 2→1000 → 亲见间隔消融、距离趋同

SVM 间隔 · 核技巧升维可视化

核函数 核维度 d=2
间隔宽度
2.00
支持向量数
3
距离比 max/min
1.20
详解 · K04-05 支持向量机 SVM

最大间隔分类器:决策边界只由少数支持向量决定,间隔宽度 2/‖w‖,最大化间隔等价于最小化 ‖w‖²/2(凸二次规划,有全局最优)。软间隔引入松弛变量 ξᵢ 与惩罚系数 C:C 大则苛求训练集不犯错(易过拟合),C 小则宽间隔多容忍。泛化能力来自"间隔"而非"特征多"。

详解 · K04-06 核方法

核技巧:用 K(x,z)=φ(x)ᵀφ(z) 直接算高维内积,无需显式构造映射 φ——多项式核、RBF 高斯核(对应无穷维)皆由此来。但核不是维度之咒的免死金牌:映到高维后距离同样趋同,支持向量占比飙升、间隔消融,RBF 的 γ 参数还会把边界雕成训练点的孤岛。

第二幕 · 挣扎

决策树之林 · 信息之斧

信息熵 / 信息增益·增益率·基尼 / 预剪枝与后剪枝

间隔裂谷之后是一片石林——每棵石树都是一个决策节点,枝干上刻着"如果特征 x>阈值,走左;否则走右"。

高斯老祖 高斯老祖

「决策树不量距离——它量信息。每次分裂,选信息增益最大的特征。可怎么量化'信息'?算给我看。」

维度之咒 维度之咒

「那你就多加特征。树总能找到一个分裂点把任何数据分开。」

信息之斧 · 熵计算 + 三指标对比 + 剪枝双曲线

拖动算信息熵 → 三指标对比选分裂特征 → 预/后剪枝看训练测试双曲线

信息熵 Ent(D)=−Σ pₖ log₂ pₖ

类别比例 Ent=1.00

三种分裂指标对比 · 点击选择最佳

剪枝实验 · 训练/测试准确率双曲线

详解 · K04-07 决策树

递归二分特征空间,每步选"不确定性下降最多"的特征:ID3 用信息增益 IG=Ent(D)−Σ(|Dᵛ|/|D|)Ent(Dᵛ)(偏好多值特征),C4.5 用增益率除以固有值纠偏,CART 用基尼指数 Gini=1−Σpₖ² 避开对数运算。不依赖距离度量,天然兼容数值与类别特征——这是它躲过维度之咒第一击的原因。

详解 · K04-08 剪枝

不剪枝的树能把训练集分裂到每叶一样本、纯度 100%——记住的是噪声。预剪枝:设最大深度、最小叶样本数、最小增益阈值,提前止血(快但可能欠拟合)。后剪枝:先任其长满,再自底向上回剪——CART 的代价复杂度剪枝 C(T)=Err(T)+α|叶|,用验证集选 α。后剪枝效果通常更好,代价是训练更贵。

第二幕 · 挣扎 · 核心

集成熔炉 · 众智成城

Bagging / 随机森林 / GBDT·XGBoost·LightGBM

熔炉里悬着三道碑文:Bagging、Boosting、Stacking。一棵树过拟合,那就种一百棵。

高斯老祖 高斯老祖

「Bagging 有放回采样并行训练,投票表决——降低方差。Boosting 串行训练,每棵树修正上一棵的错误——降低偏差。亲手搭给我看。」

维度之咒 维度之咒

「一百棵树。你觉得数量能解决质量问题?那你就加特征,加到一百维、一千维。看你的森林在高维里还能不能找到路。」

集成熔炉 · Bagging采样 + 随机森林 + GBDT残差

Bagging采样可视化 → 随机森林特征数滑块看OOB → GBDT残差逐轮下降

Bagging · 有放回采样并行训练

随机森林特征数 √p=4
OOB 估计:单棵树 72% → 100 棵投票 85%。全特征时树间相关性高,√p 时方差进一步下降。

Boosting · 串行拟合残差

详解 · K04-09 集成学习

三条路线:Bagging 自助采样并行训练再投票/平均,主要降方差;Boosting 串行训练、每轮盯住前轮的错分样本或残差,主要降偏差;Stacking 用元学习器学"如何融合"各基模型输出。集成有效的前提:基学习器够多样且各自优于随机猜测——否则众愚成灾。

详解 · K04-10 随机森林

Bagging 的进化版:除样本自助采样外,每次分裂只在随机特征子集(通常 √p 个)中选最优,进一步降低树间相关性。袋外(OOB)样本天然构成免验证集的泛化误差估计;特征重要性可由分裂增益或置换检验得出。抗过拟合、几乎免调参,是表格数据的常青树。

详解 · K04-11 GBDT · XGBoost · LightGBM

GBDT:每棵新树拟合损失函数的负梯度(平方损失下即残差),串行降偏差。XGBoost:目标函数加二阶泰勒项与正则项(叶数+叶权重),支持列采样与稀疏感知,精度与稳健性双升。LightGBM:直方图分桶+GOSS 梯度采样+EFB 特征互斥捆绑,训练提速一个量级。三者至今统治结构化数据竞赛。

第二幕 · 第二崩塌

近邻迷阵 · 距离之死

KNN 距离度量 / 维度之咒第二击 / 聚类同步崩塌

迷阵中央浮着一组数据——你一眼就能看出哪些点挨得近、哪些远。

高斯老祖 高斯老祖

「KNN 不训练——它记住所有训练点,来一个新点就算距离、找最近的 K 个邻居投票。简单,但有效。」

维度之咒 维度之咒

「有效?在低维确实有效。来,你把维度拉满——看看你的'最近邻'在高维里还剩多少意义。」

距离之死 · KNN + 维度滑块 + 距离比仪表 + 聚类崩塌

拖新点做KNN分类 → 拖维度滑块2→500 → 看距离比→1.0、准确率崩至瞎猜

KNN 决策边界 · 点击放置新点

数据维度 d d=2
最近邻距离
0.30
最远邻距离
5.20
比值 min/max
0.058

准确率曲线 · 维度↑准确率↓

聚类同步崩塌 · K-Means / 层次 / DBSCAN

详解 · K04-12 KNN 与距离之死

KNN 是惰性学习:训练只存数据,预测时才算 k 个最近邻投票/平均。全部前提是"近者相似"。可高维空间中 max/min 距离比→1:最近邻与最远邻几乎等距,"最近"失去判别力,准确率退化为类别先验(三分类即 33% 瞎猜)。k 值、距离度量、特征归一化都是低维时代的老兵,高维里全部失效。

详解 · K04-14 聚类

K-Means 迭代最小化簇内平方和,依赖欧氏距离与球形等方差假设,k 需手选、对初始质心敏感;DBSCAN 基于密度连通,能发现任意形状簇并标记噪声,但邻域半径 ε 与 MinPts 难调。高维中距离趋同、密度处处相等——聚类与 KNN 同死于维度之咒,先降维再聚类才是正解。

第三幕 · 顿悟

概率先知祠 · 贝叶斯的回响

朴素贝叶斯 / GMM / EM 算法五步推导

先知祠里悬着一面旧碑,上刻贝叶斯公式——P(y|x)∝P(y)·P(x|y)。金色微光,像沉睡已久。

高斯老祖 高斯老祖

「距离死了,但概率没死。朴素贝叶斯不量距离——它量'在已知特征的前提下,属于哪类的概率最大'。GMM 用 EM 算法推断隐变量。推给我看。」

维度之咒 维度之咒

「概率也有假设。你的条件独立假设在高维里真的成立吗?」

贝叶斯的回响 · 朴素贝叶斯推导 + GMM + EM 五步

拖公式块推朴素贝叶斯 → 三种模型分支 → EM 五步推导 + 高斯分量迭代对齐

朴素贝叶斯推导

GMM 建模 · p(x)=Σ πₖN(x|μₖ,Σₖ)

迭代 0/8

EM 算法五步推导

详解 · K04-13 朴素贝叶斯

P(y|x)∝P(y)∏ᵢP(xᵢ|y)——条件独立假设是"朴素"二字的来源:假设各特征在给定类别后相互独立。假设几乎从不成立,却异常强韧:词袋文本分类的常青基线,小样本高维下常跑赢复杂模型。连乘概率易下溢,工程上用对数概率求和;零概率用拉普拉斯平滑兜底。

详解 · K04-19 EM 算法

含隐变量 Z 时似然 log Σ_Z P(X,Z|θ) 不可直接优化。EM 绕行:E 步算后验 q(Z)=P(Z|X,θᵗ)(每个隐变量的"责任"),M 步最大化期望完全对数似然得到 θᵗ⁺¹。由 Jensen 不等式可证每轮观测似然单调不减——必然收敛,但只保证局部最优,初始值影响终点。

详解 · K04-16 高斯混合模型 GMM

p(x)=ΣₖπₖN(x|μₖ,Σₖ):假设数据由 K 个高斯分量混合生成。GMM 是 EM 最经典的宿主——E 步的责任度 γ(zₖ)=πₖN(x|μₖ,Σₖ)/ΣⱼπⱼN(x|μⱼ,Σⱼ) 即"软聚类":每个点按概率属于各簇,而非 K-Means 的硬归属。分量数 K 可用 BIC/AIC 选择。

详解 · K04-20 变分推断与 ELBO

当真实后验 P(Z|X) 不可解,在变分族中找最近的 q(Z) 逼近它,转化为优化问题:最大化证据下界 ELBO=E_q[log P(X,Z)]−E_q[log q(Z)]≤log P(X),等价于最小化 KL(q‖P(Z|X))。EM 正是 q 取真实后验、不等式取等号的特例——变分推断把它推广到后验不可解的更大世界。

第三幕 · 突破

降维之渊 · 维度的赎罪

PCA 特征值分解 / t-SNE 局部邻域 / UMAP 拓扑结构

深渊中央悬着一团高维数据——500 维,在虚空中像一团模糊的星云,看不清结构。

高斯老祖 高斯老祖

「维度之咒的根,在维度本身。你绕不过去——那就砍掉它。PCA 找方差最大的方向投影,t-SNE 保局部邻域结构,UMAP 保拓扑结构。砍到 2 维,看看这团星云的真面目。」

维度之咒 维度之咒

「砍维度?你丢掉的信息,谁来负责?」

维度的赎罪 · PCA + t-SNE + UMAP 三方法对比

PCA 特征值分解拖拽 → k滑块看累计方差 → t-SNE/UMAP 保邻域 → 500维降2维现出螺旋

PCA · 中心化→协方差→特征值分解→投影 Z=XVₖ

保留维度 k k=2
累计方差解释率:87%
方法保什么线性/非线性速度
PCA最大方差线性快
t-SNE局部邻域概率非线性慢
UMAP拓扑结构非线性较快
详解 · K04-15 降维:PCA / t-SNE / UMAP

PCA 对协方差矩阵做特征值分解,取前 k 个主成分保最大方差——线性、可逆、可解释,k 按累计方差贡献率(常取 85%~95%)选取。t-SNE 在高维用高斯、低维用 t 分布匹配邻域概率,局部簇结构清晰但不保全局距离、不可用于新样本。UMAP 构 k 近邻图保拓扑结构,速度快、可增量、兼顾全局——工程首选。降维后的特征还可喂回聚类与 KNN,绕开距离之死。

第三幕 · 最高潮

Boss 战 · 维度之咒

三问对决 · 维度债翻阅 · 排除法收网

渊门砰然合拢。虚空寒气从四面八方涌来,在空中凝成一张脸——没有五官,只有无数个高维坐标轴交错成的网格。

维度之咒 维度之咒

「我不住在你的无知里——无知救不了我。我住在你'更多特征就是更多信息、更强算法就是更好算法'的幻觉里。三问。答得清,我散;答不清,你留在高维的虚空中——永远。」

维度债累计 0 笔 · 三问全对后清零

第三幕 · 收束

尾声 · 算法之环

算法选择之环 · 知识图谱回顾 · ch05 伏笔

咒散尽时金纹石径重新亮起,你手里的本命算法碑微微发烫——二十道铭文金光流转,但 SVM、KNN、聚类的铭文上还留着龟裂的细纹。

高斯老祖 高斯老祖

「你入门了。不是因为你背了二十种算法——背的会忘。是因为你摔过的每一跤,都刻在碑上了。可你从头到尾,特征都是自己挑的、维度都是自己降的。如果模型自己学特征呢?如果它有几十层、自己决定什么该看、什么该扔?」

算法之环 · 二十术法组装 + 知识图谱点亮

拖算法到环上正确位置 → 点亮知识碎片 → 境界突破

算法选择之环 · 拖算法到对应类别

详解 · K04-17 隐马尔可夫模型 HMM

序列数据的概率模型:隐状态链满足马尔可夫性(下一状态只依赖当前状态),每个隐状态按发射概率生成观测。三大经典问题各有名解:评估(给定模型算序列概率)用前向算法,解码(找最可能状态序列)用 Viterbi 动态规划,学习(估参数)用 Baum-Welch——正是 EM 在序列上的化身。语音识别、词性标注、基因序列分析的古典基石。

交互实验

kNN 分类误差 vs k

拖动 k 与类内散布,观察留一错误率随 k 的起伏。