趋近智
正如厨师在烹饪前精心准备食材一样,我们必须在将数据输入自编码器之前细致准备好数据。自编码器的表现和学习能力高度依赖于输入数据的质量和格式。本节详细介绍必要的预处理步骤,以确保你的自编码器能高效学习并提取有价值的特征。我们将涉及缺失值处理、数值特征缩放、类别数据编码以及为可靠模型训练和评估正确划分数据集的方法。
自编码器通过尝试重建输入来学习。如果输入数据杂乱、存在不一致或特征尺度不同,学习过程可能效率低下甚至产生误导。自编码器可能难以收敛,或者可能关注数据的表面特征而非我们希望它学习的潜在结构。准备得当的数据使得自编码器的优化过程更顺畅,并帮助网络专注于学习重要模式。
以下图表概述了我们将讨论的数据准备的大致步骤:
训练自编码器前准备数据的典型工作流程。
数据集经常包含缺失值。自编码器和大多数神经网络一样,需要完整的数值输入。因此,你需要一种方法来处理这些空缺。常见方法包括:
对于自编码器而言,如果缺失数据不广泛,通常推荐使用填充而非删除,因为我们希望模型尽可能从原始数据结构中学习。请选择适合你特定数据集和特征的填充方法。
数据集中的特征可能具有不同的尺度和范围。例如,一个特征的范围可能是0到1,而另一个可能是10,000到1,000,000。包括自编码器在内的神经网络对此类差异可能很敏感。大的输入值会导致大的误差梯度,从而造成训练不稳定,或者使网络不成比例地侧重于数值较大的特征。将数值特征缩放到一致的范围有助于:
两种广泛使用的缩放技术是最小-最大缩放和标准化。
最小-最大缩放将特征转换到特定范围,通常是[0, 1]或[-1, 1]。这通过减去特征的最小值,然后除以其范围(最大值减去最小值)来实现。
将数值缩放到[0, 1]范围的公式是: Xscaled=Xmax−XminX−Xmin
此处:
最小-最大缩放通常在以下情况适用:
标准化重新缩放特征,使其均值(μ)为0,标准差(σ)为1。
公式为: Xscaled=σX−μ
此处:
标准化通常在以下情况更受青睐:
选择最小-最大缩放或标准化: 没有唯一的最佳答案;选择通常取决于你的数据和自编码器结构。通常的做法是尝试这两种方法,并查看哪种在验证集上产生更好的结果。对于图像数据,将最小-最大缩放到[0, 1]是一个非常常见的预处理步骤。对于其他类型的表格数据,标准化是默认选择。
自编码器要求所有输入特征都是数值型的。如果你的数据集中包含类别特征(例如,“颜色”,其值可以是“红色”、“蓝色”、“绿色”;或“教育程度”,其值可以是“高中”、“本科”、“硕士”),你需要将它们转换为数值格式。
对于名义类别特征(类别没有内在顺序),独热编码是标准方法。它为每个独特类别创建一个新的二元(0或1)特征。对于给定样本,与该样本类别对应的特征值将为1,而该原始属性的所有其他新二元特征都将为0。
独热编码避免了对类别施加人为顺序。然而,如果一个类别特征有许多独特值(高基数),它会显著增加输入数据的维度。
对于序数类别特征(类别具有有意义的顺序,例如“低”、“中”、“高”),你可以使用序数编码。这涉及根据其等级为每个类别分配一个数值(例如,低=0,中=1,高=2)。
虽然更简单,但序数编码应谨慎使用。如果数值映射不能准确反映类别之间的关系,或者自编码器将这些整数视为具有等距间隔的连续值(这可能不真实),则可能导致误解。
通常,对于大多数自编码器应用而言,独热编码是更稳妥的选择,除非序数性质很强且理解透彻。
在任何涉及从数据中学习参数的预处理(如计算标准化所需的均值/标准差或缩放所需的最小/最大值)之前,将数据集划分为训练集、验证集和(可选但强烈建议的)测试集是完全必要的。
为什么这个顺序很重要(防止数据泄露): 如果你在划分数据之前使用整个数据集计算缩放参数(如最小/最大值或均值/标准差),那么验证集和测试集的信息就会“泄露”到训练过程中。这会导致对验证/测试数据的性能估计过于乐观,因为模型在预处理阶段无意中看到了这些数据的一部分。始终只在训练数据上拟合你的缩放器和编码器,然后使用这些已拟合的转换器来转换训练集、验证集和测试集。
让我们总结这些步骤如何适用于自编码器常见的几种数据类型。
对于表格格式(如CSV文件)的数据集:
对于图像数据集:
通过周全地准备数据,你为训练有效的自编码器打下了扎实的基础。这些步骤确保你的模型能够专注于学习数据中固有的结构和模式,从而从瓶颈层得到更有用、更有代表性的特征。在后续章节中,我们将使用这些预处理过的数据,开始设计和构建我们的自编码器结构。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造