术法初成
你以为算法越多、特征越多就越强。可高维空间中所有点都变成近邻又都变成远点,距离失效,密度消失——没有免费午餐定理告诉你:不存在万能算法,只有合适的问题与合适的归纳偏置。
维度之门
门楣上"术法"二字被虚空的寒气咬掉了一半。门内是碑林,二十座石碑各浮着一道算法铭文,金光明灭不定。石阶上飘着五面光屏,每一面都在吞吐数据,用的算法全然不同。门楣底座刻着一行小字:"二十术法,无一万能。选错算法,比没有算法更糟。"
「这是经典机器学习的二十种术法。你先回答一个问题:这五面屏里,哪一面用的是'最强算法'?」
「打个赌吧。五面屏里总有一面用的是'最强算法'——你指给我看。猜错一笔,我记一笔。账记满了,到 S9 一起算。」
算法碑林下注器 · 没有万能算法
反直觉下注(五选一)→ 逐一点亮看算法与任务匹配 → 算法谱系全景
算法-任务匹配全景图
线性术法坛 · 最小二乘的基石
金纹石径尽头是一座悬空石坛,坛上摆着一组数据点——散在平面上,像一把撒开的星子。
「给你一组数据,找出一条直线让它离所有点最近。用矩阵推导。然后拖动维度滑块,看看特征数超过样本数时会发生什么。」
「加特征。把一维变成十维、百维。维度越高,拟合越好——这不是明摆着吗?」
最小二乘推导器 · 维度推演 + 正则化救赎
拖公式块完成五步推导 → 拖维度滑块触发 XᵀX 奇异 → 岭/Lasso λ 调节看权重
拟合直线 · 维度推演
判别殿 · 分类之刃
殿中悬着两面碑:左面刻"逻辑回归",右面刻"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)
间隔裂谷 · 核技巧的深渊
裂谷中央悬着一组线性不可分的数据——两类点纠缠在一起,没有任何直线能分开。
「SVM 不找直线——找最大间隔。可这组数据线性不可分。怎么办?推完对偶,用核技巧试试。」
「升维。用核技巧把它映到一百维、一千维、无限维。维度越高,越高维空间里总能找到超平面分开它们。这是你的万能钥匙。」
SVM 推导器 · 核维度滑块 + 间隔消融监控
拖公式块完成 SVM 五步推导 → 拖核维度滑块 2→1000 → 亲见间隔消融、距离趋同
SVM 间隔 · 核技巧升维可视化
决策树之林 · 信息之斧
间隔裂谷之后是一片石林——每棵石树都是一个决策节点,枝干上刻着"如果特征 x>阈值,走左;否则走右"。
「决策树不量距离——它量信息。每次分裂,选信息增益最大的特征。可怎么量化'信息'?算给我看。」
「那你就多加特征。树总能找到一个分裂点把任何数据分开。」
信息之斧 · 熵计算 + 三指标对比 + 剪枝双曲线
拖动算信息熵 → 三指标对比选分裂特征 → 预/后剪枝看训练测试双曲线
信息熵 Ent(D)=−Σ pₖ log₂ pₖ
三种分裂指标对比 · 点击选择最佳
剪枝实验 · 训练/测试准确率双曲线
集成熔炉 · 众智成城
熔炉里悬着三道碑文:Bagging、Boosting、Stacking。一棵树过拟合,那就种一百棵。
「Bagging 有放回采样并行训练,投票表决——降低方差。Boosting 串行训练,每棵树修正上一棵的错误——降低偏差。亲手搭给我看。」
「一百棵树。你觉得数量能解决质量问题?那你就加特征,加到一百维、一千维。看你的森林在高维里还能不能找到路。」
集成熔炉 · Bagging采样 + 随机森林 + GBDT残差
Bagging采样可视化 → 随机森林特征数滑块看OOB → GBDT残差逐轮下降
Bagging · 有放回采样并行训练
Boosting · 串行拟合残差
近邻迷阵 · 距离之死
迷阵中央浮着一组数据——你一眼就能看出哪些点挨得近、哪些远。
「KNN 不训练——它记住所有训练点,来一个新点就算距离、找最近的 K 个邻居投票。简单,但有效。」
「有效?在低维确实有效。来,你把维度拉满——看看你的'最近邻'在高维里还剩多少意义。」
距离之死 · KNN + 维度滑块 + 距离比仪表 + 聚类崩塌
拖新点做KNN分类 → 拖维度滑块2→500 → 看距离比→1.0、准确率崩至瞎猜
KNN 决策边界 · 点击放置新点
准确率曲线 · 维度↑准确率↓
聚类同步崩塌 · K-Means / 层次 / DBSCAN
概率先知祠 · 贝叶斯的回响
先知祠里悬着一面旧碑,上刻贝叶斯公式——P(y|x)∝P(y)·P(x|y)。金色微光,像沉睡已久。
「距离死了,但概率没死。朴素贝叶斯不量距离——它量'在已知特征的前提下,属于哪类的概率最大'。GMM 用 EM 算法推断隐变量。推给我看。」
「概率也有假设。你的条件独立假设在高维里真的成立吗?」
贝叶斯的回响 · 朴素贝叶斯推导 + GMM + EM 五步
拖公式块推朴素贝叶斯 → 三种模型分支 → EM 五步推导 + 高斯分量迭代对齐
朴素贝叶斯推导
GMM 建模 · p(x)=Σ πₖN(x|μₖ,Σₖ)
EM 算法五步推导
降维之渊 · 维度的赎罪
深渊中央悬着一团高维数据——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 | 拓扑结构 | 非线性 | 较快 |
Boss 战 · 维度之咒
渊门砰然合拢。虚空寒气从四面八方涌来,在空中凝成一张脸——没有五官,只有无数个高维坐标轴交错成的网格。
「我不住在你的无知里——无知救不了我。我住在你'更多特征就是更多信息、更强算法就是更好算法'的幻觉里。三问。答得清,我散;答不清,你留在高维的虚空中——永远。」
维度债累计 0 笔 · 三问全对后清零
尾声 · 算法之环
咒散尽时金纹石径重新亮起,你手里的本命算法碑微微发烫——二十道铭文金光流转,但 SVM、KNN、聚类的铭文上还留着龟裂的细纹。
「你入门了。不是因为你背了二十种算法——背的会忘。是因为你摔过的每一跤,都刻在碑上了。可你从头到尾,特征都是自己挑的、维度都是自己降的。如果模型自己学特征呢?如果它有几十层、自己决定什么该看、什么该扔?」
算法之环 · 二十术法组装 + 知识图谱点亮
拖算法到环上正确位置 → 点亮知识碎片 → 境界突破