机器学习基础概念

目标读者: 机器学习初学者 核心内容: 学习范式、过拟合/欠拟合、偏差-方差权衡、交叉验证 前置知识: 基础数学(线性代数、微积分、概率统计)


1. 什么是机器学习?

机器学习的本质:让机器从数据中自动学习规律,而不是显式编程。

传统编程:  规则 + 数据  →  结果
机器学习:  数据 + 结果  →  规则(模型)

示例对比

  • 传统方法:写 100 条 if-else 判断垃圾邮件
  • 机器学习:给 10000 封邮件(标记好垃圾/正常),让模型自己学规律

2. 三大学习范式

根据机器获取学习信号(反馈)的来源,可将机器学习分为三大类:

2.1 监督学习 (Supervised Learning)

特点:有”标准答案”(标签)

输入 X标签 Y
[图片:猫]“猫”
[图片:狗]“狗”
[房子:100㎡]500万

两类任务

类型输出例子
分类离散类别垃圾邮件检测、图像识别
回归连续数值房价预测、股票预测

数学表达:学习映射函数

2.2 无监督学习 (Unsupervised Learning)

特点:没有标签,只有数据本身

核心目标:发现数据中内在的结构、模式或分布

典型任务

任务目标例子
聚类发现相似群体客户分群、文档归类
降维压缩特征PCA 降维可视化
异常检测找出异常点信用卡欺诈检测

2.3 强化学习 (Reinforcement Learning)

特点:通过”试错”获得延迟反馈

       ┌─────────────┐
       │   环境      │
       │ Environment │
       └──────┬──────┘
              │ 状态 + 奖励
              ▼
       ┌─────────────┐
       │   智能体    │ ──→ 动作
       │   Agent     │
       └─────────────┘

与监督学习的区别

  • 监督学习:每一步都有正确答案
  • 强化学习:只有最终结果的奖励/惩罚

典型应用:AlphaGo、游戏 AI、机器人控制、自动驾驶决策

2.4 三大范式对比

范式数据特点学习目标典型算法
监督学习有标签 学习 映射线性回归、SVM、神经网络
无监督学习无标签 发现数据结构K-Means、PCA、自编码器
强化学习交互反馈最大化累计奖励Q-Learning、PPO

3. 过拟合与欠拟合

重要:这是机器学习中最核心的概念之一,理解它对模型调优至关重要。

3.1 直观理解

数据点: ● (训练数据)

欠拟合 (Underfitting)     适度拟合 (Good Fit)      过拟合 (Overfitting)
        ●                       ●                        ●
    ●      ●                ●      ●                 ●  /\  ●
  ────────────            ~~~~~~~~~~~              /\/    \/\
        ●                       ●                        ●

模型太简单                 刚刚好                   模型太复杂
没学到规律               学到真正规律              学到了噪声

3.2 如何判断?

情况训练误差测试误差诊断
欠拟合模型太简单,无法捕捉数据规律
适度拟合理想状态,泛化能力好
过拟合很低模型太复杂,记住了噪声

3.3 解决方案

欠拟合的解决方法(增加模型复杂度):

  • 使用更复杂的模型(如从线性模型换成神经网络)
  • 增加特征数量或进行特征工程
  • 减少正则化强度
  • 增加训练轮数

过拟合的解决方法(降低模型复杂度):

  • 增加训练数据:最有效的方法
  • 正则化:L1 正则化(稀疏)、L2 正则化(权重衰减)
  • Dropout:深度学习中随机丢弃神经元
  • 早停 (Early Stopping):在验证集误差开始上升时停止训练
  • 数据增强:通过变换扩充训练数据

4. 偏差-方差权衡

4.1 概念定义

概念数学含义直观理解
偏差 (Bias)模型预测的期望值与真实值的差距
方差 (Variance)模型预测值的波动程度
噪声数据本身的随机性无法消除的误差下界

4.2 射击类比

高偏差+低方差        低偏差+高方差        低偏差+低方差
  (欠拟合)            (过拟合)             (理想)

    ○                   ○                   ○
  · · ·             ·       ·               ·
  · · ·               ·   ·               · · ·
  · · ·                 ·                   ·
                    ·     ·

打得很稳但偏了      对准了但太分散       又准又稳

4.3 与模型复杂度的关系

误差
  │
  │ ╲                        ╱
  │   ╲   总误差            ╱
  │     ╲____╱            ╱
  │          ╲          ╱
  │  偏差     ╲________╱   方差
  │
  └──────────────────────────→ 模型复杂度
      简单                复杂

关键洞察

  • 简单模型:高偏差、低方差 → 欠拟合
  • 复杂模型:低偏差、高方差 → 过拟合
  • 最优模型:在偏差和方差之间找到平衡点

5. 交叉验证 (Cross-Validation)

5.1 为什么需要交叉验证?

单次划分训练/测试集可能存在偶然性,交叉验证通过多次划分来获得更可靠的性能评估。

5.2 K-Fold 交叉验证

将数据分成 K 份,轮流使用每一份作为验证集:

数据分成 K=5 份:

第1轮: [验证] [训练] [训练] [训练] [训练] → 得分 85%
第2轮: [训练] [验证] [训练] [训练] [训练] → 得分 87%
第3轮: [训练] [训练] [验证] [训练] [训练] → 得分 83%
第4轮: [训练] [训练] [训练] [验证] [训练] → 得分 86%
第5轮: [训练] [训练] [训练] [训练] [验证] → 得分 84%

最终得分 = 平均值 = 85%

5.3 常用交叉验证方法

方法说明适用场景
Hold-out简单划分 70/30 或 80/20数据量大时快速评估
K-FoldK 次轮换验证通用方法,K=5 或 10
Leave-One-Out (LOO)K=N,每次只留一个样本验证数据量很小时
Stratified K-Fold保持每折中类别比例一致类别不平衡数据集
时间序列分割按时间顺序划分时间序列数据

5.4 代码示例

from sklearn.model_selection import cross_val_score, KFold
from sklearn.linear_model import LogisticRegression
 
# 创建模型
model = LogisticRegression()
 
# 5 折交叉验证
kfold = KFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(model, X, y, cv=kfold, scoring='accuracy')
 
print(f"各折得分: {scores}")
print(f"平均得分: {scores.mean():.3f} (+/- {scores.std()*2:.3f})")

6. 模型评估指标

6.1 分类问题

指标公式适用场景
准确率 (Accuracy)类别平衡时
精确率 (Precision)关注假阳性代价时
召回率 (Recall)关注假阴性代价时
F1 分数精确率和召回率的调和平均
AUC-ROCROC 曲线下面积综合评估分类器性能

6.2 回归问题

指标公式说明
MSE平均平方误差
RMSE与目标变量同量纲
MAE对异常值更鲁棒
解释方差的比例

小结

概念核心要点
机器学习从数据中自动学习规律
监督学习有标签,学习输入到输出的映射
无监督学习无标签,发现数据内在结构
强化学习通过试错和奖励信号学习最优策略
过拟合模型太复杂,泛化能力差
欠拟合模型太简单,无法捕捉规律
偏差-方差简单模型高偏差,复杂模型高方差
交叉验证多次划分验证,评估更可靠

参考资料


相关笔记