菜单

机器学习基础

相关源文件

目的与范围

本文档全面概述了构成深度学习基础的核心机器学习概念。内容涵盖学习范式、监督学习过程、优化技术、评估方法和核心算法。关于深度学习基础,请参阅深度学习基础,关于经典网络架构,请参阅经典神经网络架构

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md5-9

理解机器学习的本质

机器学习使计算机能够从数据中学习模式。它涉及设计从数据中提取规律或模式的算法。当输入数据带有标签时,称为监督学习;当数据没有标签时,称为无监督学习。目标是开发模型,使其能够在没有为特定任务进行显式编程的情况下做出准确的预测或决策。

机器学习是深度学习的基础,两者共享核心原则,但在方法和复杂性上有所不同。

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md9-11

学习范式

根据训练期间提供的数据类型和监督程度,机器学习通常分为四种主要的学习范式。

学习范式分类

监督学习

  1. 定义:使用带有已知正确答案(标签)的示例来训练模型
  2. 目的:通过预测模型将输入数据映射到已知标签
  3. 应用:分类和回归任务
  4. 常见算法:支持向量机 (SVM)、朴素贝叶斯、逻辑回归、K-近邻 (KNN)、决策树、随机森林、AdaBoost、线性判别分析 (LDA)

无监督学习

  1. 定义:处理无标签数据,系统必须在没有明确指导的情况下推断模式
  2. 目的:发现数据内部结构
  3. 应用:聚类和关联规则学习
  4. 常见算法:K-Means、Apriori 算法

半监督学习

  1. 定义:处理部分带标签的数据(部分有标签,大部分无标签)
  2. 目的:利用有标签和无标签数据进行预测
  3. 应用:标签成本高昂的分类和回归
  4. 常见算法:图推理、拉普拉斯 SVM

弱监督学习

  1. 定义:使用不精确、不完整或不可靠的标签的数据
  2. 目的:将带有弱标签的输入数据映射到更强、更完整的标签
  3. 特征:处理可能不正确、多个、不足或部分不确定的标签

多示例学习 (MIL)

  1. 定义:处理带标签的实例包,而不是单个带标签的实例
  2. 目的:将数据包映射到标签,可能确定包内的哪些实例与包级别标签匹配
  3. 示例用例:视频分类,其中单个标签适用于整个视频,但只有特定帧包含相关内容

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md30-56

监督学习过程

监督学习遵循从数据收集到模型部署的系统化工作流程。下图说明了此过程。

步骤 1:数据集创建和分类

收集相关数据并为监督学习识别标签。将数据集划分为训练集、验证集和测试集。

步骤 2:数据增强

增强数据集以更好地表示各种场景并提高模型鲁棒性。对于图像,这通常包括旋转、平移、颜色变换和仿射变换。

步骤 3:特征工程

从原始数据中提取和选择相关特征。传统方法包括尺度不变特征变换 (SIFT) 和方向梯度直方图 (HOG)。卷积神经网络 (CNN) 等深度学习方法会自动执行特征提取。

步骤 4:构建预测模型和损失函数

定义模型架构和适当的损失函数。常见的损失函数包括用于分类的交叉熵和用于回归的均方误差。

步骤 5:训练

初始化模型参数并使用梯度下降等方法进行优化。模型通过最小化损失函数来迭代学习模式。

步骤 6:验证和模型选择

在验证数据上测试训练好的模型以评估性能。根据需要调整超参数以改进结果。

步骤 7:测试和应用

将最终模型部署到实际应用中,通常作为可被其他软件组件调用的 API。

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md59-81

分类算法

分类是一种监督学习任务,其目标是将输入数据归类到预定义的类别中。该存储库涵盖了几个关键的分类算法,每种算法都有其独特的优点和缺点。

常见分类算法比较

算法优点缺点
朴素贝叶斯• 需要的参数少
• 对缺失数据不敏感
• 分类效率稳定
• 假设属性独立
• 需要先验概率知识
• 具有固有错误率
决策树• 不需要领域知识
• 处理高维数据
• 简单且易于理解
• 处理分类和数值数据
• 倾向于值更多的特征
• 容易过拟合
• 忽略属性相关性
• 不支持在线学习
支持向量机 (SVM)• 对小样本有效
• 泛化能力好
• 处理高维、非线性问题
• 避免局部最小值问题
• 对缺失数据敏感
• 内存占用高
• 难以解释
• 参数调整复杂
K-近邻 (KNN)• 实现简单
• 对数据无假设
• 非线性分类
• 对异常值不敏感
• 计算量大
• 对类别不平衡效果差
• 内存需求高
• 可解释性有限
逻辑回归• 性能快
• 简单且易于理解
• 模型易于更新
• 分类阈值灵活
• 特征处理复杂
• 需要标准化
• 假设特征与目标之间存在线性关系
神经网络• 分类精度高
• 并行处理能力
• 分布式学习
• 噪声鲁棒性强
• 需要配置的参数多
• 黑盒(可解释性有限)
• 训练时间长
AdaBoost• 精度高
• 子分类器构建灵活
• 弱分类器设计简单
• 无需特征筛选
• 抗过拟合
• 对异常值敏感

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md114-129

评估分类算法

分类模型使用从混淆矩阵得出的几个指标进行评估

常用评估指标

  1. 准确率:正确分类的样本比例 - (TP+TN)/(P+N)
  2. 错误率:误分类的样本比例 - (FP+FN)/(P+N)
  3. 敏感性/召回率:实际阳性中正确识别的比例 - TP/P
  4. 特异度:实际阴性中正确识别的比例 - TN/N
  5. 精确率:预测为阳性且正确的比例 - TP/(TP+FP)
  6. F1 分数:精确率和召回率的调和平均数 - 2×(精确率×召回率)/(精确率+召回率)

