此示例展示了如何生成用于监督式相似度测量的嵌入。
假设您的住房数据集与创建手动相似度测量时使用的住房数据集相同:
特征 | 类型 |
---|---|
价格 | 正整数 |
大小 | 正浮点值,以平方米为单位 |
邮政编码 | 整数 |
卧室数量 | 整数 |
房屋类型 | “single_family”、“multi-family”、“apartment”、“condo”的文本值 |
Garage | 0/1(表示否/是) |
颜色 | 多元分类:标准颜色“白色”、“黄色”、“绿色”等中的一个或多个值。 |
预处理数据
在将特征数据用作输入之前,您需要对数据进行预处理。预处理步骤基于您在创建手动相似度测量时执行的步骤。以下是一些摘要:
特征 | 类型或分布 | 操作 |
---|---|---|
价格 | 泊松分布 | 量化和缩放到 [0,1]。 |
大小 | 泊松分布 | 量化和缩放到 [0,1]。 |
邮政编码 | 分类 | 转换为经度和纬度,量化和缩放为 [0,1]。 |
卧室数量 | 整数 | 裁剪离群值并缩放到 [0,1]。 |
房屋类型 | 分类 | 转换为独热编码。 |
Garage | 0 或 1 | 保留原样。 |
颜色 | 分类 | 转换为 RGB 值并以数值数据的形式进行处理。 |
如需详细了解独热编码,请参阅嵌入:分类输入数据。
选择预测器或自动编码器
如需生成嵌入,您可以选择自编码器或预测器。请注意,您的默认选择是自动编码器。如果数据集中的特定特征决定了相似度,则应选择预测器。为了解完整信息,我们来看一下这两种情况。
训练预测器
您需要选择这些特征作为 DNN 的训练标签,这些标签对于确定样本之间的相似性非常重要。假设价格是确定房屋之间的相似度的最重要因素。
选择 price 作为训练标签,并将其从 DNN 的输入特征数据中移除。使用所有其他特征作为输入数据来训练 DNN。对于训练,损失函数只是预测价格和实际价格之间的 MSE。如需了解如何训练 DNN,请参阅训练神经网络。
训练自动编码器
按照以下步骤训练数据集上的自动编码器:
- 确保自动编码器的隐藏层小于输入层和输出层。
- 按照监督式相似度衡量中所述计算每个输出的损失。
- 通过计算每个输出的损失来创建损失函数。务必为每个特征平均分配损失。例如,由于颜色数据被处理为 RGB,因此每个 RGB 输出的权重为 1/3。
- 训练 DNN。
从 DNN 提取嵌入
训练 DNN 后,无论预测器还是自动编码器,都从 DNN 中提取样本的嵌入。通过将该示例的特征数据作为输入提取嵌入,并读取最终隐藏层的输出。这些输出形成嵌入向量。请记住,类似房屋的向量应该比不同房屋的向量更近。
接下来,您将了解如何使用其嵌入向量量化样本对的相似度。