嵌入通过将每种类型转换为共享空间中的数值向量表示来处理混合数据类型,使机器学习模型能够一起处理它们。核心思想是将不同的数据(如文本、分类变量或数值特征)转换为密集向量,其中相似的值在向量空间中更接近。例如,文本可以使用 Word2Vec 或 BERT 等技术进行标记化和嵌入,而分类数据(例如,产品类别)可以通过查找表映射到嵌入。数值数据可以被归一化或直接用作向量的一部分。通过统一这些表示,嵌入允许模型学习跨数据类型的关系,例如将用户的年龄(数值)与其购买历史(文本)或位置(分类)相关联。
为了说明这一点,考虑一个包含客户信息的数据集:年龄(数值)、城市(分类)和产品评论(文本)。数值年龄可以缩放到固定范围(例如,0-1)并被视为单个维度。城市可以使用嵌入层进行转换,该嵌入层将每个唯一城市映射到一个向量(例如,5 个维度)。评论文本可以使用预训练的语言模型进行处理,以生成一个 10 维向量。然后将这三个向量连接成一个 16 维的推荐模型输入。这种方法避免了分类数据的一次性编码稀疏性等问题,并捕获了文本中的语义意义。对于表格格式的混合数据,像 TabTransformer 这样的框架或自定义神经网络通常在合并它们之前对每种数据类型应用单独的嵌入层。
挑战在于平衡不同嵌入的贡献和处理缺失数据。例如,如果文本嵌入由于更高的维度而占主导地位,模型可能会低估数值特征。特征缩放、降维(例如,PCA)或注意力机制等技术可以帮助适当地权衡嵌入。缺失值可以通过掩码或使用默认嵌入(例如,用于缺少文本的零向量)来解决。开发人员还必须决定是从头开始训练嵌入(用于特定任务数据)还是使用预训练的嵌入(用于常见文本/类别)。测试不同的嵌入大小和融合策略(连接、求和)对于优化特定用例的性能至关重要。