机器学习基础:从数据到模型
机器学习作为人工智能的核心分支,其根本目标是从数据中自动学习规律并做出预测或决策。本章将系统介绍机器学习的基础概念与核心流程,为后续深入探讨联邦学习奠定坚实的认知基础。我们将首先审视机器学习的基本范式——监督学习、无监督学习与强化学习——及其对应的典型任务;随后详细剖析模型训练的全流程,涵盖数据预处理、特征工程、模型选择、损失函数定义、优化算法与模型评估;最后通过一个完整的端到端示例,直观展示从原始数据到可用模型的转化过程,并着重强调数据质量与模型泛化能力在实践中的关键作用。通过本章的学习,读者将建立起对机器学习标准流程的清晰认知,从而更好地理解联邦学习如何在集中式范式的基础上进行分布式与隐私保护的革新。
机器学习的基本范式与任务
机器学习的研究对象是数据与学习算法,其核心思想是通过计算手段利用数据提升系统性能。根据数据形态、学习目标和交互方式的不同,机器学习主要分为三大范式:监督学习、无监督学习和强化学习。每种范式对应一系列典型任务,形成了丰富的应用生态。
监督学习:从带标签数据中学习映射
监督学习是机器学习中最成熟、应用最广泛的范式。其核心设定是:训练数据由成对的输入特征 $x$ 和对应的输出标签 $y$ 组成,即 $\mathcal{D} = \{(x^{(i)}, y^{(i)})\}_{i=1}^n$。学习算法的目标是找到一个从输入空间到输出空间的映射函数 $f: \mathcal{X} \rightarrow \mathcal{Y}$,使得对于新的输入 $x_{\text{new}}$,预测值 $\hat{y} = f(x_{\text{new}})$ 尽可能接近真实标签。标签 $y$ 可以是离散的类别(分类任务)或连续的数值(回归任务)。
分类任务 要求预测离散的类别标签。例如,在垃圾邮件检测中,输入是邮件文本特征(如词频),输出是二元标签“垃圾邮件”或“正常邮件”。更复杂的多分类问题如手写数字识别(MNIST数据集,10个类别)、图像物体识别(ImageNet,上千类别)。分类模型的输出通常表示为各类别的概率分布,例如逻辑回归或神经网络的最后一层使用softmax函数: $$ P(y=c|x) = \frac{e^{z_c}}{\sum_{k=1}^C e^{z_k}}, \quad \text{其中 } z = Wx + b $$ 这里 $C$ 是类别数,$z_c$ 是第 $c$ 类的未归一化得分(logit)。
回归任务 要求预测连续数值。例如,根据房屋面积、卧室数量、地理位置等特征预测房价;根据历史数据预测股票未来价格。线性回归是最基础的回归模型,假设目标值与特征间存在线性关系: $$ y = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p + \epsilon $$ 其中 $\beta$ 是待学习参数,$\epsilon$ 是误差项。模型预测为 $\hat{y} = \beta_0 + \sum_{j=1}^p \beta_j x_j$。
无监督学习:从无标签数据中发现结构
无监督学习处理的数据仅包含输入特征 $x$,没有对应的标签 $y$。其目标是探索数据的内在结构、模式或分布。主要任务包括聚类、降维和异常检测。
聚类任务 将数据划分为若干组(簇),使得同一组内的样本相似度高,不同组间相似度低。常见的聚类算法有:
- **K-means**:通过迭代更新簇中心 $ \mu_k $ 和样本分配,最小化簇内平方和 $\sum_{k=1}^K \sum_{x^{(i)} \in C_k} \| x^{(i)} - \mu_k \|^2$。
- **层次聚类**:构建树状的簇嵌套结构,可自上而下(分裂)或自下而上(合并)。
- **DBSCAN**:基于密度连接,能发现任意形状的簇并识别噪声点。
例如,在客户细分中,根据购买行为、人口统计学特征将客户分组,以制定差异化营销策略。
降维任务 将高维数据映射到低维空间,同时尽可能保留重要信息。降维可用于可视化、去除噪声和冗余、加速后续学习算法。典型方法包括:
- **主成分分析(PCA)**:线性降维,寻找正交方向(主成分)最大化数据方差。第 $k$ 个主成分是数据协方差矩阵的第 $k$ 大特征值对应的特征向量。
- **t-SNE**:非线性降维,特别擅长保留局部邻域结构,常用于高维数据可视化。
- **自编码器**:神经网络方法,通过编码器将输入压缩为低维表示,再通过解码器重建,训练目标是最小化重建误差。
强化学习:智能体与环境的交互学习
强化学习关注智能体(Agent)如何通过与动态环境(Environment)的交互来学习一系列行动(Action),以最大化长期累积奖励(Reward)。其核心要素包括状态(State)、动作、奖励函数和策略(Policy)。
形式化地,强化学习问题常建模为马尔可夫决策过程(MDP),定义为五元组 $(\mathcal{S}, \mathcal{A}, P, R, \gamma)$:
- $\mathcal{S}$:状态空间
- $\mathcal{A}$:动作空间
- $P(s'|s,a)$:状态转移概率,在状态 $s$ 执行动作 $a$ 后转移到 $s'$ 的概率
- $R(s,a,s')$:即时奖励函数
- $\gamma \in [0,1]$:折扣因子,权衡当前与未来奖励
智能体的目标是最优策略 $\pi^*(a|s)$,最大化期望累积折扣奖励 $G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots$。值函数 $V^\pi(s) = \mathbb{E}_\pi[G_t|S_t=s]$ 和 $Q^\pi(s,a) = \mathbb{E}_\pi[G_t|S_t=s, A_t=a]$ 用于评估策略优劣。经典算法包括:
- **Q-learning**:无模型算法,学习动作值函数 $Q^*(s,a)$,通过贝尔曼方程迭代更新:$Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)]$。
- **策略梯度**:直接优化策略参数 $\theta$,通过梯度上升 $\nabla_\theta J(\theta) \propto \mathbb{E}[\nabla_\theta \log \pi_\theta(a|s) Q(s,a)]$ 提升期望回报。
强化学习在游戏AI(AlphaGo)、机器人控制、自动驾驶等领域取得突破性进展。
任务关联与范式对比
三种范式并非完全割裂,实践中常结合使用。例如,深度强化学习常使用深度神经网络作为函数近似器(监督学习训练);无监督学习(如自编码器)可用于强化学习的状态表示学习。下表总结了核心范式的关键差异:
| 特征维度 | 监督学习 | 无监督学习 | 强化学习 | |:---------|:---------|:-----------|:---------| | 数据形态 | 带标签 $(x,y)$ | 无标签 $x$ | 状态-动作-奖励序列 | | 核心目标 | 学习输入到输出的映射 | 发现数据内在结构 | 学习最优交互策略 | | 反馈信号 | 直接、完整的标签 | 无外部反馈 | 延迟、稀疏的标量奖励 | | 典型应用 | 分类、回归、语音识别 | 聚类、降维、推荐系统 | 游戏、机器人、资源调度 | | 主要挑战 | 标签获取成本高、过拟合 | 评估困难、结果解释性 | 探索-利用权衡、样本效率低 |
理解这些范式为后续分析联邦学习在不同场景下的适配性提供了基础:联邦学习可支持监督学习(如联合医疗影像分类)、无监督学习(如跨机构聚类分析)和强化学习(如多智能体协同控制),但需解决分布式数据带来的异质性、通信效率与隐私保护等新挑战。
模型训练全流程详解
在明确学习范式与任务后,实际构建一个机器学习模型需遵循系统化的流程。本节将详细拆解从原始数据到可用模型的各个环节,包括数据预处理、特征工程、模型选择、损失函数定义、优化算法与模型评估。这些步骤相互关联,任何一环的疏忽都可能导致模型性能下降。
数据预处理:为模型准备“清洁燃料”
原始数据往往存在缺失、噪声、不一致等问题,直接用于训练会引入偏差或导致算法失效。数据预处理旨在将原始数据转化为适合模型学习的格式。
缺失值处理 是常见步骤。缺失可能源于采集故障、人为忽略等。处理方法包括:
- **删除**:若缺失样本很少或缺失特征不重要,可直接删除整行或整列。但需警惕删除导致的数据分布偏移。
- **统计填充**:对数值特征,常用均值、中位数、众数填充;对分类特征,用众数或“未知”类别。更高级的方法包括基于相似样本的KNN填充、模型预测填充(如用其他特征回归预测缺失值)。
- **保留缺失标记**:有时缺失本身具有信息量(如用户不愿填写收入可能暗示低收入),可创建新特征“是否缺失”来捕获此模式。
异常值检测与处理 同样关键。异常值可能是错误录入(如年龄200岁)或真实但极端的样本。检测方法包括:
- **基于统计**:假设数据服从正态分布,使用Z-score($|z|>3$视为异常)或IQR(四分位距,$[Q1-1.5\cdot IQR, Q3+1.5\cdot IQR]$之外为异常)。
- **基于距离**:计算样本间距离(如欧氏距离),远离簇中心的点为异常。
- **基于模型**:使用聚类(如DBSCAN将低密度点视为噪声)或One-Class SVM。
处理方式取决于原因:若为错误,可修正或删除;若为真实极端值,需保留但考虑对模型的影响(如使用鲁棒损失函数)。
特征缩放 是许多算法(如SVM、KNN、神经网络)的必要步骤,因为不同特征的量纲差异会导致优化困难或模型偏向量级大的特征。主要方法:
- **标准化(Standardization)**:将特征变换为均值为0、标准差为1的分布:$x' = \frac{x - \mu}{\sigma}$。适用于特征分布近似正态。
- **归一化(Normalization)**:将特征缩放到固定区间,如 $[0,1]$:$x' = \frac{x - \min(x)}{\max(x) - \min(x)}$。对存在异常值敏感,因 $\min$/$\max$ 可能被极端值主导。
- **鲁棒缩放**:使用中位数和IQR:$x' = \frac{x - \text{median}}{\text{IQR}}$,对异常值更鲁棒。
数据编码 针对分类特征。机器学习模型通常要求数值输入,因此需将类别型变量转换为数值:
- **独热编码(One-Hot Encoding)**:为每个类别创建一个新的二值特征。例如,颜色“红”“绿”“蓝”变为三列:`is_red`, `is_green`, `is_blue`。适用于名义变量(类别无序),但会导致维度爆炸(高基数特征)。
- **标签编码(Label Encoding)**:为每个类别分配一个整数(如红=0,绿=1,蓝=2)。适用于有序变量(类别有大小关系),但对无序变量可能引入虚假序关系,某些模型(如线性模型)会误解。
- **目标编码(Target Encoding)**:用该类别下目标变量的统计量(如均值)替代类别值。需谨慎防止目标泄漏,通常在交叉验证循环内进行。
特征工程:从原始数据中提炼信息
特征工程是“数据科学家的艺术”,旨在构建对预测任务更有信息量的特征,往往比模型选择对性能影响更大。它包含特征选择、特征提取和特征构造。
特征选择 旨在降低维度、减少过拟合、加速训练、提升可解释性。方法分为三类:
- **过滤法(Filter)**:独立于模型,根据特征与目标的相关性评分排序选择。如方差阈值(删除方差接近0的特征)、相关系数(计算特征与目标的皮尔逊相关系数)、卡方检验(分类任务)、互信息。
- **包裹法(Wrapper)**:将特征选择视为搜索问题,使用特定模型评估特征子集性能。如前向选择、后向消除、递归特征消除(RFE)。计算成本高但可能更优。
- **嵌入法(Embedded)**:特征选择内嵌在模型训练过程中。如LASSO($L_1$正则化线性回归,系数为0的特征被排除)、决策树特征重要性(基于不纯度减少)、随机森林。
特征提取 将原始特征变换为更少但更富信息的新特征。经典方法包括:
- **PCA**:线性变换,主成分是原始特征的线性组合,按方差降序排列。选择前 $k$ 个主成分保留大部分方差。
- **线性判别分析(LDA)**:有监督降维,寻找最大化类间散度、最小化类内散度的投影方向。
- **自动编码器**:神经网络实现非线性降维,编码器输出隐层表示作为新特征。
特征构造 基于领域知识创建新特征。例如:
- 从日期提取“是否周末”“季度”。
- 从地址提取“城市”“邮编区域”。
- 数值特征的多项式扩展($x^2, x^3$)或交互项($x_1 \times x_2$)。
- 文本特征:词频(TF)、逆文档频率(IDF)、TF-IDF;n-gram(短语)。
模型选择:权衡复杂度与泛化能力
模型选择需在模型复杂度、训练数据规模、任务特性间权衡。没有“放之四海而皆准”的最佳模型,需通过实验确定。
线性模型 形式简单、可解释性强、训练高效,是良好的基线模型。
- **线性回归**:用于回归,最小化残差平方和。易受异常值和多重共线性影响。
- **逻辑回归**:用于分类,通过sigmoid函数将线性组合映射为概率:$P(y=1|x) = \frac{1}{1+e^{-(w^Tx+b)}}$。本质是线性分类器,但可扩展为多项式特征实现非线性。
- **正则化线性模型**:在损失函数加入惩罚项防止过拟合。
- **岭回归(Ridge, $L_2$正则化)**:损失 $J(w) = \sum (y^{(i)} - w^Tx^{(i)})^2 + \lambda \|w\|_2^2$。系数收缩但不为0。
- **Lasso($L_1$正则化)**:损失 $J(w) = \sum (y^{(i)} - w^Tx^{(i)})^2 + \lambda \|w\|_1$。产生稀疏解,自动进行特征选择。
- **弹性网络(Elastic Net)**:$L_1$ 与 $L_2$ 组合。
决策树 通过递归分割特征空间进行预测,直观易懂,可处理数值和类别特征,无需缩放,能自动进行特征交互。但容易过拟合,需剪枝。常用算法有ID3(信息增益)、C4.5(增益率)、CART(基尼不纯度或均方误差)。集成方法如随机森林(bagging)和梯度提升树(boosting)显著提升性能,是结构化数据竞赛的常胜将军。
支持向量机(SVM) 寻找最大化分类间隔的超平面。通过核技巧(kernel trick)可处理非线性问题,将数据映射到高维空间。常用核函数:线性核、多项式核、径向基函数(RBF)核。SVM在小样本、高维问题表现好,但大规模数据训练慢,核选择敏感。
神经网络 由多层神经元组成,能拟合复杂非线性函数。深度神经网络(DNN)在图像、语音、自然语言处理领域取得革命性成功。核心组件:
- **全连接层**:$z = Wx + b$,$a = \sigma(z)$,$\sigma$ 为激活函数(ReLU、sigmoid、tanh)。
- **卷积层**:利用局部连接和权值共享,高效提取图像空间特征。
- **循环层(RNN/LSTM/GRU)**:处理序列数据,具有记忆能力。
- **注意力机制**:让模型聚焦于输入相关部分,Transformer的核心。
神经网络容量(层数、神经元数)大,需要大量数据与正则化(Dropout、批归一化、权重衰减)防止过拟合,训练计算成本高。
损失函数:量化预测误差
损失函数 $\mathcal{L}(y, \hat{y})$ 衡量模型预测 $\hat{y}$ 与真实值 $y$ 的差异,是优化目标的基础。不同任务使用不同损失。
回归任务常用损失:
- **均方误差(MSE)**:$\mathcal{L} = \frac{1}{n} \sum_{i=1}^n (y^{(i)} - \hat{y}^{(i)})^2$。对异常值敏感,数学性质好(可导、凸)。
- **平均绝对误差(MAE)**:$\mathcal{L} = \frac{1}{n} \sum_{i=1}^n |y^{(i)} - \hat{y}^{(i)}|$。对异常值更鲁棒,但梯度在零点不连续,优化稍复杂。
- **Huber损失**:MSE与MAE的平滑结合,当误差小于 $\delta$ 时用平方,否则用线性:$\mathcal{L}_\delta(y,\hat{y}) = \begin{cases} \frac{1}{2}(y-\hat{y})^2 & \text{for } |y-\hat{y}| \leq \delta \\ \delta |y-\hat{y}| - \frac{1}{2}\delta^2 & \text{otherwise} \end{cases}$。
分类任务常用损失:
- **0-1损失**:$\mathcal{L} = \frac{1}{n} \sum \mathbb{1}(\hat{y} \neq y)$。直接对应分类错误率,但不可导,无法直接梯度优化。
- **对数损失(交叉熵损失)**:对二分类,$\mathcal{L} = -\frac{1}{n} \sum [y^{(i)} \log \hat{p}^{(i)} + (1-y^{(i)}) \log (1-\hat{p}^{(i)])$,其中 $\hat{p}$ 是预测为正类的概率。对多分类,$\mathcal{L} = -\frac{1}{n} \sum_{i=1}^n \sum_{c=1}^C y_c^{(i)} \log \hat{p}_c^{(i)}$,$y_c$ 为one-hot标签。交叉熵源于最大似然估计,梯度形式良好,是分类任务的标准损失。
- **Hinge损失**:用于SVM,$\mathcal{L} = \max(0, 1 - y \cdot f(x))$,其中 $y \in \{-1,1\}$,$f(x)$ 是决策函数值。鼓励正确分类且间隔大于1。
多任务学习 可能组合多个损失,如 $\mathcal{L} = \alpha \mathcal{L}_{\text{cls}} + \beta \mathcal{L}_{\text{reg}}$,权重 $\alpha,\beta$ 需调整。
优化算法:寻找最优模型参数
给定损失函数,优化算法通过迭代调整模型参数 $\th