Skip to main content

机器学习

机器学习的四大范式

1. 监督学习 (Supervised Learning)

核心思想:从“有标签”的数据中学习,模型的目标是学习一个从输入特征到已知标签的映射函数。

  • 数据形式: 数据集由成对的 (X, y) 组成。
    • X: 输入特征 (Features)。
    • y: 对应的正确答案或目标标签 (Label)。
  • 目标: 学习一个映射函数 f,使得 y = f(X)。当有新的、未见过的数据 X_new 输入时,模型能够准确预测出其对应的标签 y_new

工作流程

  1. 数据收集与准备:收集大量的、带有清晰标签的训练数据。
  2. 模型选择:根据问题类型(分类或回归)选择合适的算法模型。
  3. 模型训练:将训练数据“喂”给模型。模型通过调整内部参数,使其预测结果尽可能接近真实标签。
    • 损失函数 (Loss Function): 用来衡量预测值与真实值之间的差异。
    • 优化算法 (Optimizer): 如梯度下降,用于调整模型参数以最小化损失函数。
  4. 模型评估:使用一部分未参与训练的测试数据来评估模型的性能,检验其泛化能力
  5. 模型部署:将训练好的模型集成到实际应用中进行预测任务。

主要任务类型

分类 (Classification)

预测输入数据属于哪个预定义的类别(离散值)。

  • 常见算法:
    • 逻辑回归 (Logistic Regression)
    • 支持向量机 (SVM)
    • 决策树 (Decision Trees) & 随机森林 (Random Forest)
    • K-近邻 (KNN)
    • 朴素贝叶斯 (Naive Bayes)
    • 神经网络 (Neural Networks)

回归 (Regression)

预测一个连续的数值输出。

  • 常见算法:
    • 线性回归 (Linear Regression)
    • 多项式回归 (Polynomial Regression)
    • 岭回归 (Ridge Regression) & Lasso 回归
    • 支持向量回归 (SVR)
    • 决策树回归
    • 神经网络 (Neural Networks)

2. 无监督学习 (Unsupervised Learning)

核心思想:从“无标签”的数据中学习,模型需要自己去发现数据中潜在的结构、模式、关系或异常。

  • 数据形式: 只有输入数据 X,没有对应的标签 y
  • 目标: 理解数据本身,而不是预测某个特定输出。例如,对数据进行分组、简化或发现其中的规律。

工作流程

  1. 数据收集与准备:收集大量未标注的数据。
  2. 模型选择:根据希望从数据中发现什么(如聚类、降维)来选择合适的算法。
  3. 模型训练/运行:将数据输入模型,模型根据其算法逻辑自动对数据进行处理。
  4. 结果解释与评估:评估通常更主观,或依赖于一些间接指标(如簇内相似度、降维后的信息保留度等)。

主要任务类型

聚类 (Clustering)

将数据分成若干个组(簇),使得同一组内的数据点相似,不同组之间的数据点相异。

  • 常见算法: K-均值 (K-Means), 层次聚类 (Hierarchical Clustering), DBSCAN, 高斯混合模型 (GMM)。

降维 (Dimensionality Reduction)

在保留数据主要信息的前提下,减少数据的特征数量(维度)。

  • 作用:
    • 解决“维度灾难”问题。
    • 数据可视化。
    • 提高后续模型训练效率。
    • 去除数据噪声。
  • 常见算法: 主成分分析 (PCA), t-SNE, 线性判别分析 (LDA), 奇异值分解 (SVD)。

关联规则学习 (Association Rule Learning)

发现数据项之间的有趣关系,通常形式为“如果A出现,那么B也可能出现”。

  • 常见算法: Apriori, FP-Growth。

异常检测 (Anomaly Detection)

识别出与数据集中大部分数据显著不同的异常点或离群点。

  • 常见算法: 基于统计的方法, 孤立森林 (Isolation Forest), One-Class SVM。

3. 半监督学习 (Semi-supervised Learning)

