🧠 机器学习

让计算机从数据中自动学习规律

🤔
什么是机器学习?
核心概念
机器学习 vs 传统编程
┌─────────────────────────────────────────────────────────────┐ │ │ │ 传统编程: │ │ ┌─────────┐ ┌─────────────┐ ┌─────────┐ │ │ │ 输入 │ ──▶ │ 人工规则 │ ──▶ │ 输出 │ │ │ └─────────┘ └─────────────┘ └─────────┘ │ │ │ │ 机器学习: │ │ ┌─────────┐ ┌─────────────┐ ┌─────────┐ │ │ │ 输入+答案│ ──▶ │ 学习算法 │ ──▶ │ 规则 │ │ │ └─────────┘ └─────────────┘ └─────────┘ │ │ │ │ │ ▼ │ │ ┌─────────┐ │ │ │ 预测新数据│ │ │ └─────────┘ │ └─────────────────────────────────────────────────────────────┘

📊 机器学习三大类型

🎯 监督学习

有标签数据

给机器"标准答案"学习

分类 回归
  • 垃圾邮件识别
  • 房价预测
  • 图像分类
🔍 无监督学习

无标签数据

让机器自己发现规律

聚类 降维
  • 用户分群
  • 异常检测
  • 数据压缩
🎮 强化学习

试错学习

通过奖励和惩罚学习

决策 控制
  • 游戏AI
  • 机器人控制
  • 自动驾驶

📈 回归 vs 分类

对比项 回归问题 分类问题
输出类型 连续数值 离散类别
例子 预测房价(150万、200万...) 识别猫狗(猫、狗)
输出示例 99.5、150.2 0、1、2 或 猫、狗、鸟
评估指标 MSE、RMSE、MAE 准确率、精确率、召回率

🔧 常见算法(监督学习)

📉
线性回归
Linear Regression

找一条直线拟合数据

回归
输入:面积 → 输出:价格 50㎡ → 100万, 80㎡ → 160万
  • 简单、可解释
  • 房价预测、销量预测
🚦
逻辑回归
Logistic Regression

二分类问题的经典算法

分类
输入:邮件 → 输出:是否垃圾 用Sigmoid函数输出概率
  • 输出概率值
  • 垃圾邮件、信用评分
🌳
决策树
Decision Tree

像树一样不断分支判断

通用
天气如何? / | \ 晴天 阴天 下雨 ✓ ? 取消
  • 可解释性强
  • 规则提取、分类
🌲
随机森林
Random Forest

多棵树一起投票

集成
树1:猫 树2:狗 树3:猫 → 投票结果: 猫 (2:1)
  • 抗过拟合
  • Kaggle竞赛常用
📊
梯度提升
Gradient Boosting

串行建造多棵树

集成 XGBoost
树1错误 → 树2纠正 → 树3再纠正 累积多棵树的预测结果
  • 精度极高
  • 结构化数据首选
🎯
支持向量机
SVM

找到最佳分割超平面

分类
● ● ● ● ● ───最佳分割线─── ○ ○ ○ ○ ○ 最大化两类之间的间隔
  • 高维数据有效
  • 文本分类、人脸识别
📬
朴素贝叶斯
Naive Bayes

基于概率的分类

分类
P(垃圾|词) = P(词|垃圾) × P(垃圾) / P(词) 基于贝叶斯定理计算概率
  • 快速、高效
  • 垃圾邮件、文本分类
👥
K近邻
KNN

看邻居判断自己是哪类

分类
新样本周围3个邻居: 2个A类 + 1个B类 → 分类为A类
  • 简单直观
  • 推荐系统、简单分类
🚀
AdaBoost
Adaptive Boosting

关注被错分的样本

集成
前一个树分错的样本 → 下一个树重点关注 → 多个弱分类器组合
  • 自动调整权重
  • 人脸检测(早期)

🔧 无监督学习算法

📊
K均值聚类
K-Means

