监督学习(Supervised Learning)¶
监督学习是机器学习中最常用的范式。给定一组带标签的训练数据 \(\{(x_i, y_i)\}_{i=1}^{n}\),模型学习输入 \(x\) 到输出 \(y\) 的映射关系 \(f: X \rightarrow Y\)。
监督学习的两大任务¶
| 回归(Regression) | 分类(Classification) | |
|---|---|---|
| 输出 | 连续值(如 3.14, 100.5) | 离散类别(如 猫/狗, 0/1) |
| 示例 | 预测房价、温度、股票价格 | 识别手写数字、垃圾邮件检测 |
| 评估指标 | MSE、MAE、\(R^2\) | 准确率、精确率、召回率、F1 |
一、线性回归(Linear Regression)¶
基本思想¶
用一条直线(或超平面)去拟合数据点,是最简单、最基础的回归模型。
目标:找到最优的 \(\mathbf{w}\) 和 \(b\),使得预测值 \(\hat{y}\) 尽可能接近真实值 \(y\)。
损失函数:均方误差(MSE)¶
为什么用平方而不是绝对值?
- 平方函数处处可导,便于使用梯度下降优化
- 对较大的误差惩罚更重,促使模型减少大误差
- 在误差服从正态分布的假设下,MSE 等价于最大似然估计
求解方法¶
直接求导令梯度为零,可以一步得到最优解:
优点: 不需要迭代,直接得到精确解
缺点: 需要计算矩阵逆,当特征维度很高(>10000)时计算量大;\(\mathbf{X}^T\mathbf{X}\) 不可逆时无法使用
反复更新参数,逐步逼近最优解:
优点: 适用于大规模数据,通用性强
缺点: 需要调整学习率 \(\eta\),可能陷入局部最优(但线性回归是凸函数,没有这个问题)
多项式回归¶
当数据呈非线性关系时,可以增加多项式特征:
注意
多项式阶数越高,模型越复杂,越容易过拟合。需要配合正则化使用。
二、逻辑回归(Logistic Regression)¶
基本思想¶
尽管名字里有"回归",但逻辑回归是一种分类算法。它在线性回归的基础上加了一个 Sigmoid 函数,将输出压缩到 (0, 1) 区间,表示概率。
Sigmoid 函数的性质:
- 输出范围 \((0, 1)\),可解释为概率
- 当 \(z = 0\) 时,\(\sigma(z) = 0.5\)(决策边界)
- 当 \(z \to +\infty\) 时,\(\sigma(z) \to 1\)
- 当 \(z \to -\infty\) 时,\(\sigma(z) \to 0\)
决策规则¶
损失函数:交叉熵(Cross Entropy)¶
为什么不用 MSE?
对于逻辑回归,MSE 的损失函数是非凸的,梯度下降容易陷入局部最优。而交叉熵损失函数是凸函数,保证能找到全局最优。
多分类扩展:Softmax 回归¶
当类别数 \(K > 2\) 时,逻辑回归扩展为 Softmax 回归:
Softmax 保证所有类别的概率之和为 1,模型选择概率最大的类别作为预测结果。
三、支持向量机(SVM)¶
基本思想¶
SVM 的目标是找到一个最优超平面,使得两个类别之间的间隔(Margin)最大化。
直觉理解
想象桌子上有红蓝两堆豆子,你要放一根棍子把它们分开。SVM 不仅要分开,还要让棍子到两堆豆子的最近距离尽可能大——这样分隔最"安全"。
数学表达¶
超平面方程:\(\mathbf{w}^T \mathbf{x} + b = 0\)
最大化间隔等价于:
支持向量(Support Vectors):距离超平面最近的那些训练样本点。只有支持向量决定了超平面的位置,其他样本点对模型没有影响。
软间隔(Soft Margin)¶
现实中数据往往不能完美线性分割,因此引入松弛变量 \(\xi_i\) 允许部分样本被误分类:
- \(C\) 越大:对误分类惩罚越重,间隔越小(可能过拟合)
- \(C\) 越小:允许更多误分类,间隔越大(可能欠拟合)
核函数(Kernel Function)¶
当数据在原始空间中线性不可分时,核函数将数据映射到高维空间,使其在高维空间中线性可分:
| 核函数 | 公式 | 适用场景 |
|---|---|---|
| 线性核 | \(K(x_i, x_j) = x_i^T x_j\) | 线性可分数据 |
| 多项式核 | \(K(x_i, x_j) = (x_i^T x_j + c)^d\) | 中等复杂度 |
| RBF(高斯)核 | \(K(x_i, x_j) = \exp(-\gamma\|x_i - x_j\|^2)\) | 最常用,适用于大多数情况 |
核技巧的精髓
核函数的巧妙之处在于:不需要真的把数据映射到高维空间,只需要计算两个样本在高维空间中的内积。这让计算量大幅减少。
四、K 近邻(KNN)¶
基本思想¶
KNN 是最直觉的分类算法:一个样本的类别由它周围最近的 K 个邻居的投票决定。
类比
如果你搬到一个新社区,想知道自己属于哪种生活风格。你可以看看你家附近最近的 5 户邻居(K=5)是什么风格——如果 3 户是年轻白领,那你大概率也被归为年轻白领社区。
算法步骤¶
- 计算待预测样本与所有训练样本的距离
- 选取距离最近的 K 个训练样本
- 用这 K 个样本的标签投票(分类)或取平均(回归)
距离度量¶
| 距离 | 公式 | 特点 |
|---|---|---|
| 欧氏距离 | \(d = \sqrt{\sum(x_i - y_i)^2}\) | 最常用,对尺度敏感 |
| 曼哈顿距离 | \(d = \sum\|x_i - y_i\|\) | 适合高维数据 |
| 余弦相似度 | \(\cos\theta = \frac{\mathbf{x} \cdot \mathbf{y}}{\|\mathbf{x}\|\|\mathbf{y}\|}\) | 关注方向而非大小 |
K 值的选择¶
- K 太小(如 K=1):对噪声敏感,容易过拟合
- K 太大(如 K=100):决策边界过于平滑,容易欠拟合
- 常用方法:通过交叉验证选择最优 K 值,通常尝试奇数以避免平票
优缺点¶
| 优点 | 缺点 |
|---|---|
| 简单直观,无需训练 | 预测时计算量大(需遍历所有样本) |
| 适用于非线性数据 | 对特征尺度敏感(需要标准化) |
| 天然支持多分类 | 高维数据效果差(维度灾难) |
五、决策树(Decision Tree)¶
基本思想¶
决策树模拟人类做决策的过程:通过一系列是/否的问题,逐步将数据划分到不同的类别。
类比
就像猜动物的游戏:
"它是哺乳动物吗?" → 是 → "它会飞吗?" → 否 → "它体型大吗?" → 是 → "大象!"
核心问题:选哪个特征来分裂?¶
决策树的关键在于:每一步选择哪个特征来提问。理想情况下,每次分裂都应该让数据变得更"纯净"(更容易分类)。
衡量"纯度"的指标:
基于信息熵。信息熵衡量数据的不确定性:
信息增益 = 分裂前的熵 - 分裂后的加权熵:
选择信息增益最大的特征进行分裂。
缺点: 偏好取值多的特征(如"身份证号"每个值唯一,信息增益很高但没用)
基尼指数衡量从数据集中随机抽取两个样本,类别不一致的概率:
- Gini = 0:完全纯净(只有一个类别)
- Gini 越大:越混乱
选择使基尼指数减少最多的特征进行分裂。
优点: 计算比信息熵快(不需要算对数),是 sklearn 的默认选择
剪枝(Pruning)¶
决策树如果不加限制,会一直分裂到每个叶子节点只有一个样本——严重过拟合。剪枝是解决方案:
- 预剪枝:在树生长过程中提前停止(限制最大深度、最少样本数等)
- 后剪枝:先生长完整棵树,再自底向上地删除那些对泛化无帮助的子树
六、朴素贝叶斯(Naive Bayes)¶
基本思想¶
基于贝叶斯定理,计算在给定特征条件下,样本属于各个类别的概率,选择概率最大的类别。
其中: - \(P(y|\mathbf{x})\):后验概率,给定特征后属于类别 y 的概率(这是我们要求的) - \(P(\mathbf{x}|y)\):似然,属于类别 y 时出现特征 x 的概率 - \(P(y)\):先验概率,类别 y 出现的概率 - \(P(\mathbf{x})\):证据,特征 x 出现的概率(对所有类别相同,可不计算)
"朴素"假设¶
各特征之间相互独立:
这个假设合理吗?
通常不合理!比如在垃圾邮件检测中,"免费"和"中奖"这两个特征显然不独立,它们经常一起出现。
但尽管假设不成立,朴素贝叶斯在实践中仍然表现得出奇地好,尤其是在文本分类、垃圾邮件过滤等任务中。
常见变体¶
| 变体 | 特征类型 | 典型应用 |
|---|---|---|
| 高斯朴素贝叶斯 | 连续值(假设正态分布) | 通用分类 |
| 多项式朴素贝叶斯 | 离散计数(如词频) | 文本分类 |
| 伯努利朴素贝叶斯 | 二值特征(0/1) | 短文本、情感分析 |
算法对比速查表¶
| 算法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 线性回归 | 简单、可解释、快速 | 只能拟合线性关系 | 数据近似线性、需要可解释性 |
| 逻辑回归 | 简单、输出概率、可解释 | 线性决策边界 | 二分类、基线模型 |
| SVM | 高维有效、泛化强 | 大数据集慢、参数敏感 | 中小型数据集、文本分类 |
| KNN | 简单直观、无需训练 | 预测慢、维度灾难 | 小数据集、推荐系统 |
| 决策树 | 可解释、处理混合特征 | 容易过拟合 | 需要可解释性、特征工程初探 |
| 朴素贝叶斯 | 快速、小数据也可用 | 特征独立假设 | 文本分类、实时预测 |