核心思想:结合并利用少量有标签数据大量无标签数据进行学习,以期获得比单独使用任何一种数据更好的性能。

  • 数据形式:
    • 一小部分有标签数据: (X_labeled, y_labeled)
    • 大量无标签数据: X_unlabeled
  • 目标: 学习一个映射函数 f,本质上是希望无标签数据中蕴含的分布信息能帮助改进仅由有标签数据训练得到的模型。

工作流程

  1. 数据收集与准备:收集少量有标签数据和大量无标签数据。
  2. 建立核心假设:半监督学习的成功依赖于一些关键假设,如:
    • 平滑性/聚类假设:相似的数据点应有相似的标签。
    • 低密度分离假设:决策边界应穿过数据密度低的区域。
    • 流形假设:高维数据实际分布在一个低维流形上。
  3. 模型选择与训练:选择合适的半监督算法,训练过程同时利用有标签数据进行指导,并从无标签数据中提取结构信息。
  4. 模型评估:通常使用一个独立的、有标签的测试集进行评估。
  5. 模型部署:将训练好的模型用于新的预测任务。

4. 强化学习 (Reinforcement Learning - RL)

核心思想智能体 (Agent) 通过与环境 (Environment) 的交互来试错学习,其目标是找到一个最优策略 (Policy),以最大化长期累积的奖励 (Cumulative Reward)

  • 数据形式: 数据并非预先给定,而是在交互中动态产生的经验序列,通常是 (状态, 动作, 奖励, 下一状态) 的元组,即 (S_t, A_t, R_{t+1}, S_{t+1})
  • 目标: 学习一个策略 π(a|s)(在状态 s 下选择动作 a 的规则),使得从任意初始状态开始,遵循该策略所能获得的期望累积奖励最大化。

工作流程(学习循环)

  1. 定义环境与智能体:明确状态空间、动作空间和奖励函数。
  2. 交互与学习循环: a. 智能体观察当前环境的状态 S_t。 b. 智能体根据其当前策略 π 选择并执行一个动作 A_t。 c. 环境根据动作转换到新的状态 S_{t+1},并给予智能体一个即时奖励 R_{t+1}。 d. 智能体利用这条经验 (S_t, A_t, R_{t+1}, S_{t+1}) 来更新其策略。
  3. 迭代优化:重复步骤 2,直到策略收敛或达到预设的训练目标。
  4. 策略评估与使用:评估学习到的最终策略在实际任务中的表现。

主要方法类别

  • 基于价值 (Value-based): 学习评估状态或状态-动作对的价值有多大。
    • 例如: Q-learning, DQN
  • 基于策略 (Policy-based): 直接学习从状态到动作的映射策略。
    • 例如: REINFORCE, A2C, PPO
  • 行动者-评论家 (Actor-Critic): 结合前两者,Actor (行动者) 负责选择动作,Critic (评论家) 负责评估动作的好坏。
    • 例如: A2C, DDPG, SAC
  • 基于模型 (Model-based): 学习环境的动态模型,然后利用该模型进行规划。

重要概念

1. 过拟合 (Overfitting) 与 欠拟合 (Underfitting)