自动把相似数据分K组

聚类
选K个中心点 → 分配样本 → 更新中心点 → 重复直到收敛
  • 用户分群
  • 图像压缩
🔬
层次聚类
Hierarchical

自底向上合并样本

聚类
● ●●● ●● ●●●●● ●●●●●●●●●●●●● 合并成树状结构(Dendrogram)
  • 不需要预设K值
  • 生物分类、文档组织
📉
PCA降维
主成分分析

找到数据主要方向

降维
2D数据 ──▶ 投影到1D 保留最多方差信息
  • 可视化
  • 加速训练
🎨
t-SNE
非线性降维

高维数据可视化

降维
784维图像 ──▶ 2D点图 保持相似样本靠近
  • MNIST可视化
  • 聚类结果展示
🔍
DBSCAN
密度聚类

基于密度的聚类

聚类
密集区域 → 形成簇 稀疏区域 → 噪声点
  • 自动发现簇数量
  • 异常检测
⚠️
孤立森林
Isolation Forest

异常点更容易被孤立

异常检测
正常点:需要多次分割 异常点:一次分割隔离
  • 金融欺诈检测
  • 网络入侵检测
🔮
高斯混合模型
GMM

用多个高斯分布混合

聚类
P(x) = Σwᵢ·N(x|μᵢ,Σᵢ) 软分配:每个点属于各簇的概率
  • 软聚类(概率输出)
  • 数据分布建模
🗺️
UMAP
非线性降维

比t-SNE更快更好

降维
高维数据 → 保持局部结构 速度快、可保留全局结构
  • 大规模数据可视化
  • 单细胞数据分析
📦
关联规则
Apriori

发现物品间关联关系

关联
啤酒 → 尿布(经典案例) 支持度、置信度、提升度
  • 超市购物分析
  • 推荐系统冷启动

🚀 更多监督学习算法

LightGBM
轻量级梯度提升

更快的梯度提升框架

集成 高效
GOSS: 梯度单边采样 EFB: 互斥特征捆绑 Histogram-based: 直方图优化
  • 训练速度极快
  • 支持类别特征
🐱
CatBoost
类别特征优化

自动处理类别特征

集成
Ordered Target Statistics 对称提升树结构 自动处理缺失值
  • 类别特征无需编码
  • 减少过拟合
🧠
多层感知机
MLP

最简单的神经网络

深度学习
输入层 → 隐藏层 × N → 输出层 全连接 + 激活函数
  • 表格数据分类/回归
  • 特征自动学习
📐
岭回归
Ridge

L2正则化的线性回归

回归
损失 = MSE + α·Σw² 惩罚大权重,防止过拟合
  • 多重共线性问题
  • 特征数量 > 样本数量
🎯
Lasso回归
L1正则化

L1正则化 + 特征选择

回归
损失 = MSE + α·Σ|w| 可将不重要特征系数变为0
  • 自动特征筛选
  • 稀疏解
⚖️
弹性网络
Elastic Net

L1 + L2 正则化组合

回归
结合Ridge和Lasso优点 适合高相关特征
  • 特征组选择
  • 推荐系统常用
🌲
极端随机树
Extra Trees

比随机森林更随机

集成
分裂阈值完全随机 不进行Bootstrap
  • 降低方差
  • 训练更快
📚
装袋法
Bagging

并行训练多个模型

集成
Bootstrap样本 → 独立训练 多数投票/平均 → 最终结果
  • 降低方差
  • Random Forest基于此
🏗️
堆叠法
Stacking

用元学习器组合模型

集成
基础模型预测 → 元特征 元学习器 → 最终预测
  • Kaggle竞赛常用
  • 提升模型上限

🚀 更多高级算法

🎪
AdaBoost
自适应提升

多个弱分类器串联

集成
弱分类器 → 加权组合 关注错误样本 → 增强学习
  • 人脸检测(Viola-Jones)
  • 特征选择
🔢
朴素贝叶斯
Naive Bayes

基于贝叶斯定理的分类

分类
P(A|B) = P(B|A)·P(A)/P(B) 假设特征条件独立
  • 垃圾邮件分类
  • 文本情感分析
📊
判别分析
LDA/QDA

线性/二次判别分析

分类
LDA: 线性决策边界 QDA: 二次决策边界
  • 数据可视化(降维)
  • 特征分类
📈
支持向量机
SVM

找最大间隔分类超平面

分类
找到支持向量 最大化类别间隔
  • 文本分类
  • 图像识别
🌐
核方法
Kernel Methods

非线性问题转线性

通用
RBF核: 高斯径向基 多项式核: 低次转高次
  • SVM非线性扩展
  • 高维映射
🔄
马尔可夫链
Markov Chain

状态转移的概率模型

序列
P(sₜ₊₁|sₜ) 未来只依赖当前状态
  • 时序预测
  • 自然语言处理
🏃
隐马尔可夫模型
HMM

观测序列推断隐状态

序列
观测序列 ← 隐状态序列 通过概率推断隐状态
  • 语音识别
  • 基因序列分析
🗣️
条件随机场
CRF

序列标注的判别模型

序列
考虑上下文关系 序列标注任务
  • 命名实体识别
  • 词性标注
🔮
高斯过程
Gaussian Process

函数上的概率分布

回归
预测值 + 不确定性 贝叶斯非参数方法
  • 超参数优化
  • 不确定性量化
🎯
因子分析
Factor Analysis

发现潜在因子

降维
观测变量 → 潜在因子 + 特殊因子
  • 心理测量学
  • 特征解释
🧩
独立成分分析
ICA

分离独立信号

降维
盲源分离 最大化独立性
  • 脑信号分析
  • 音频分离
📉
偏最小二乘
PLS

有监督的降维回归

回归
同时考虑X和Y 最大化协方差
  • 多输出回归
  • 光谱分析
🧠
受限玻尔兹曼机
RBM

生成式概率模型

深度学习
可见层 ↔ 隐藏层 对比散度训练
  • 深度信念网络
  • 特征学习
🔀
混合专家
Mixture of Experts

多个专家网络组合

集成
专家网络 → 门控网络 加权组合输出
  • 大模型常用
  • 多任务学习
🎪
梯度提升决策树
GBDT

迭代拟合残差

集成
弱学习器 → 残差拟合 累加提升效果
  • XGBoost基础
  • 结构化数据首选

📋 算法选择指南

场景 推荐算法 原因
快速baseline 逻辑回归 / 决策树 简单、可解释
结构化数据 梯度提升(XGBoost/LightGBM) 精度高、稳定
图像/文本 深度学习(CNN/RNN/Transformer) 自动特征提取
需要可解释 决策树 / 逻辑回归 规则清晰
聚类分析 K-Means / DBSCAN 效果稳定
异常检测 孤立森林 / One-Class SVM 专门设计
数据量小 SVM / 朴素贝叶斯 小样本效果好
高维稀疏 逻辑回归 / 线性SVM 擅长高维

🔄 机器学习工作流程

收集数据
数据清洗
特征工程
模型训练
模型评估
预测应用

📏 模型评估指标

指标 说明 计算公式 适用场景
准确率 预测正确的比例 (TP+TN)/(TP+TN+FP+FN) 分类问题通用
精确率 预测为正类中真正正类的比例 TP/(TP+FP) 关注误报
召回率 正类中被正确预测的比例 TP/(TP+FN) 关注漏报
F1分数 精确率和召回率的调和平均 2×(精确率×召回率)/(精确率+召回率) 综合评价
MSE 预测值与真实值差异的平方平均 Σ(y_i - ŷ_i)² / n 回归问题
模型解释数据的能力(0-1) 1 - (Σ(y_i - ŷ_i)² / Σ(y_i - ȳ)²) 回归问题