其他评估因素包括计算速度、对缺失值和异常值的鲁棒性、大规模数据集的可扩展性以及模型的可解释性。

ROC和PR曲线

  • ROC 曲线:绘制敏感性(真阳性率)与 1-特异度(假阳性率)的图。更好的模型曲线更接近左上角。
  • PR 曲线:绘制精确率与召回率的图。此曲线下的面积是平均精度 (AP)。

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md131-191

成本函数与损失函数

成本函数和损失函数是机器学习的关键组成部分,它们衡量模型的性能。

成本函数与损失函数的关系

成本函数

成本函数(或目标函数)衡量模型在训练数据上的整体性能。它通常是所有训练样本的损失函数的平均值。目标是最小化此函数以找到最优模型参数。

常见成本函数

  1. 二次成本:

    • 公式:J = (1/2n)∑‖y(x)-a^L(x)‖²
    • 适用于:线性输出神经元
    • 特征:学习速度取决于激活函数的梯度
  2. 交叉熵成本:

    • 公式:J = -(1/n)∑[y ln(a) + (1-y)ln(1-a)]
    • 适用于:Sigmoid 激活函数
    • 优势:学习速度与误差大小成正比
  3. 对数似然成本:

    • 常用于:Softmax 回归
    • 关系:对于二元分类,它会简化为交叉熵

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md270-356

损失函数

损失函数衡量单个样本的预测值与实际值之间的差异。它们量化了模型预测的“错误”程度。

常见损失函数

  1. 0-1 损失:

    • 如果预测与目标不匹配,则返回 1,如果匹配,则返回 0
    • 可以使用阈值放宽:L(Y,f(x)) = 1 如果 |Y-f(x)| ≥ T,否则为 0
  2. 绝对损失:

    • L(Y,f(x)) = |Y-f(x)|
    • 衡量预测值与实际值之间的绝对差值
  3. 平方损失:

    • L(Y,f(x)) = (Y-f(x))²
    • 基于欧几里得距离原理
  4. 对数损失:

    • L(Y,P(Y|X)) = -log(P(Y|X))
    • 用于逻辑回归
  5. 指数损失:

    • L(Y,f(x)) = exp(-Y·f(x))
    • 用于 AdaBoost
  6. Hinge损失:

    • L(Y) = max(0, 1-T·y)
    • 用于支持向量机

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md372-461

优化技术

优化算法是用于最小化成本函数并找到最优模型参数的方法。

梯度下降变体

梯度下降方法比较

方法训练集每次迭代样本数复杂性时效性收敛性
批量梯度下降固定整个数据集稳定
随机梯度下降固定单个样本中等不稳定
小批量梯度下降固定子集中等中等稳定
在线梯度下降实时可变不稳定

梯度下降过程

  1. 初始化:设置参数和学习率的初始值
  2. 梯度计算:计算成本函数相对于每个参数的梯度
  3. 参数更新:沿梯度负方向调整参数
  4. 收敛检查:确定参数的变化是否低于阈值
  5. 迭代:重复步骤 2-4,直到收敛或达到最大迭代次数

优化挑战

  1. 局部与全局优化:基于梯度的方法可能收敛到局部最小值,而不是全局最小值
  2. 学习率选择:过大可能导致超调,过小导致收敛缓慢
  3. 参数初始化:不同的起始点可能导致不同的解决方案
  4. 特征缩放:标准化有助于更快地收敛

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md549-736

线性判别分析 (LDA)

线性判别分析是一种专门为监督分类问题设计的降维技术。

LDA 核心概念

LDA 算法流程

  1. 计算类内散度矩阵 Sw (协方差矩阵之和)
  2. 计算类间散度矩阵 Sb
  3. 计算矩阵 Sw⁻¹Sb
  4. 找到 Sw⁻¹Sb 的特征值和特征向量
  5. 选择前 d 个特征向量(用于 d 维投影)
  6. 用这些特征向量形成投影矩阵 W
  7. 将数据点投影到新空间:p = W^T x

LDA 与 PCA 比较

方面LDAPCA
监督性监督(使用类别标签)无监督
目标最大化类别分离最大化数据方差
局限性最大 k-1 维(k 个类别)无理论维度限制
用途降维和分类仅降维
分布假设假设高斯分布假设高斯分布

LDA 的优缺点

优点

  • 利用类别信息进行更有意义的投影
  • 直接优化分类性能
  • 生成可解释的特征,最大化类别可分性

缺点

  • 限制在 k-1 维(k 为类别数)
  • 假设数据呈高斯分布
  • 不适用于非线性可分数据
  • 需要每类有足够样本才能准确估计协方差

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md773-860

回归算法

回归是一种用于预测连续结果的监督学习技术。分类预测离散类别标签,而回归则预测数值。

回归类型

  1. 线性回归:使用线性函数对关系进行建模

    • 简单:一个自变量
    • 多元:多个自变量
  2. 逻辑回归:尽管有此名称,但用于二元分类

    • 使用 Sigmoid 函数将输入映射到 0 到 1 之间的概率
    • 决策边界:θ^T x = 0

逻辑回归与线性回归的比较

方面线性回归逻辑回归
目的预测分类
输出范围(-∞, +∞)(0, 1)
功能拟合函数预测概率函数
参数估计最小二乘法最大似然估计

逻辑回归的应用

  1. 概率预测:估算结果的概率
  2. 分类:为类别分配设置概率阈值
  3. 风险因素识别:识别与结果相关的特征
  4. 仅限线性问题:需要特征与目标之间存在线性关系
  5. 特征独立性:特征不必独立,但贡献是独立计算的

来源: English version/ch02_MachineLearningFoundation/Chapter 2_TheBasisOfMachineLearning.md203-263