这两个概念描述了模型在训练数据和新数据(测试数据)上表现的差异情况。

  • 欠拟合 (Underfitting):

    • 现象: 模型在训练数据上表现就很差,同时在测试数据上表现也很差
    • 通俗解释: 就像一个学生上课根本没听讲,对知识点一知半解,所以无论是做练习题(训练数据)还是期末考试(测试数据),成绩都很糟糕。
    • 原因:
      • 模型过于简单(比如用线性模型去拟合非线性数据)。
      • 特征选择不足,没有包含足够的信息。
      • 训练不充分(比如训练迭代次数太少)。
    • 解决方法:
      • 尝试更复杂的模型。
      • 增加更多有用的特征。
      • 增加训练时长或调整学习率。
      • 减少正则化强度(后面会讲到正则化)。
  • 过拟合 (Overfitting):

    • 现象: 模型在训练数据上表现非常好(甚至完美),但在未见过的测试数据上表现很差
    • 通俗解释: 就像一个学生只会死记硬背练习册上的题目和答案(训练数据),所以练习题做得非常好。但一旦到了期末考试(测试数据),题目稍微变通一下,他就不会了,成绩一塌糊涂。他没有学到知识的本质,只是记住了训练样本的“噪声”和特例。
    • 原因:
      • 模型过于复杂(比如用了高阶多项式去拟合简单数据,或者神经网络层数过多、神经元过多)。
      • 训练数据量太少,不足以支撑复杂模型的学习。
      • 训练数据中噪声较多,模型把噪声也学进去了。
      • 训练时间过长,模型过度“优化”于训练数据。
    • 解决方法:
      • 获取更多训练数据: 这是最有效的方法之一。
      • 使用更简单的模型。
      • 特征选择/降维: 去除不相关或冗余的特征。
      • 正则化 (Regularization): 见下文。
      • 交叉验证 (Cross-validation): 见下文,用于评估和选择模型。
      • 早停 (Early Stopping): 在验证集上性能不再提升时停止训练。
      • Dropout (针对神经网络): 训练时随机丢弃一些神经元。
  • 理想情况 (Good Fit): 模型在训练数据和测试数据上都表现良好,能够很好地泛化到新数据。


2. 偏差 (Bias) 与 方差 (Variance)

这两个概念是用来分析模型学习能力和泛化误差来源的。模型的总误差可以大致分解为偏差的平方、方差和不可避免的噪声。

  • 偏差 (Bias):

    • 含义: 模型预测值的期望与真实值之间的差距。衡量了模型的拟合能力
    • 高偏差: 通常意味着模型过于简单,无法捕捉数据的真实规律(对应欠拟合)。模型对训练数据的假设过于强烈,导致系统性的错误。
    • 通俗解释: 就像一个射手,他的枪本身瞄准镜就是歪的,无论他射多少次,子弹都会系统性地偏离靶心。
  • 方差 (Variance):

    • 含义: 模型在不同训练数据集上(从同一分布中采样)预测结果的变异程度。衡量了模型对训练数据中随机噪声的敏感度
    • 高方差: 通常意味着模型过于复杂,对训练数据中的微小波动(包括噪声)都非常敏感,导致模型在不同训练集上学到的结果差异很大(对应过拟合)。
    • 通俗解释: 就像一个射手,他的手非常不稳,虽然平均来看可能瞄准了靶心,但每次射击都晃动得厉害,导致子弹散布得很开。
  • 偏差-方差权衡 (Bias-Variance Trade-off):

    • 这是一个核心概念:通常情况下,降低偏差会倾向于增加方差,反之亦然。
    • 简单模型: 低方差,高偏差(不容易受数据波动影响,但可能学不到复杂规律)。
    • 复杂模型: 高方差,低偏差(能学到复杂规律,但容易受数据波动影响,拟合噪声)。
    • 目标: 找到一个平衡点,使得总误差(偏差的平方 + 方差)最小。
    欠拟合  <--->  高偏差, 低方差
    过拟合  <--->  低偏差, 高方差
    理想模型 <--->  低偏差, 低方差 (这是最理想的,但通常很难同时达到最低)
    

3. 正则化 (Regularization)

