机器学习基础¶
理解监督学习、无监督学习、强化学习等核心概念。
什么是机器学习¶
**机器学习(Machine Learning, ML)**是AI的一个分支,它使计算机系统能够从数据中自动学习和改进,而无需明确编程。
传统编程 vs 机器学习¶
传统编程:
机器学习:
机器学习三要素¶
| 要素 | 说明 | 类比 |
|---|---|---|
| 数据 | 训练所需的输入和输出样本 | 教材和习题 |
| 算法 | 从数据中学习的方法 | 学习方法 |
| 算力 | 训练所需的计算资源 | 学习时间 |
机器学习的分类¶
机器学习
├── 监督学习(Supervised Learning)
│ ├── 分类(Classification)
│ └── 回归(Regression)
├── 无监督学习(Unsupervised Learning)
│ ├── 聚类(Clustering)
│ ├── 降维(Dimensionality Reduction)
│ └── 生成模型(Generative Models)
├── 半监督学习(Semi-supervised Learning)
└── 强化学习(Reinforcement Learning)
监督学习¶
定义¶
从**带有标签**的数据中学习,建立输入到输出的映射关系。
训练数据:(输入, 标签)
分类任务¶
预测离散的类别标签。
常见算法:
| 算法 | 特点 | 适用场景 |
|---|---|---|
| 逻辑回归 | 简单高效,可解释性强 | 二分类问题 |
| 决策树 | 直观易懂,易过拟合 | 规则清晰的分类 |
| 随机森林 | 集成多棵树,准确率高 | 通用分类任务 |
| SVM | 高维数据表现好 | 文本分类、图像分类 |
| 朴素贝叶斯 | 计算快,适合文本 | 垃圾邮件识别 |
应用示例: - 邮件分类:垃圾邮件/正常邮件 - 图像识别:猫/狗分类 - 疾病诊断:患病/健康
回归任务¶
预测连续的数值输出。
常见算法:
| 算法 | 特点 | 适用场景 |
|---|---|---|
| 线性回归 | 简单基础 | 房价预测、销量预测 |
| 岭回归 | 加入正则化 | 防止过拟合 |
| 决策树回归 | 非线性关系 | 复杂回归问题 |
| 随机森林回归 | 准确率高 | 通用回归任务 |
应用示例: - 房价预测 - 股票价格预测 - 气温预测
评估指标¶
分类指标:
| 指标 | 含义 | 公式 |
|---|---|---|
| 准确率 | 预测正确的比例 | (TP+TN)/(TP+TN+FP+FN) |
| 精确率 | 预测为正的正确率 | TP/(TP+FP) |
| 召回率 | 实际为正的捕获率 | TP/(TP+FN) |
| F1分数 | 精确率和召回率的调和平均 | 2×(P×R)/(P+R) |
回归指标:
| 指标 | 含义 | 公式 |
|---|---|---|
| MSE | 均方误差 | Σ(y-ŷ)²/n |
| RMSE | 均方根误差 | √MSE |
| MAE | 平均绝对误差 | Σ|y-ŷ|/n |
| R² | 决定系数 | 1 - MSE/Var(y) |
无监督学习¶
定义¶
从**没有标签**的数据中发现隐藏的结构和模式。
聚类¶
将相似的数据点分到同一组。
常见算法:
| 算法 | 特点 | 适用场景 |
|---|---|---|
| K-Means | 简单快速,需预设K值 | 客户分群 |
| 层次聚类 | 可生成树状图 | 基因分类 |
| DBSCAN | 自动发现簇数 | 异常检测 |
| 高斯混合模型 | 概率聚类 | 软分类场景 |
应用示例: - 客户分群:识别不同类型的用户 - 文档聚类:自动组织大量文档 - 图像分割:将图像分成不同区域
降维¶
减少数据的特征维度,同时保留重要信息。
常见方法:
| 方法 | 特点 | 适用场景 |
|---|---|---|
| PCA | 线性降维,保留最大方差 | 数据可视化 |
| t-SNE | 非线性降维,保留局部结构 | 高维数据可视化 |
| UMAP | 更快,保留全局和局部结构 | 大规模数据降维 |
| 自编码器 | 神经网络降维 | 非线性降维 |
应用示例: - 数据可视化:将高维数据降到2D/3D - 特征压缩:减少模型输入维度 - 去噪:去除数据中的噪声
强化学习¶
定义¶
通过与环境交互,学习最优行为策略,以最大化累积奖励。
核心概念:
关键要素¶
| 要素 | 说明 |
|---|---|
| 状态(State) | 环境的当前情况 |
| 动作(Action) | 智能体可执行的操作 |
| 奖励(Reward) | 环境对动作的反馈 |
| 策略(Policy) | 从状态到动作的映射 |
| 价值函数 | 预期累积奖励的估计 |
主要算法¶
| 算法类型 | 代表算法 | 特点 |
|---|---|---|
| 基于价值 | Q-Learning、DQN | 学习价值函数 |
| 基于策略 | REINFORCE、PPO | 直接优化策略 |
| Actor-Critic | A2C、A3C | 结合两者优点 |
| 基于模型 | AlphaZero | 学习环境模型 |
应用示例¶
- 游戏AI:AlphaGo、OpenAI Five
- 机器人控制:机械臂操作、行走控制
- 推荐系统:动态调整推荐策略
- 自动驾驶:路径规划和决策
机器学习工作流程¶
1. 问题定义
↓
2. 数据收集
↓
3. 数据预处理
├── 清洗
├── 特征工程
└── 数据分割
↓
4. 模型选择
↓
5. 模型训练
↓
6. 模型评估
↓
7. 模型部署
↓
8. 持续监控
1. 问题定义¶
明确要解决的问题: - 监督/无监督/强化学习? - 分类/回归/聚类? - 评估标准是什么?
2. 数据收集¶
- 内部数据
- 公开数据集
- 数据采集
- 数据标注(监督学习)
3. 数据预处理¶
数据清洗: - 处理缺失值 - 去除异常值 - 去除重复数据
特征工程: - 特征选择 - 特征构造 - 特征缩放
数据分割: - 训练集:用于训练模型 - 验证集:用于调参和选择模型 - 测试集:用于最终评估
4. 模型选择¶
根据问题特点选择合适的算法。
5. 模型训练¶
- 训练模型参数
- 调整超参数
- 交叉验证
6. 模型评估¶
使用测试集评估模型性能。
常见问题: - 过拟合:训练集表现好,测试集表现差 - 欠拟合:训练集和测试集都表现差
解决方案: - 正则化 - 增加数据 - 简化模型 - 特征工程
7. 模型部署¶
将训练好的模型部署到生产环境。
8. 持续监控¶
- 监控模型性能
- 检测数据漂移
- 定期重新训练
特征工程基础¶
什么是特征¶
**特征**是用于训练模型的输入变量。
好特征的特点: - 与目标变量相关 - 覆盖足够的变异性 - 可被模型有效利用
特征类型¶
| 类型 | 示例 | 处理方式 |
|---|---|---|
| 数值特征 | 年龄、价格、温度 | 标准化/归一化 |
| 类别特征 | 性别、颜色、类别 | 独热编码 |
| 文本特征 | 评论、描述 | 词袋、TF-IDF |
| 时间特征 | 日期、时间戳 | 提取年月日等 |
特征缩放¶
标准化(Standardization):
归一化(Normalization):
作用: - 加速训练收敛 - 防止特征值范围差异过大 - 提高模型稳定性
模型选择与调优¶
偏差-方差权衡¶
| 问题 | 表现 | 解决方案 |
|---|---|---|
| 高偏差(欠拟合) | 训练误差和测试误差都高 | 增加模型复杂度、特征工程 |
| 高方差(过拟合) | 训练误差低,测试误差高 | 正则化、增加数据、简化模型 |
交叉验证¶
K折交叉验证: 1. 将数据分成K份 2. 每次用K-1份训练,1份验证 3. 重复K次,确保每份都作为验证集 4. 取平均性能
作用:更可靠的模型评估
超参数调优¶
网格搜索(Grid Search): - 遍历所有参数组合 - 计算量大但全面
随机搜索(Random Search): - 随机采样参数组合 - 更快,适合高维空间
常见问题¶
??? question "机器学习与深度学习的区别?**
| 机器学习 | 深度学习 |
|---|---|
| 特征需要人工提取 | 自动学习特征 |
| 适合结构化数据 | 适合非结构化数据(图像、文本) |
| 模型相对简单 | 模型复杂,参数量大 |
| 训练数据需求较少 | 需要大量数据 |
| 可解释性较强 | 可解释性较弱 |
??? question "如何选择算法?**
**初学者建议**:
1. 先尝试简单算法(逻辑回归、决策树)
2. 建立基线性能
3. 逐步尝试复杂算法
4. 根据验证集性能选择
**经验法则**:
- 数据小、特征少:传统ML
- 图像/文本/语音:深度学习
- 需要可解释性:线性模型、决策树
??? question "需要多少数据?**
取决于问题复杂度:
- 简单问题:几百到几千样本
- 复杂问题:几万到几百万样本
- 深度学习:通常需要更多数据
**数据不足时的策略**:
- 数据增强
- 迁移学习
- 简化模型
??? question "如何入门机器学习?**
**学习路径**:
1. 数学基础:线性代数、概率统计、微积分
2. Python编程
3. 学习scikit-learn
4. 完成Kaggle入门竞赛
5. 深入学习特定领域
**推荐资源**:
- 课程:吴恩达《机器学习》
- 书籍:《机器学习实战》
- 实践:Kaggle竞赛
小结¶
机器学习是AI的核心技术,理解其基本概念是深入学习AI的基础。
关键要点: 1. 明确问题类型(监督/无监督/强化) 2. 数据质量和数量同样重要 3. 特征工程往往是提升效果的关键 4. 避免过拟合,重视模型泛化能力
延伸阅读: