type: note
title: 机器学习阶段收官(C1--C3 总结)
date: 2026-09-03
description: C1--C3 学完 + 11 个编程作业完成,机器学习阶段收官。每算法含适用场景 + 公式,末尾速查大表格汇总(无代码),含通用关键点与 11 作业成果。
2026-09-03 · 机器学习阶段收官
一、模型地图(输入 → 输出 → 目标函数)
| 模型 | 输入 | 输出 | 目标函数 |
| -------- | ------------- | ------------- | ------------------- |
| 线性回归 | 特征 | 一个**数** | MSE |
| 逻辑回归 | 特征 | 一个**概率** | 交叉熵 |
| 神经网络 | 特征 | 多层预测 | MSE / 交叉熵 |
| 决策树 | 特征 | 叶子类别 | 信息增益 |
| K-means | 特征 | 簇 | 簇内距离最小 |
| 异常检测 | 特征 | 概率 p(x) | 低于阈值判异常 |
| 协同过滤 | 用户 × 物品 | 评分 | 预测误差 |
| 内容过滤 | 用户向量·物品 | 评分 | 点积误差 |
| DQN | 状态 | 每动作的 Q 值 | Bellman 误差(MSE) |
二、每个算法:适用场景 + 公式(展开)
线性回归(C1)· 适用:预测一个**具体数**(房价、温度,关系大致线性)
f_{w,b}(\\vec{x}) = \\vec{w}\\cdot\\vec{x} + b
J(w,b) = \\frac{1}{2m}\\sum_{i=1}\^{m}\\big(f_{w,b}(\\vec{x}\^{(i)}) - y\^{(i)}\\big)\^2
w_j := w_j - \\alpha\\frac{\\partial J}{\\partial w_j}
b := b - \\alpha\\frac{\\partial J}{\\partial b}
```python
线性回归梯度下降(误差反向修正 w、b,注意没有 sigmoid)
for _ in range(num_iters):
f = np.dot(X, w) + b # 预测
dw = (1/m) * np.dot(X.T, f - y)
db = (1/m) * np.sum(f - y)
w -= alpha * dw
b -= alpha * db
```
逻辑回归(C1)· 适用:判别**是/否**,输出**概率**(垃圾邮件、猫)
f_{w,b}(\\vec{x}) = \\frac{1}{1+e\^{-(\\vec{w}\\cdot\\vec{x}+b)}}
L\\big(f_{w,b}(\\vec{x}),y\\big) = -y\\log f_{w,b}(\\vec{x}) - (1-y)\\log\\big(1-f_{w,b}(\\vec{x})\\big)
\\vec{w}\\cdot\\vec{x} + b = 0
神经网络(C2)· 适用:**复杂非线性**(图像、特征多,线性搞不定)
z\^{\[l\]} = W\^{\[l\]}a\^{\[l-1\]} + b\^{\[l\]}
a\^{\[l\]} = g\\big(z\^{\[l\]}\\big)
> g:隐藏层常用 relu;输出层按任务用 sigmoid(二分类)/ softmax(多类)/ linear(回归)。
```python
前向传播(TensorFlow 建网络)
model = Sequential([
Input(shape=(8,)),
Dense(64, activation="relu"),
Dense(64, activation="relu"),
Dense(4, activation="linear"),
])
model.compile(optimizer=Adam(learning_rate=1e-3), loss="mse")
```
决策树 / 树集成(C2)· 适用:**要可解释、特征偏离散**(风控、医疗)
H = -p_1\\log_2 p_1 - (1-p_1)\\log_2(1-p_1)
Gain = H(\\text{parent}) - \\big(w\^{\\text{left}}H\^{\\text{left}} + w\^{\\text{right}}H\^{\\text{right}}\\big)
> 单树易过拟合 → 随机森林(bagging,多树投票)/ XGBoost(boosting,接龙补错)。
K-means(C3)· 适用:**无标签,想把数据分堆**(客户分层、图压缩)
簇中心 = 簇内点的平均;迭代「分配 → 更新中心」。
异常检测(C3)· 适用:**找"不正常"的点**(欺诈、故障、监控)
p(x) = \\prod_{j=1}\^{n}\\frac{1}{\\sqrt{2\\pi\\sigma_j\^2}}\\,e\^{-\\frac{(x_j-\\mu_j)\^2}{2\\sigma_j\^2}}
p(x) \< \\epsilon \\Rightarrow \\text{异常}
协同过滤(C3)· 适用:**只有评分、没物品特征**,靠相似用户/物
用户 × 物品评分矩阵预测。
内容过滤(C3)· 适用:**有用户/物品特征**,做匹配
\\hat{y} = u \\cdot v
DQN(C3)· 适用:**有动作 + 奖励的试错环境**(游戏、机器人、控制)
y = r + \\gamma\\max_{a'}Q(s',a')\\,(1-\\text{done})
```python
DQN 损失:Bellman 目标 vs 预测
max_qsa = tf.reduce_max(target_q_network(next_states), axis=-1)
y_targets = rewards + gamma * max_qsa * (1 - done_vals)
loss = MSE(y_targets, q_values)
```
三、通用关键点(几乎所有模型共用)
归一化 / 特征缩放
x_j = \\frac{x_j-\\mu_j}{\\sigma_j}
各特征量级差太多 → 梯度下降走不稳;拉到同一量级就走匀。
> ⚠️ Adam(优化器,自动调学习率)与归一化是两回事,不能互相代替。
正则化(L2,防过拟合)
J_{reg} = J + \\frac{\\lambda}{2m}\\sum_{j}w_j\^2
λ 越大 → 越压制大权重 → 越防过拟合。
Softmax(多分类归一化为占比)
p_i = \\frac{e\^{z_i}}{\\sum_{j=1}\^{K}e\^{z_j}}
\\sum_i p_i = 1
二分类用 sigmoid,多分类用 softmax。
偏差方差权衡(共同核心)
> **高偏差 = 没学会**(训练差、验证差)→ 加复杂度。最不努力之人。
> **高方差 = 背题了**(训练好、验证差)→ 加数据 / 正则化 / 减小模型。最假努力之人。
选型判断
回归算数 / 分类概率 / 复杂非线性用网络 / 要可解释用树 / 无标签用聚类 / 找异常用检测 / 推荐打分 / 控制用强化。**数据少别硬上大网络;能用简单就别复杂,先诊断再改。**
四、复习周 11 个编程作业成果
| 天 | 作业 | 复习对应 | 状态 |
| --- | ----------------- | ---------------- | :--: |
| D1 | C1 线性回归 | 梯度下降、向量化 | ✅ |
| D2 | C1 逻辑回归 | 逻辑回归、正则化 | ✅ |
| D3 | C2 咖啡烘焙 | 神经网络、前向 | ✅ |
| D4 | C2 多分类 Softmax | 激活、多分类 | ✅ |
| D5 | C2 偏差方差诊断 | 偏差方差、正则 | ✅ |
| D6 | C2 决策树 | 决策树、树集成 | ✅ |
| D7 | C3 K-means | 聚类 | ✅ |
| D8 | C3 异常检测 | 异常检测 | ✅ |
| D9 | C3 协同过滤 | 协同过滤 | ✅ |
| D10 | C3 推荐系统 NN | 内容过滤 | ✅ |
| D11 | C3 强化学习 | RL、月球着陆器 | ✅ |
五、速查大表格(无代码)
| 算法 | 适用场景 | 核心公式 |
| ----------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| 线性回归 | 预测一个数 | f_{w,b}(\\vec{x})=\\vec{w}\\cdot\\vec{x}+b<br>J=\\frac{1}{2m}\\sum_{i}\\big(f_{w,b}(x\^{(i)})-y\^{(i)}\\big)\^2 |
| 逻辑回归 | 判别是/否(概率) | f_{w,b}(\\vec{x})=\\frac{1}{1+e\^{-(\\vec{w}\\cdot\\vec{x}+b)}}<br>L=-\\big\[y\\log f_{w,b}(\\vec{x})+(1-y)\\log(1-f_{w,b}(\\vec{x}))\\big\] |
| 神经网络 | 复杂非线性 | z\^{\[l\]}=W\^{\[l\]}a\^{\[l-1\]}+b\^{\[l\]}<br>a\^{\[l\]}=g(z\^{\[l\]}) |
| 决策树/集成 | 要可解释、特征离散 | H=-p_1\\log_2p_1-(1-p_1)\\log_2(1-p_1)<br>Gain=H(p)-\\sum_j w\^{j}H\^{j} |
| K-means | 无标签分堆 | 簇中心 = 簇内平均 |
| 异常检测 | 找不正常点 | p(x)=\\prod_{j=1}\^{n}\\frac{1}{\\sqrt{2\\pi\\sigma_j\^2}}e\^{-\\frac{(x_j-\\mu_j)\^2}{2\\sigma_j\^2}}<br>p(x)\<\\epsilon ⇒ 异常 |
| 协同过滤 | 只有评分、看相似 | 用户×物品矩阵 |
| 内容过滤 | 有画像、做匹配 | \\hat{y}=u\\cdot v |
| DQN | 动作+奖励试错 | y=r+\\gamma\\max_{a'}Q(s',a')(1-\\text{done}) |