术法初成
你以为算法越多、特征越多就越强。可高维空间中所有点都变成近邻又都变成远点,距离失效,密度消失——没有免费午餐定理告诉你:不存在万能算法,只有合适的问题与合适的归纳偏置。
维度之门
门楣上"术法"二字被虚空的寒气咬掉了一半。门内是碑林,二十座石碑各浮着一道算法铭文,金光明灭不定。石阶上飘着五面光屏,每一面都在吞吐数据,用的算法全然不同。门楣底座刻着一行小字:"二十术法,无一万能。选错算法,比没有算法更糟。"
「这是经典机器学习的二十种术法。你先回答一个问题:这五面屏里,哪一面用的是'最强算法'?」
「打个赌吧。五面屏里总有一面用的是'最强算法'——你指给我看。猜错一笔,我记一笔。账记满了,到 S9 一起算。」
算法碑林下注器 · 没有万能算法
反直觉下注(五选一)→ 逐一点亮看算法与任务匹配 → 算法谱系全景
算法-任务匹配全景图
详解 · K04-18 算法选择指南
没有免费午餐(NFL)定理:对所有可能问题平均,任意两个算法的期望性能相同——不存在普适最优。实践指南:先分析数据规模、特征类型、线性可分性与噪声水平,再选归纳偏置匹配的算法(小样本高维选线性/朴素贝叶斯,非线性表格数据选 GBDT 系,大规模选可并行模型),最后用交叉验证而非直觉做裁决。
线性术法坛 · 最小二乘的基石
金纹石径尽头是一座悬空石坛,坛上摆着一组数据点——散在平面上,像一把撒开的星子。
「给你一组数据,找出一条直线让它离所有点最近。用矩阵推导。然后拖动维度滑块,看看特征数超过样本数时会发生什么。」
「加特征。把一维变成十维、百维。维度越高,拟合越好——这不是明摆着吗?」
最小二乘推导器 · 维度推演 + 正则化救赎
拖公式块完成五步推导 → 拖维度滑块触发 XᵀX 奇异 → 岭/Lasso λ 调节看权重
拟合直线 · 维度推演
详解 · 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,自带特征选择。λ 由交叉验证选出:偏差-方差权衡的旋钮。
判别殿 · 分类之刃
殿中悬着两面碑:左面刻"逻辑回归",右面刻"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)
详解 · 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 不找直线——找最大间隔。可这组数据线性不可分。怎么办?推完对偶,用核技巧试试。」
「升维。用核技巧把它映到一百维、一千维、无限维。维度越高,越高维空间里总能找到超平面分开它们。这是你的万能钥匙。」
SVM 推导器 · 核维度滑块 + 间隔消融监控
拖公式块完成 SVM 五步推导 → 拖核维度滑块 2→1000 → 亲见间隔消融、距离趋同
SVM 间隔 · 核技巧升维可视化
详解 · 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ₖ
三种分裂指标对比 · 点击选择最佳
剪枝实验 · 训练/测试准确率双曲线
详解 · 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、Boosting、Stacking。一棵树过拟合,那就种一百棵。
「Bagging 有放回采样并行训练,投票表决——降低方差。Boosting 串行训练,每棵树修正上一棵的错误——降低偏差。亲手搭给我看。」
「一百棵树。你觉得数量能解决质量问题?那你就加特征,加到一百维、一千维。看你的森林在高维里还能不能找到路。」
集成熔炉 · Bagging采样 + 随机森林 + GBDT残差
Bagging采样可视化 → 随机森林特征数滑块看OOB → GBDT残差逐轮下降
Bagging · 有放回采样并行训练
Boosting · 串行拟合残差
详解 · K04-09 集成学习
三条路线:Bagging 自助采样并行训练再投票/平均,主要降方差;Boosting 串行训练、每轮盯住前轮的错分样本或残差,主要降偏差;Stacking 用元学习器学"如何融合"各基模型输出。集成有效的前提:基学习器够多样且各自优于随机猜测——否则众愚成灾。
详解 · K04-10 随机森林
Bagging 的进化版:除样本自助采样外,每次分裂只在随机特征子集(通常 √p 个)中选最优,进一步降低树间相关性。袋外(OOB)样本天然构成免验证集的泛化误差估计;特征重要性可由分裂增益或置换检验得出。抗过拟合、几乎免调参,是表格数据的常青树。
详解 · K04-11 GBDT · XGBoost · LightGBM
GBDT:每棵新树拟合损失函数的负梯度(平方损失下即残差),串行降偏差。XGBoost:目标函数加二阶泰勒项与正则项(叶数+叶权重),支持列采样与稀疏感知,精度与稳健性双升。LightGBM:直方图分桶+GOSS 梯度采样+EFB 特征互斥捆绑,训练提速一个量级。三者至今统治结构化数据竞赛。
近邻迷阵 · 距离之死
迷阵中央浮着一组数据——你一眼就能看出哪些点挨得近、哪些远。
「KNN 不训练——它记住所有训练点,来一个新点就算距离、找最近的 K 个邻居投票。简单,但有效。」
「有效?在低维确实有效。来,你把维度拉满——看看你的'最近邻'在高维里还剩多少意义。」
距离之死 · KNN + 维度滑块 + 距离比仪表 + 聚类崩塌
拖新点做KNN分类 → 拖维度滑块2→500 → 看距离比→1.0、准确率崩至瞎猜
KNN 决策边界 · 点击放置新点
准确率曲线 · 维度↑准确率↓
聚类同步崩塌 · K-Means / 层次 / DBSCAN
详解 · K04-12 KNN 与距离之死
KNN 是惰性学习:训练只存数据,预测时才算 k 个最近邻投票/平均。全部前提是"近者相似"。可高维空间中 max/min 距离比→1:最近邻与最远邻几乎等距,"最近"失去判别力,准确率退化为类别先验(三分类即 33% 瞎猜)。k 值、距离度量、特征归一化都是低维时代的老兵,高维里全部失效。
详解 · K04-14 聚类
K-Means 迭代最小化簇内平方和,依赖欧氏距离与球形等方差假设,k 需手选、对初始质心敏感;DBSCAN 基于密度连通,能发现任意形状簇并标记噪声,但邻域半径 ε 与 MinPts 难调。高维中距离趋同、密度处处相等——聚类与 KNN 同死于维度之咒,先降维再聚类才是正解。
概率先知祠 · 贝叶斯的回响
先知祠里悬着一面旧碑,上刻贝叶斯公式——P(y|x)∝P(y)·P(x|y)。金色微光,像沉睡已久。
「距离死了,但概率没死。朴素贝叶斯不量距离——它量'在已知特征的前提下,属于哪类的概率最大'。GMM 用 EM 算法推断隐变量。推给我看。」
「概率也有假设。你的条件独立假设在高维里真的成立吗?」
贝叶斯的回响 · 朴素贝叶斯推导 + GMM + EM 五步
拖公式块推朴素贝叶斯 → 三种模型分支 → EM 五步推导 + 高斯分量迭代对齐
朴素贝叶斯推导
GMM 建模 · p(x)=Σ πₖN(x|μₖ,Σₖ)
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 取真实后验、不等式取等号的特例——变分推断把它推广到后验不可解的更大世界。
降维之渊 · 维度的赎罪
深渊中央悬着一团高维数据——500 维,在虚空中像一团模糊的星云,看不清结构。
「维度之咒的根,在维度本身。你绕不过去——那就砍掉它。PCA 找方差最大的方向投影,t-SNE 保局部邻域结构,UMAP 保拓扑结构。砍到 2 维,看看这团星云的真面目。」
「砍维度?你丢掉的信息,谁来负责?」
维度的赎罪 · PCA + t-SNE + UMAP 三方法对比
PCA 特征值分解拖拽 → k滑块看累计方差 → t-SNE/UMAP 保邻域 → 500维降2维现出螺旋
PCA · 中心化→协方差→特征值分解→投影 Z=XVₖ
t-SNE · 高斯转概率→t分布→最小化KL散度
UMAP · k近邻图→交叉熵最小化
| 方法 | 保什么 | 线性/非线性 | 速度 |
|---|---|---|---|
| PCA | 最大方差 | 线性 | 快 |
| t-SNE | 局部邻域概率 | 非线性 | 慢 |
| UMAP | 拓扑结构 | 非线性 | 较快 |
详解 · K04-15 降维:PCA / t-SNE / UMAP
PCA 对协方差矩阵做特征值分解,取前 k 个主成分保最大方差——线性、可逆、可解释,k 按累计方差贡献率(常取 85%~95%)选取。t-SNE 在高维用高斯、低维用 t 分布匹配邻域概率,局部簇结构清晰但不保全局距离、不可用于新样本。UMAP 构 k 近邻图保拓扑结构,速度快、可增量、兼顾全局——工程首选。降维后的特征还可喂回聚类与 KNN,绕开距离之死。
Boss 战 · 维度之咒
渊门砰然合拢。虚空寒气从四面八方涌来,在空中凝成一张脸——没有五官,只有无数个高维坐标轴交错成的网格。
「我不住在你的无知里——无知救不了我。我住在你'更多特征就是更多信息、更强算法就是更好算法'的幻觉里。三问。答得清,我散;答不清,你留在高维的虚空中——永远。」
维度债累计 0 笔 · 三问全对后清零
尾声 · 算法之环
咒散尽时金纹石径重新亮起,你手里的本命算法碑微微发烫——二十道铭文金光流转,但 SVM、KNN、聚类的铭文上还留着龟裂的细纹。
「你入门了。不是因为你背了二十种算法——背的会忘。是因为你摔过的每一跤,都刻在碑上了。可你从头到尾,特征都是自己挑的、维度都是自己降的。如果模型自己学特征呢?如果它有几十层、自己决定什么该看、什么该扔?」
算法之环 · 二十术法组装 + 知识图谱点亮
拖算法到环上正确位置 → 点亮知识碎片 → 境界突破
算法选择之环 · 拖算法到对应类别
详解 · K04-17 隐马尔可夫模型 HMM
序列数据的概率模型:隐状态链满足马尔可夫性(下一状态只依赖当前状态),每个隐状态按发射概率生成观测。三大经典问题各有名解:评估(给定模型算序列概率)用前向算法,解码(找最可能状态序列)用 Viterbi 动态规划,学习(估参数)用 Baum-Welch——正是 EM 在序列上的化身。语音识别、词性标注、基因序列分析的古典基石。