跳转至

01 - 机器学习基础概念

机器学习基础概念图

📌 什么是机器学习?

传统编程 vs 机器学习

Text Only
传统编程:
输入数据 + [人写的规则] → 输出结果

机器学习:
输入数据 + [期望输出] → [机器学习的规则] → 模型

核心思想: 让计算机从数据中自动学习规律,而非人工编写规则

形式化定义

Tom Mitchell的经典定义:

"一个计算机程序被称为从经验E中学习关于某类任务T和性能度量P的知识,如果它在任务T上的性能(由P度量)随着经验E的积累而改进。"

机器学习三要素: | 符号 | 含义 | 说明 | |------|------|------| | T | 任务(Task) | 要解决的问题 | | P | 性能(Performance) | 评估指标 | | E | 经验(Experience) | 训练数据 |

为什么需要机器学习?

问题类型 传统方法的困难 机器学习的优势
图像识别 规则难以穷举所有情况 从数据中自动学习特征
自然语言处理 语言规则复杂且模糊 统计学习处理不确定性
推荐系统 用户偏好动态变化 持续学习适应用户
复杂决策 状态空间爆炸 从交互中学习最优策略

🎯 三大学习范式

1. 监督学习 (Supervised Learning)

特点: 数据有标签(正确答案)

Text Only
输入 X → [模型] → 预测 Ŷ
        与真实Y比较
         调整模型参数

任务类型: - 回归: 预测连续值 - 例子: 房价预测、股票价格、温度预测 - 分类: 预测离散类别 - 例子: 垃圾邮件检测、手写数字识别、图像分类

典型算法: - 线性回归、逻辑回归 - 决策树、随机森林 - SVM、XGBoost

2. 无监督学习 (Unsupervised Learning)

特点: 数据无标签,发现数据内在结构

Text Only
输入 X → [模型] → 发现模式/结构

任务类型: - 聚类: 将相似数据分组 - 例子: 客户分群、新闻主题聚合 - 降维: 压缩数据维度 - 例子: 可视化高维数据、特征压缩 - 关联规则: 发现物品间关系 - 例子: 购物篮分析

典型算法: - K-Means、DBSCAN - PCA、t-SNE - EM算法、高斯混合模型

3. 强化学习 (Reinforcement Learning)

特点: 通过与环境交互,学习最优策略

Text Only
[智能体] → 动作 → [环境] → 奖励/惩罚
    ↑                      ↓
    └────── 更新策略 ───────┘

核心概念: - 状态(State): 环境的当前情况 - 动作(Action): 智能体的行为选择 - 奖励(Reward): 环境的反馈信号 - 策略(Policy): 状态到动作的映射

实例: AlphaGo、机器人控制、游戏AI


⚖️ 核心概念

过拟合 vs 欠拟合

定义

  • 过拟合(Overfitting): 模型在训练集上表现很好,但在测试集上表现差,说明模型学习了训练数据中的噪声而非真实规律
  • 欠拟合(Underfitting): 模型在训练集和测试集上表现都差,说明模型复杂度不足,无法捕捉数据的真实模式

图形化理解

Text Only
欠拟合(太简单)          刚刚好                过拟合(太复杂)
    ┌─────────┐        ┌─────────┐           ┌─────────┐
    │  ·  ·   │        │   · ·   │           │·   ·   ·│
    │    /    │        │  ○○○    │           │ ○○○○○○ │
    │   /     │        │ ○●●●○   │           │○●●●●●○ │
    │  /      │        │  ○○○    │           │ ○○○○○○ │
    │ ·   ·   │        │   · ·   │           │·   ·   ·│
    └─────────┘        └─────────┘           └─────────┘
 用直线拟合曲线          学到了规律            连噪声都学进去了

解决方法速查表

问题 现象 解决方法
过拟合 训练好、测试差 ① 增加训练数据 ② 简化模型 ③ 正则化 ④ Dropout
欠拟合 训练差、测试差 ① 增加模型复杂度 ② 增加特征 ③ 减少正则化