正则化是一种用于防止过拟合降低模型复杂度的技术。它通过在模型的损失函数(或目标函数)中添加一个“惩罚项”来实现。

  • 核心思想: 惩罚那些具有较大参数值(权重)的模型。因为通常认为,参数值较大的模型更复杂,更容易过拟合,对输入数据的微小变化更敏感。

  • 如何工作: 原始损失函数:Loss = Error(data, model) 正则化后的损失函数:Loss_regularized = Error(data, model) + λ * Penalty(model_weights)

    • Error(data, model):模型在训练数据上的误差(如均方误差、交叉熵)。
    • Penalty(model_weights):对模型权重的惩罚项。
    • λ (lambda):正则化参数(也叫正则化强度)。它控制了惩罚项在总损失中的比重。
      • λ 越大,惩罚越重,模型参数越趋向于变小,模型越简单。
      • λ 越小,惩罚越轻,模型越接近于没有正则化的情况。
  • 常见的正则化方法:

    • L1 正则化 (Lasso Regression):
      • 惩罚项是模型权重绝对值之和:Penalty = Σ|w_i|
      • 特点: 倾向于产生稀疏权重,即很多权重会变成0。这可以用于特征选择,因为权重为0的特征对模型没有贡献。
    • L2 正则化 (Ridge Regression / 权重衰减 Weight Decay):
      • 惩罚项是模型权重平方和的一半(或不除以2):Penalty = Σ(w_i)^2
      • 特点: 倾向于使所有权重都变小,但不会使它们精确地变为0(除非原始权重就很接近0)。它使得权重分布更平滑。
    • Elastic Net 正则化: L1 和 L2 正则化的结合。
  • 效果: 通过限制模型参数的大小,正则化使得模型在拟合训练数据的同时,也保持了相对的简单性,从而提高了在新数据上的泛化能力。


4. 交叉验证 (Cross-Validation)

交叉验证是一种评估模型性能进行模型选择的统计学方法,它能更可靠地估计模型在未见过数据上的表现,并帮助防止过拟合。

  • 为什么需要交叉验证?

    • 如果我们只用一个固定的训练集和测试集,模型的评估结果可能会受到这个特定划分的影响(运气成分)。
    • 如果在模型选择或超参数调整时,反复使用同一个测试集,那么测试集的信息实际上已经“泄露”到了模型选择过程中,导致对测试集性能的估计过于乐观,模型可能对这个“特定”的测试集过拟合。
  • 基本思想: 将原始数据集多次分割成训练集和验证集(或测试集),在不同的分割上训练和评估模型,然后对多次评估结果进行平均,得到一个更稳健的性能度量。

  • 常见的交叉验证方法:

    • K折交叉验证 (K-Fold Cross-Validation):
      1. 将原始数据集随机分成 K 个大小相似的、互不相交的子集(称为“折”)。
      2. 进行 K 次迭代:
        • 在每次迭代中,选择其中 1 折作为验证集(或测试集)。
        • 其余 K-1 折作为训练集。
        • 在训练集上训练模型,并在验证集上评估模型性能。
      3. 将 K 次迭代得到的性能指标(如准确率、MSE)进行平均,作为模型最终的性能估计。
      • 常用 K 值: 5 或 10。
    • 留一交叉验证 (Leave-One-Out Cross-Validation - LOOCV):
      • K折交叉验证的特例,其中 K 等于样本数量 N。
      • 每次迭代中,只留下一个样本作为验证集,其余 N-1 个样本作为训练集。重复 N 次。
      • 优点: 评估结果偏差小,几乎利用了所有数据进行训练。
      • 缺点: 计算成本非常高,尤其当 N 很大时。方差可能较大。
    • 分层K折交叉验证 (Stratified K-Fold Cross-Validation):
      • 在分类问题中常用,尤其当类别分布不均衡时。
      • 它在划分每一折时,会保持原始数据集中各个类别的比例与每一折中的类别比例大致相同。
  • 用途:

    • 模型评估: 更可靠地估计模型在未知数据上的泛化能力。
    • 模型选择: 比较不同模型(如SVM vs. 决策树)在同一数据集上的表现。
    • 超参数调优: 为模型选择最佳的超参数组合(如正则化参数 λ、学习率等)。例如,对于每个超参数组合,都进行一次K折交叉验证,选择平均性能最好的那个组合。

总结它们的关系:

  • 我们希望模型有好的泛化能力,避免欠拟合过拟合
  • 偏差方差帮助我们理解模型误差的来源,并指导我们如何调整模型复杂度来平衡它们。
  • 正则化是一种具体的技术,通过惩罚复杂模型来降低方差,从而防止过拟合。
  • 交叉验证是一种评估框架,它帮助我们更可靠地估计模型的泛化性能,并用于模型选择和超参数调整,从而帮助我们找到那个在偏差和方差之间取得良好平衡、不容易过拟合的模型。

理解这些概念对于构建、评估和优化机器学习模型至关重要。