01 - 机器学习基础概念¶
📌 什么是机器学习?¶
传统编程 vs 机器学习¶
核心思想: 让计算机从数据中自动学习规律,而非人工编写规则
形式化定义¶
Tom Mitchell的经典定义:
"一个计算机程序被称为从经验E中学习关于某类任务T和性能度量P的知识,如果它在任务T上的性能(由P度量)随着经验E的积累而改进。"
机器学习三要素: | 符号 | 含义 | 说明 | |------|------|------| | T | 任务(Task) | 要解决的问题 | | P | 性能(Performance) | 评估指标 | | E | 经验(Experience) | 训练数据 |
为什么需要机器学习?¶
| 问题类型 | 传统方法的困难 | 机器学习的优势 |
|---|---|---|
| 图像识别 | 规则难以穷举所有情况 | 从数据中自动学习特征 |
| 自然语言处理 | 语言规则复杂且模糊 | 统计学习处理不确定性 |
| 推荐系统 | 用户偏好动态变化 | 持续学习适应用户 |
| 复杂决策 | 状态空间爆炸 | 从交互中学习最优策略 |
🎯 三大学习范式¶
1. 监督学习 (Supervised Learning)¶
特点: 数据有标签(正确答案)
任务类型: - 回归: 预测连续值 - 例子: 房价预测、股票价格、温度预测 - 分类: 预测离散类别 - 例子: 垃圾邮件检测、手写数字识别、图像分类
典型算法: - 线性回归、逻辑回归 - 决策树、随机森林 - SVM、XGBoost
2. 无监督学习 (Unsupervised Learning)¶
特点: 数据无标签,发现数据内在结构
任务类型: - 聚类: 将相似数据分组 - 例子: 客户分群、新闻主题聚合 - 降维: 压缩数据维度 - 例子: 可视化高维数据、特征压缩 - 关联规则: 发现物品间关系 - 例子: 购物篮分析
典型算法: - K-Means、DBSCAN - PCA、t-SNE - EM算法、高斯混合模型
3. 强化学习 (Reinforcement Learning)¶
特点: 通过与环境交互,学习最优策略
核心概念: - 状态(State): 环境的当前情况 - 动作(Action): 智能体的行为选择 - 奖励(Reward): 环境的反馈信号 - 策略(Policy): 状态到动作的映射
实例: AlphaGo、机器人控制、游戏AI
⚖️ 核心概念¶
过拟合 vs 欠拟合¶
定义¶
- 过拟合(Overfitting): 模型在训练集上表现很好,但在测试集上表现差,说明模型学习了训练数据中的噪声而非真实规律
- 欠拟合(Underfitting): 模型在训练集和测试集上表现都差,说明模型复杂度不足,无法捕捉数据的真实模式
图形化理解¶
欠拟合(太简单) 刚刚好 过拟合(太复杂)
┌─────────┐ ┌─────────┐ ┌─────────┐
│ · · │ │ · · │ │· · ·│
│ / │ │ ○○○ │ │ ○○○○○○ │
│ / │ │ ○●●●○ │ │○●●●●●○ │
│ / │ │ ○○○ │ │ ○○○○○○ │
│ · · │ │ · · │ │· · ·│
└─────────┘ └─────────┘ └─────────┘
用直线拟合曲线 学到了规律 连噪声都学进去了
解决方法速查表¶
| 问题 | 现象 | 解决方法 |
|---|---|---|
| 过拟合 | 训练好、测试差 | ① 增加训练数据 ② 简化模型 ③ 正则化 ④ Dropout |
| 欠拟合 | 训练差、测试差 | ① 增加模型复杂度 ② 增加特征 ③ 减少正则化 |
偏差-方差权衡 (Bias-Variance Tradeoff)¶
理论基础¶
期望泛化误差可以分解为:
其中: - 偏差(Bias): 预测值的期望与真实值的差异,反映模型的拟合能力 - 方差(Variance): 预测值的变化程度,反映模型对训练数据扰动的敏感性 - 噪声(σ²): 数据本身的不可约误差
实践意义¶
| 术语 | 含义 | 对应问题 |
|---|---|---|
| 高偏差 | 模型假设过于简化 | 欠拟合 |
| 高方差 | 模型对训练数据过于敏感 | 过拟合 |
核心权衡:模型太简单 → 学不到规律(高偏差);模型太复杂 → 学到噪声(高方差)
📊 模型评估¶
评估指标¶
回归任务: - MSE (均方误差): \(\frac{1}{n}\sum(y_i - \hat{y}_i)^2\) - MAE (平均绝对误差): \(\frac{1}{n}\sum|y_i - \hat{y}_i|\) - R²: 决定系数,最大为1,越接近1越好;为0表示等同于预测均值,可为负
分类任务: - 准确率 (Accuracy): 正确预测比例 - 注意: 类别不平衡时不适用 - 精确率 (Precision): 预测为正的样本中,真正为正的比例 - \(\frac{TP}{TP + FP}\) - 关注: "预测的病人得病,真的得病了吗?" - 召回率 (Recall): 真正为正的样本中,被预测为正的比例 - \(\frac{TP}{TP + FN}\) - 关注: "所有得病的人,被检测出来了吗?" - F1-Score: 精确率和召回率的调和平均
混淆矩阵:
交叉验证 (Cross-Validation)¶
目的: 更可靠地评估模型性能,减少单次划分的偶然性
K折交叉验证:
将数据分成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. 什么时候用?什么时候不用? (优缺点)
实践练习¶
下一步¶
继续阅读 02-监督学习.md,深入理解经典算法原理!