为 Wide and Deep 推荐器评分
本文介绍如何使用 Azure 机器学习设计器中的“为 Wide and Deep 推荐器评分”组件,基于经训练的建议模型和 Google 的 Wide and Deep 学习来创建预测。
Wide and Deep 推荐器可生成两种不同类型的预测:
创建后一种预测时,可在生产模式或评估模式中进行操作 。
生产模式考虑所有用户或项目,且通常在 Web 服务中使用。 可以为其创建评分的对象不仅仅是在训练过程中显示的用户,也可以是新用户。
评估模式针对可评估的精简用户或项目集进行操作,通常在试验期间使用。
有关 Wide and Deep 推荐器及其基础理论的更多详细信息,请参阅相关研究论文:推荐器系统的 Wide & Deep 学习。
该组件支持不同类型的推荐,每种推荐都有不同的要求。 单击你拥有的数据类型的链接以及所需创建的建议类型的链接。
预测评级时,该模型会根据训练数据计算给定用户对特定项目的反应。 因此,用于进行评分的输入数据必须同时提供用户和要评分的项目。
向试验中添加经训练的 Wide & Deep 建议模型,并将其连接到“经训练的 Wide and Deep 建议模型”。 必须使用训练 Wide and Deep 推荐器来创建模型。
推荐器预测类型:选择“评级预测”。 无需指定额外参数。
添加要对其进行预测的数据,并将其连接到“要进行评分的数据集”。
若要预测评级,输入数据集必须包含用户-项目对。
数据集可以选择包含第三列,其用于第一列和第二列中的用户-项目对的评级,但在预测过程中将忽略第三列。
(可选)。 如果拥有用户特征数据集,请将其连接到“用户特征”。
用户特征数据集应包含第一列中的用户标识符。 其余列应包含可确定用户特征的值,例如其性别、偏好、位置等。
在训练数据集中具有已评级项的用户特征将被“为 Wide and Deep 推荐器评分”忽略,因为它们已在训练过程中被学习。 因此,请预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。
警告
如果在未使用用户特征的情况下训练了模型,则无法在评分过程中引入用户特征。
如果具有项特征数据集,则可以将其连接到“项特征”。
项特征数据集必须在第一列中包含项标识符。 其余列应包含可确定项特征的值。
训练数据集中已评级的项特征将被“为 Wide and Deep 推荐器评分”忽略,因为它们已在训练过程中被学习。 因此,请将评分数据集限制为冷启动项或未经任何用户评级的项。
警告
如果在未使用项特征的情况下训练了模型,则无法在评分过程中引入项特征。
运行试验。
输出数据集包含三列,其中包含用户、项以及每个输入用户和项的预测评级。
此外,在评分过程中将应用以下更改:
- 对于数值用户或项特征列,缺失值会自动替换为其非缺失训练集值的平均值。 对于分类特征,缺失值将替换为与此特征的任何可能值均不同的相同分类值。
- 不会对特征值应用转换,这样做是为了保持其稀疏度。
要向用户推荐项目,请提供用户和项目列表作为输入。 在此数据中,该模型利用其关于现有项目和用户的知识来生成可能对每个用户都具有吸引力的项目列表。 可以自定义返回的建议数,并为生成建议所需的先前建议数设置阈值。
向试验中添加经训练的 Wide and Deep 建议模型,并将其连接到“经训练的 Wide and Deep 建议模型”。 必须使用训练 Wide and Deep 推荐器来创建模型。
若要为给定用户列表推荐项目,请将“推荐器预测类型”设置为“项目建议” 。
“推荐项选择”:通过选择以下其中一个值,指示是要在生产中使用评分组件,还是要将其用于模型评估:
- 从评级项目(用于模型评估) :如果要开发或测试模型,请选择此选项。 该选项可启用“评估模式”,并且该组件仅从输入数据集中已评级的那些项中进行推荐。
- 从所有项目:如果要设置在 Web 服务或生产环境中使用的试验,请选择此选项。 该选项启用“生产模式”,并且该组件将从训练期间看到的所有项中进行推荐。
- 从未评级项目(用于向用户推荐新项目):如果希望组件仅从训练数据集中那些尚未评级的项中进行推荐,请选择此选项。
添加要对其进行预测的数据集,并将其连接到要进行评分的数据集。
如果选择“从所有项”选项,则输入数据集应包含一个且仅包含一个列,其中包含要为其提供建议的用户的标识符。
数据集可以包含额外的两列,分别为项目标识符和评级,但这两列将被忽略。
如果选择“从评级项(用于模型评估)”选项,则输入数据集应包含用户-项目对 。 第一列应包含用户标识符。 第二列应包含相应的项标识符。
数据集可以包含第三列(用户-项目评级),但此列将被忽略。
对于“从未评级项目(用于向用户推荐新项目)”,输入数据集应包含用户-项目对。 第一列应包含用户标识符。 第二列应包含相应的项标识符。
数据集可以包含第三列(用户-项目评级),但此列将被忽略。
(可选)。 如果拥有用户特征数据集,请将其连接到“用户特征” 。
用户特征数据集中的第一列应包含用户标识符。 其余列应包含可确定用户特征的值,例如其性别、偏好、位置等。
具有已评级项的用户特征将被“为 Wide and Deep 推荐器评分”忽略,因为已在训练过程中学习了这些特征。 因此,可以预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。
警告
如果在未使用用户特征的情况下训练了模型,则无法在评分过程中应用特征。
(可选)如果具有项特征数据集,则可以将其连接到“项特征” 。
项特征数据集中的第一列必须包含项标识符。 其余列应包含可确定项特征的值。
已评级项的特征将被“为 Wide and Deep 推荐器评分”忽略,因为已在训练过程中学习了这些特征。 因此,可将评分数据集限制为冷启动项或未经任何用户评级的项。
警告
如果在未使用项特征的情况下训练了模型,则在评分时请勿使用项特征。
向用户推荐的最大项目数:键入要针对每个用户返回的项目数。 默认情况下,建议返回 5 个项。
每个用户的建议池的最小大小:键入一个值,该值指示所需的先前建议数。 默认情况下,此参数设置为“2”,这意味着必须至少有两名其他用户推荐了此项。
应仅当在评估模式下进行评分时使用此选项。 如果选择“从所有项目”或“从未评级项目(用于向用户推荐新项目)”,则此选项不可用。
对于“从未评级项目(用于向用户推荐新项目)”,请使用名为“训练数据”的第三个输入端口来删除预测结果中已评级的项目 。
要应用此筛选器,请将原始训练数据集连接到该输入端口。
运行试验。
“为 Wide and Deep 推荐器评分”返回的已评分数据集会列出每个用户的建议项。
- 第一列包含用户标识符。
- 根据“向用户推荐的最大项目数”部分设置的值,将生成多个其他列。 每列都包含一个推荐项目(按标识符排列)。 这些建议按用户-项相关性排序,具有最高相关性的项位于“项 1”列中。
本部分包含有关使用 Wide & Deep 推荐器创建预测的一些常见问题的解答。
通常,若要创建建议,“为 Wide and Deep 推荐器评分”组件所需的输入与在训练模型时所使用的输入(包括用户 ID)相同。 这是因为算法需要知道它在训练期间是否已了解有关此用户的一些信息。
但对于新用户,你可能还没有用户 ID,只有某些用户特征,如年龄、性别等。
你仍可以为系统新用户创建建议,方法是将其作为冷启动用户处理。 对于此类用户,建议算法不使用过去的历史记录或以前的评级,仅使用用户功能。
出于预测目的,冷启动用户定义为 ID 尚未用于训练的用户。 为确保 ID 不会与已在训练中使用的 ID 匹配,可以创建新的标识符。 例如,可以在指定的范围内生成随机 ID,或提前为冷启动用户分配一系列 ID。
但是,如果你没有任何协作筛选数据(如用户特征的矢量),则最好使用分类或回归学习器。
如果对 Wide and Deep 推荐器进行了试验,然后将该模型移动到生产环境中,请注意在评估模式下使用该推荐器和在生产模式下使用该推荐器存在一些重要区别:
根据定义,评估需要可以在测试集中根据基本事实进行验证的预测。 因此,评估推荐器时,它必须只预测在测试集中已评级的项目。 这必然会限制预测的可能值。
但是,操作模型时,通常会更改预测模式,以根据所有可能的项目提出建议,从而获得最佳预测。 对于这些预测中的许多预测,都不存在对应的真值,因此无法以试验期间所使用的方式验证建议的准确性。
如果未在生产环境中提供用户 ID,而是仅提供特征向量,则可能会收到针对所有可能用户的所有建议列表。 请确保提供用户 ID。
若要限制返回的建议数,还可以指定针对每个用户返回的最大项数。
请参阅 Azure 机器学习的可用组件集。