第1章 数据表示模式 (Data Representation Patterns)
一、导读
1.1 本章学习目标
理解数据表示在机器学习系统中的核心地位及其对模型性能的根本性影响
掌握特征工程的基本原则和系统化方法论
深入理解数值型、分类型、文本型和图像型数据的表示方法
掌握特征缩放、编码和变换的常用技术及其适用场景
了解嵌入(Embedding)技术的原理和在深度学习中的应用
理解特征选择和特征提取的区别与联系
掌握处理缺失值、异常值和多共线性等数据质量问题的方法
能够针对具体机器学习任务设计合理的数据表示方案
1.2 为什么本章如此重要
数据表示是机器学习系统的基石,直接决定了模型性能的上限。业界有句名言:"数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。"这句话深刻揭示了数据表示在机器学习中的核心地位。
无论使用多么先进的模型架构,如果输入数据的表示质量低下,模型也无法学到有意义的模式。相反,精心设计的特征表示即使在简单模型上也能取得出色的效果。这一现象在机器学习实践中反复得到验证。
数据表示的重要性体现在多个层面。在基础层面,特征缩放和编码方式直接影响优化算法的收敛速度和稳定性。在中间层面,特征工程的质量决定了模型能否捕获数据中的关键模式。在高级层面,嵌入表示的质量决定了深度学习模型的理解和泛化能力。
随着深度学习的发展,自动特征学习(表示学习)取得了巨大成功,但这并不意味着传统特征工程已经过时。在许多场景中,领域知识驱动的特征工程仍然是提升模型效果的关键手段。理解数据表示的基本原理,是将领域知识有效融入机器学习系统的桥梁。
本章将系统介绍数据表示的各种模式,从基础的数值处理到高级的嵌入技术,帮助读者建立完整的数据表示知识体系。
1.3 核心问题引导
为什么数据表示对机器学习如此重要?好的数据表示应该满足什么条件?
不同类型的特征(数值、分类、文本)应该如何进行表示?
特征缩放为什么重要?不同的缩放方法适用于什么场景?
如何处理高基数分类变量?One-hot 编码有什么局限性?
嵌入表示相比 One-hot 编码有什么优势?如何学习高质量的嵌入?
特征选择和特征提取有什么区别?各自适用于什么场景?
缺失值和异常值应该如何处理?不同处理策略对模型有什么影响?
如何评估数据表示的质量?有哪些诊断方法?
二、核心概念详解
概念一:特征工程的基本原则
特征工程(Feature Engineering)是将原始数据转化为适合机器学习模型输入的特征表示的过程。它是机器学习工作流中最耗时但也最重要的环节之一。
特征工程的基本原则包括:
领域知识驱动:最有效的特征往往来源于对问题的深入理解。例如,在房价预测中,"每平米价格"比"总价"更有预测力;在信用评分中,"负债收入比"比"收入"和"负债"单独使用更有效。领域知识指导我们创造这类衍生特征。
特征与目标的相关性:好的特征应该与目标变量有较强的相关性。可以通过统计检验(如卡方检验、互信息)来评估特征与目标的相关程度。但注意,相关性不等于因果性,高相关性特征也可能引入偏差。
特征之间的独立性:高度相关的特征(多重共线性)会导致模型不稳定,特别是对于线性模型。需要通过特征选择或降维来消除冗余特征。
特征的尺度一致性:不同特征的量纲和尺度可能差异巨大。例如,年龄的范围是 0-100,而年收入的范围可能是 0-1000000。尺度不一致会导致某些模型(如基于距离的模型、梯度下降优化)偏向大尺度特征。
特征的稀疏性与密集性:稀疏特征(如 One-hot 编码后的高维分类变量)适合线性模型和树模型,但可能不适合基于距离的模型。密集特征(如嵌入向量)适合深度学习和神经网络。
概念二:数值型特征处理
数值型特征的处理是特征工程的基础环节,包括缩放、变换和离散化等操作。
特征缩放(Feature Scaling):
标准化(Standardization):x' = (x - μ) / σ,将特征转化为均值为 0、标准差为 1 的分布。适用于假设数据服从正态分布的模型(如线性回归、逻辑回归、LDA)。
归一化(Normalization):x' = (x - min) / (max - min),将特征缩放到 [0, 1] 区间。适用于对输入范围敏感的模型(如神经网络、KNN)。
鲁棒缩放(Robust Scaling):使用中位数和四分位距进行缩放,对异常值具有鲁棒性。适用于包含异常值的数据集。
特征变换:
对数变换:x' = log(x + 1),用于处理右偏分布的特征。对数变换可以压缩大值、扩展小值,使分布更接近正态分布。
Box-Cox 变换:一种参数化的幂变换方法,通过优化变换参数来使数据最接近正态分布。
Yeo-Johnson 变换:Box-Cox 的扩展,支持负值数据。
特征离散化:将连续数值特征转化为离散区间。方法包括等宽分箱(Equal Width)、等频分箱(Equal Frequency)和基于决策树的分箱。离散化可以降低噪声的影响,增强模型的鲁棒性,但也可能损失信息。
概念三:分类型特征编码
分类型特征(Categorical Features)的编码是机器学习数据表示的重要环节。
标签编码(Label Encoding):将每个类别映射为一个整数(0, 1, 2, ...)。适用于有序分类变量(如"低"、"中"、"高"),但不适用于无序分类变量,因为整数编码隐含了大小关系。
One-hot 编码:将每个类别映射为一个二进制向量。对于有 K 个类别的特征,生成 K 个二进制特征。One-hot 编码消除了类别之间的虚假序关系,但会导致高维稀疏特征空间。当类别数很大时(高基数),One-hot 编码的维度爆炸问题尤为严重。
目标编码(Target Encoding / Mean Encoding):用目标变量在该类别下的均值来替代类别值。例如,在二分类问题中,用该类别的正样本比例来编码。目标编码能有效处理高基数分类变量,但容易过拟合,需要使用交叉验证或贝叶斯平滑来缓解。
频率编码(Frequency Encoding):用类别出现的频率来替代类别值。这种方法保留了类别的分布信息,适用于类别频率与目标变量相关的场景。
嵌入编码(Embedding Encoding):使用神经网络学习类别的低维稠密表示。嵌入编码能够捕获类别之间的语义关系,是处理高基数分类变量的先进方法。
概念四:文本数据表示
文本数据的表示是 NLP 和文本相关机器学习任务的核心环节。
词袋模型(Bag of Words, BoW):将文本表示为词频向量,忽略词序信息。优点是简单直观,缺点是维度高、稀疏、缺乏语义信息。
TF-IDF:在词频基础上引入逆文档频率加权。TF-IDF(t, d) = TF(t, d) × IDF(t),其中 TF 是词频,IDF = log(N / df(t))。TF-IDF 降低了常见词的影响,提升了稀有词的权重。
N-gram 模型:将连续的 N 个词作为一个特征单元。Bigram(N=2)可以捕获部分词序信息,如"not good"。N-gram 增加了特征维度,但提升了表达能力。
Word Embedding:Word2Vec、GloVe、FastText 等方法将词映射为低维稠密向量。词向量能够捕获语义关系(如 king - man + woman ≈ queen),是深度学习 NLP 的基础。
上下文嵌入:BERT、GPT 等预训练模型生成上下文相关的词表示。同一个词在不同语境下有不同的向量表示,解决了多义词问题。
概念五:嵌入表示学习
嵌入(Embedding)是将离散对象(词、类别、物品等)映射为连续向量空间中的点的技术。
嵌入的核心思想是分布式表示假说(Distributional Hypothesis):语义相似的对象在向量空间中的距离应该相近。这一思想在词嵌入、物品嵌入、用户嵌入等多种场景中得到广泛应用。
词嵌入:Word2Vec 通过 Skip-gram 和 CBOW 两种架构学习词向量。GloVe 通过全局词共现矩阵的分解来学习词向量。FastText 引入子词信息,能够处理未登录词。
类别嵌入:在神经网络中,高基数分类变量可以通过嵌入层转化为低维稠密向量。嵌入层的参数通过反向传播与模型其他参数一起训练。这种方法在推荐系统中广泛应用(如用户嵌入和物品嵌入)。
图嵌入:DeepWalk、Node2Vec 等方法将图中的节点映射为向量,保持图的结构信息。TransE、RotatE 等方法学习知识图谱中实体和关系的嵌入。
嵌入的质量评估方法包括:内在评估(如词向量的类比任务准确率)和外在评估(如嵌入作为特征输入下游任务的效果)。
三、深入分析与讨论
深入分析一:特征工程的自动化
传统特征工程高度依赖领域专家的经验和手工操作,效率低且难以扩展。自动化特征工程(AutoFE)是机器学习自动化的重要方向。
特征生成:通过数学变换(如多项式特征、交互特征)自动从原始特征生成新特征。Featuretools 等工具使用"深度特征合成"(Deep Feature Synthesis)方法,通过组合预定义的算子(如 mean、max、count)自动生成交叉聚合特征。
特征选择:从大量候选特征中选择最优子集。方法包括过滤法(Filter,如互信息、卡方检验)、包裹法(Wrapper,如递归特征消除)和嵌入法(Embedded,如 L1 正则化、树模型的特征重要性)。
特征构造:使用遗传编程、强化学习等方法搜索最优的特征变换组合。这些方法能够发现人类专家可能忽略的特征组合。
自动化特征工程的挑战在于搜索空间的组合爆炸和过拟合风险。生成的特征数量可能远超原始特征,需要有效的特征选择机制来控制模型复杂度。
深入分析二:表示学习的理论基础
表示学习(Representation Learning)的目标是自动学习数据的有用表示,减少对手工特征工程的依赖。其理论基础涉及信息论、流形学习和统计学习等多个领域。
信息论视角:好的表示应该最大化关于目标变量的互信息,同时最小化冗余信息。InfoMax 原则指出,最优表示应该最大化输入和输出之间的互信息。
流形学习视角:高维数据通常分布在低维流形上。好的表示应该揭示数据的内在低维结构。PCA、t-SNE、UMAP 等方法都是基于流形假设的表示学习方法。
不变性视角:好的表示应该对无关变化具有不变性。例如,图像分类的表示应该对平移、旋转等变换不变。数据增强和对比学习都是通过引入不变性约束来学习更好的表示。
瓶颈理论:深度网络的表示学习可以看作是一个信息瓶颈过程——每一层都在压缩输入信息的同时保留与目标相关的信息。最优表示在压缩率和信息保留之间取得平衡。
深入分析三:数据表示中的偏差问题
数据表示过程中可能引入多种偏差,影响模型的公平性和泛化能力。
采样偏差:训练数据的分布与真实应用环境的分布不一致。例如,使用社交媒体数据训练的情感分析模型可能在其他文本源上表现不佳。
标注偏差:人工标注过程中的主观性和不一致性引入的偏差。不同标注者对同一数据可能有不同的理解,导致标签噪声。
表示偏差:特征表示方式本身引入的偏差。例如,使用 One-hot 编码处理地理区域时,隐含了所有区域相互独立的假设,忽略了地理邻近性。
历史偏差:历史数据中反映的社会偏见(如性别歧视、种族偏见)被模型学习和放大。例如,如果历史招聘数据中女性被录用的比例较低,模型可能学到性别偏见。
识别和缓解数据表示中的偏差是构建负责任 ML 系统的重要前提。
四、实践案例
案例一:电商用户购买预测的特征工程
一个电商平台的用户购买预测任务,目标是预测用户是否会在未来 7 天内购买某类商品。
原始数据包括用户基本信息(年龄、性别、注册时长)、历史行为数据(浏览、点击、加购、购买记录)和商品信息(价格、类别、品牌)。
特征工程方案包括:
用户行为特征:过去 7/14/30 天的浏览次数、点击次数、加购次数、购买次数;各类行为的频率变化趋势(近 7 天 vs 前 7 天);用户活跃时间段分布(工作日 vs 周末,上午 vs 下午)。
用户-商品交互特征:用户对该商品类别的历史购买次数;用户对该品牌的偏好度(购买次数 / 总购买次数);用户对该价格区间的偏好度。
商品特征:商品的价格分位数(相对同类商品);商品的上架时间;商品的评价分数和评价数量。
交叉特征:用户平均消费金额 × 商品价格;用户品牌偏好 × 商品品牌。
经过特征工程后,模型(XGBoost)的 AUC 从 0.72(仅使用原始特征)提升到 0.85。
案例二:文本分类任务中的数据表示对比实验
在一个新闻文本分类任务中(10 个类别,50000 条样本),对比不同文本表示方法的效果。
实验设置使用相同的多层感知机分类器,只改变输入表示方法:
BoW(词袋模型):使用 Top-10000 高频词构建词频向量。准确率 82.3%。
TF-IDF:使用 Top-10000 词的 TF-IDF 向量。准确率 85.1%。
Word2Vec 平均:使用预训练 Word2Vec 对文本中所有词向量取平均。准确率 86.7%。
BERT 微调:使用预训练 BERT 进行微调。准确率 93.2%。
实验结果表明,从 BoW 到 BERT,表示质量的提升直接转化为分类准确率的提升。TF-IDF 相比 BoW 提升了 2.8 个百分点,Word2Vec 相比 TF-IDF 提升了 1.6 个百分点,BERT 相比 Word2Vec 提升了 6.5 个百分点。
值得注意的是,简单模型(MLP)配合高级表示(BERT)的效果远好于复杂模型配合低级表示。这再次验证了数据表示的重要性。
五、常见误区与注意事项
误区:特征越多越好。过多特征会增加模型复杂度、计算开销和过拟合风险。特征工程的关键在于质量而非数量。应通过特征选择保留最有信息量的特征子集。
误区:深度学习不需要特征工程。虽然深度学习能够自动学习特征表示,但原始输入的质量仍然至关重要。在表格数据(Tabular Data)场景中,手工特征工程仍然是提升效果的关键手段。
误区:One-hot 编码适用于所有分类变量。对于高基数分类变量(如城市名、邮编),One-hot 编码会导致维度爆炸。应考虑使用目标编码、频率编码或嵌入编码。
注意事项:数据泄露(Data Leakage)。特征工程中常见的陷阱是使用了在预测时不可用的信息。例如,使用目标编码时如果在整个数据集上计算均值(而非仅在训练集上),就会导致数据泄露。
注意事项:训练-测试一致性。特征处理的参数(如标准化的均值和方差)应该只在训练集上计算,然后应用到测试集。在测试集上重新计算处理参数会导致评估结果不可靠。
六、本章小结
本章系统介绍了机器学习中的数据表示模式。数据表示是机器学习系统的基石,直接决定了模型性能的上限。
数值型特征处理包括缩放(标准化、归一化、鲁棒缩放)、变换(对数变换、Box-Cox 变换)和离散化。分类型特征编码方法包括标签编码、One-hot 编码、目标编码、频率编码和嵌入编码,需要根据类别基数和模型特性选择合适的方法。
文本数据表示从词袋模型发展到 TF-IDF、词嵌入和上下文嵌入,表示质量不断提升。嵌入技术将离散对象映射为连续向量空间中的点,能够捕获语义关系和结构信息。
特征工程需要遵循领域知识驱动、相关性、独立性和尺度一致性等原则。自动化特征工程和表示学习是重要的发展方向,但手工特征工程在许多场景中仍然不可替代。
数据表示中的偏差问题(采样偏差、标注偏差、表示偏差、历史偏差)需要被认真识别和处理,以构建公平、可靠的 ML 系统。
七、思考题与练习
在一个房价预测任务中,原始特征包括"房屋面积"、"房间数"、"建造年份"和"地理位置"。请设计至少 5 个衍生特征,并说明每个特征的设计理由。
对比标准化、归一化和鲁棒缩放三种方法的特点,设计实验说明在什么情况下应该选择哪种方法。
对于一个有 1000 个类别的分类变量,对比 One-hot 编码、目标编码和嵌入编码的效果。分析各方法的优缺点和适用场景。
实现一个文本特征提取管道,分别使用 TF-IDF 和预训练词嵌入,在情感分类任务上对比效果。
设计一个特征选择实验,使用过滤法、包裹法和嵌入法分别进行特征选择,比较三种方法选出的特征子集和最终模型效果。
分析以下场景中的数据泄露风险:(a)使用目标编码时在全量数据上计算均值;(b)使用标准化时在全量数据上计算均值和方差;(c)使用时间特征时包含了未来信息。
调研并总结自动化特征工程工具(如 Featuretools、TPOT)的原理和使用方法。
讨论嵌入表示的局限性。嵌入在什么情况下可能失效?如何诊断嵌入质量问题?