偏差-方差权衡 (Bias-Variance Tradeoff)

理论基础

期望泛化误差可以分解为:

\[E[(\hat{y} - y)^2] = \text{Bias}^2[\hat{y}] + \text{Var}[\hat{y}] + \sigma^2\]

其中: - 偏差(Bias): 预测值的期望与真实值的差异,反映模型的拟合能力 - 方差(Variance): 预测值的变化程度,反映模型对训练数据扰动的敏感性 - 噪声(σ²): 数据本身的不可约误差

实践意义

术语 含义 对应问题
高偏差 模型假设过于简化 欠拟合
高方差 模型对训练数据过于敏感 过拟合

核心权衡:模型太简单 → 学不到规律(高偏差);模型太复杂 → 学到噪声(高方差)


📊 模型评估

评估指标

回归任务: - MSE (均方误差): \(\frac{1}{n}\sum(y_i - \hat{y}_i)^2\) - MAE (平均绝对误差): \(\frac{1}{n}\sum|y_i - \hat{y}_i|\) - : 决定系数,最大为1,越接近1越好;为0表示等同于预测均值,可为负

分类任务: - 准确率 (Accuracy): 正确预测比例 - 注意: 类别不平衡时不适用 - 精确率 (Precision): 预测为正的样本中,真正为正的比例 - \(\frac{TP}{TP + FP}\) - 关注: "预测的病人得病,真的得病了吗?" - 召回率 (Recall): 真正为正的样本中,被预测为正的比例 - \(\frac{TP}{TP + FN}\) - 关注: "所有得病的人,被检测出来了吗?" - F1-Score: 精确率和召回率的调和平均

混淆矩阵:

Text Only
              预测:正    预测:负
实际:正   TP(真阳性)    FN(假阴性)
实际:负   FP(假阳性)    TN(真阴性)

交叉验证 (Cross-Validation)

目的: 更可靠地评估模型性能,减少单次划分的偶然性

K折交叉验证:

Text Only
将数据分成K份 (如K=5):
┌─────┬─────┬─────┬─────┬─────┐
│  1  │  2  │  3  │  4  │  5  │
└─────┴─────┴─────┴─────┴─────┘

第1次: [测试] [训练] [训练] [训练] [训练]
第2次: [训练] [测试] [训练] [训练] [训练]
...
第5次: [训练] [训练] [训练] [训练] [测试]

最终性能 = 5次测试的平均值

优点: - 充分利用有限数据 - 评估结果更稳健 - 可以得到性能的方差估计


🔑 核心术语

术语对照表

中文 英文 解释
特征 Feature 输入变量 (如房屋面积、年龄)
标签 Label 输出目标 (如房价、是否患病)
样本 Sample 一条数据 (如一个人的所有信息)
训练集 Train Set 用于训练模型的数据
验证集 Val Set 用于调参的数据
测试集 Test Set 用于最终评估的数据
损失函数 Loss Function 衡量预测误差的函数
超参数 Hyperparameter 人工设置的参数 (如学习率)
模型参数 Parameter 算法学习的参数 (如权重)
泛化能力 Generalization 在未见数据上的表现
特征工程 Feature Engineering 构造/选择更好的特征

💡 学习建议

从这个问题开始

当你学习任何算法,先问自己: 1. 这个算法解决什么问题? (分类?回归?聚类?) 2. 核心思想是什么? (一句话概括) 3. 为什么这样设计? (直觉理解) 4. 数学原理是什么? (公式推导) 5. 如何用代码实现? (从零写一遍) 6. 什么时候用?什么时候不用? (优缺点)

实践练习

Python
# 练习1: 手动计算一次梯度下降
# 练习2: 用NumPy实现简单线性回归
# 练习3: 用Scikit-learn实现分类并评估

下一步

继续阅读 02-监督学习.md,深入理解经典算法原理!