评分 Matchbox 推荐器

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

使用 Matchbox 推荐器为数据集预测评分

类别:机器学习/分数

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用 机器学习 Studio (经典) 中的 Matchbox 推荐器评分模块,基于 Microsoft Research 中的 Matchbox 算法基于已训练的建议模型创建预测。

Matchbox 推荐器可以生成四种不同类型的预测:

创建后三种预测时,可以在生产模式或评估模式下操作

  • 生产模式考虑所有用户或项目,且通常在 Web 服务中使用。

    可以为其创建评分的对象不仅仅是在训练过程中显示的用户,也可以是新用户。 有关详情,请参阅本部分

  • 评估模式针对可评估的精简用户或项目集进行操作,通常在试验期间使用。

提示

在本教程中,了解在 .NET 开发团队中构建建议系统的端到端体验所需的一切知识。 包括示例代码和如何从机器学习调用代码的讨论。

使用 机器学习 生成 .NET 应用程序的建议引擎

有关 Matchbox 推荐器

创建建议系统的目标是向系统的"用户"推荐一个或多个"项"。 项目示例可能为电影、餐馆、书籍或歌曲。 用户可以是具有项目首选项的人员、一组人员或其他实体。

推荐器系统有两种主要方法。 第一种是“基于内容”方法,该方法同时使用用户和项目的特性。 可以按年龄和性别等属性来描述用户,可按作者和制造商等属性来描述项。 你可以在社交婚介网站上找到基于内容的建议系统的典型示例。 第二种方法是“协作筛选”,它仅使用用户和项的标识符,并从用户对项给出的评分的(稀疏)矩阵中获取有关这些实体的隐含信息。 我们可以通过某个用户已评级的项目以及对相同项目进行了评级的其他用户来了解该用户。

Matchbox 推荐器将协作筛选与基于内容的方法相结合。 因此,它被视为“混合推荐器”。 当某个用户对于系统来说相对较新时,将通过利用有关该用户的特性信息来改进预测,从而解决众所周知的“冷启动”问题。 但是,一旦特定用户做出了足够数量的评级,就可以根据其特定评级而不是只根据其特性为其进行完全个性化的预测。 因此,可从基于内容的建议平稳过渡到基于协同筛选的建议。 即使用户或项功能不可用,Matchbox 仍在其协作筛选模式下工作。

可以在相关研究论文中找到有关 Matchbox 推荐器及其基础概率算法的更多详细信息:

示例

有关如何从建议引擎创建分数的示例,请参阅Azure AI 库。

  • 推荐处:此博客文章简要介绍了具有大量视觉辅助工具的推荐器系统。

如何配置 Matchbox 推荐器评分

此模块支持不同类型的建议,每个建议都有不同的要求。 单击你拥有的数据类型的链接以及所需创建的建议类型的链接。

预测评级

预测评级时,该模型会根据训练数据计算给定用户对特定项目的反应。 因此,用于进行评分的输入数据必须同时提供用户和要评分的项目。

  1. 将训练的建议模型添加到试验,并连接到 训练的 Matchbox 推荐器。 必须使用训练 Matchbox 推荐器创建模型

  2. 推荐器预测类型:选择“评级预测”。 无需指定额外参数。

  3. 添加要对其进行预测的数据,并将其连接到“要进行评分的数据集”。

    若要预测评级,输入数据集必须包含用户-项目对。

    数据集可以选择包含第三列,其用于第一列和第二列中的用户-项目对的评级,但在预测过程中将忽略第三列。

  4. (可选)。 如果拥有用户特征数据集,请将其连接到“用户特征”。

    用户特征数据集应包含第一列中的用户标识符。 其余列应包含可确定用户特征的值,例如其性别、偏好、位置等。

    评分 Matchbox 推荐器会忽略具有已评分项的用户的功能,因为在训练期间已了解这些特征。 因此,请预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。

    警告

    如果在未使用用户特征的情况下训练了模型,则无法在评分过程中引入用户特征。

  5. 如果具有项特征数据集,则可以将其连接到“项特征”。

    项特征数据集必须在第一列中包含项标识符。 其余列应包含可确定项特征的值。

    评分 Matchbox 推荐器会忽略已评分项的功能,因为它们已在训练过程中学习。 因此,请将评分数据集限制为冷启动项或未经任何用户评级的项。

    警告

    如果在未使用项特征的情况下训练了模型,则无法在评分过程中引入项特征。

  6. 使用可选的第五个输入端口(名为 "训练数据集")从预测结果中删除已评分的项。

    要应用此筛选器,请将原始训练数据集连接到该输入端口。

  7. 运行试验。

评级预测的结果

输出数据集包含三列,其中包含用户、项以及每个输入用户和项的预测评级。

此外,在评分过程中将应用以下更改:

  • 用户或项特征列中的缺失值会自动替换为其非缺失训练集值的 模式。

  • 所有用户和项特征都按训练中显示的相应最大绝对值重新缩放。

  • 不会对特征值应用转换,这样做是为了保持其稀疏度。

  • 字符串值特性将转换为一组二进制值指示器特性。

Recommend

要向用户推荐项目,请提供用户和项目列表作为输入。 在此数据中,该模型利用其关于现有项目和用户的知识来生成可能对每个用户都具有吸引力的项目列表。 可以自定义返回的建议数,并为生成建议所需的先前建议数设置阈值。

  1. 将训练的建议模型添加到试验,并连接到 训练的 Matchbox 推荐器。 必须使用训练 Matchbox 推荐器创建模型

  2. 若要为给定用户列表推荐项目,请将“推荐器预测类型”设置为“项目建议” 。

  3. 推荐项选择:通过选择以下值之一,指示是在生产中使用评分模块还是将评分模块用于模型评估:

    • 从评级项目(用于模型评估) :如果要开发或测试模型,请选择此选项。 此选项可启用“评估模式”,且模块仅基于输入数据集中的已评级项提出建议。

    • 从所有项目:如果要设置在 Web 服务或生产环境中使用的试验,请选择此选项。 此选项可启用“生产模式”,且模块基于训练过程中显示的所有项提出建议。

  4. 添加要对其进行预测的数据集,并将其连接到要进行评分的数据集

    • 如果选择“从所有项”选项,则输入数据集应包含一个且仅包含一个列,其中包含要为其提供建议的用户的标识符。

      如果数据集包含多个列,则引发错误。 使用" 选择数据集中的列" 模块从输入数据集中删除额外的列。

    • 如果选择“从评级项(用于模型评估)”选项,则输入数据集应包含用户-项目对 。 第一列应包含用户标识符。 第二列应包含相应的项标识符。

      数据集可以包含第三列(用户-项目评级),但此列将被忽略。

  5. (可选)。 如果拥有用户特征数据集,请将其连接到“用户特征” 。

    用户特征数据集中的第一列应包含用户标识符。 其余列应包含可确定用户特征的值,例如其性别、偏好、位置等。

    评分 Matchbox 推荐器会忽略具有已评分项的用户的功能,因为这些功能已在训练期间学习。 因此,可以预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。

    警告

    如果在未使用用户特征的情况下训练了模型,则无法在评分过程中应用特征。

  6. (可选)如果具有项特征数据集,则可以将其连接到“项特征” 。

    项特征数据集中的第一列必须包含项标识符。 其余列应包含可确定项特征的值。

    评分 Matchbox 推荐器会忽略已评分项的功能,因为这些功能已在训练过程中学习。 因此,可将评分数据集限制为冷启动项或未经任何用户评级的项。

    警告

    如果在未使用项特征的情况下训练了模型,则在评分时请勿使用项特征。

  7. 向用户推荐的最大项目数:键入要针对每个用户返回的项目数。 默认情况下,建议返回 5 个项。

  8. 每个用户的建议池的最小大小:键入一个值,该值指示所需的先前建议数。 默认情况下,此参数设置为“2”,这意味着必须至少有两名其他用户推荐了此项。

    应仅当在评估模式下进行评分时使用此选项。 如果选择"从所有项", 则此选项不可用

  9. 运行试验。

项目建议的结果

“评分 Matchbox 推荐器”返回的已评分数据集将列出向每个用户推荐的项目。

  • 第一列包含用户标识符。
  • 根据“向用户推荐的最大项目数”部分设置的值,将生成多个其他列。 每列都包含一个推荐项目(按标识符排列)。 这些建议按用户-项相关性排序,具有最高相关性的项位于“项 1”列中。

警告

无法使用评估推荐器模块来评估这个已评分的数据集。

查找相关用户

如果你建议"像你一样的人",或者要创建一个类似用户池来作为其他类型的预测的基础,则查找相关用户的选项非常有用。

  1. 将训练的建议模型添加到试验,并连接到 训练的 Matchbox 推荐器。 必须使用训练 Matchbox 推荐器创建模型

  2. 推荐器预测类型:选择 "相关用户"

  3. 相关用户选择:指示如何使用模型进行评分,并指定评分所基于的用户池,如下所示:

    • 从所有用户:如果要设置试验以在 Web 服务或生产中使用,或者需要为新用户进行预测,请选择此选项。 此选项启用 生产模式,模块的建议仅基于培训期间看到的用户。

    • 从"为模型评估 (用户") :如果要开发或测试模型,请选择此选项。 此选项启用 评估模式,并且模型基于测试集内已对一些常见项目进行了评分的用户提供其建议。

  4. 连接包含要生成预测的用户的数据集。 此数据集的格式取决于你是在生产模式还是评估模式下使用评分模块。

    • 生产模式,使用 "从所有项"

      要评分的数据集必须 包含要 查找相关用户的用户。 第一列和唯一列应包含用户标识符。 如果包含其他列,则引发错误。 使用" 选择数据集中的列" 模块删除不必要的列。

    • 评估模式,使用 "从评分项" (模型评估)

      要评分的数据集应包含 2-3 列,其中包含用户项对。 第一列应包含用户标识符。 第二列应包含项标识符。 数据集可以包含第 2 列 (项的第 1 列中用户添加的第三列评级) 但评级列将被忽略。

  5. 要查找用户的最大相关用户数:键入一个数字,指示每个用户希望的最大预测数。 默认值为 5,表示最多可返回 5 个相关用户,但在某些情况下可能少于 5 个。

  6. 在评估模式下 ("评分项的用户) ,配置以下附加参数:

    • 查询用户和相关用户必须具有共同评分的最小项数:此值设置建议阈值。 键入的编号表示目标用户和潜在相关用户必须评分的最小项数。 默认值为 2,这意味着两个用户至少必须对两个项进行评分。

    • 单个用户的相关用户池的最小大小:此值控制创建建议所需的最小相似用户数。 默认情况下,该值为 2,这意味着,如果由于对同一项进行评级而有两个相关的用户,可以考虑它们相关并生成建议。

  7. (可选)。 如果拥有用户特征数据集,请将其连接到“用户特征”。

    用户特征数据集中的第一列应包含用户标识符。 其余列应包含描述用户特征的值,例如性别、首选项、位置等。

    评分 Matchbox 推荐 器会忽略具有已评分项的用户的功能,因为这些功能已在训练过程中学习。 因此,请预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。

    警告

    如果模型是在未使用用户功能的情况下训练的,则不能在评分期间应用用户功能。

  8. (可选) 如果你有项特征的数据集,请将其连接到项 特征

    项特征数据集中的第一列必须包含项标识符。 其余列应包含可确定项特征的值。

    评分 Matchbox 推荐 器会忽略已评分项的功能,因为这些功能已在训练过程中学习。 因此,可以将评分数据集限制为 启动项或未由任何用户评分的项。

    警告

    如果在未使用项特征的情况下训练了模型,则在评分时请勿使用项特征。

  9. 运行试验。

评分 Matchbox 推荐 器返回的评分数据集列出了与输入数据集中每个用户相关的用户。

对于输入数据集中指定的每个用户,结果数据集包含一组相关用户。

  • 第一列包含目标用户的标识符 (作为输入输入) 。

  • 将生成包含相关用户的标识符的其他列。 其他列的数量取决于在选项"要查找的用户的最大 相关用户数"中设置的值

    相关用户按与目标用户的关系强度进行排序,相关用户 1 列的关联度 最强

查找相关项

通过预测相关的项目,你可以基于已评级的项目为用户生成建议。

  1. 向试验中添加训练的建议模型,并将其连接到 训练有素的 Matchbox 推荐器。 必须使用 定型 Matchbox 推荐器创建模型。

  2. 推荐器预测类型:选择 " 相关项"。

  3. 连接包含要为其生成预测的用户的数据集。 此数据集的格式取决于你使用的是生产模式下的评分模块还是评估模式。

    • 生产模式,从所有项使用

      要评分的数据集必须包含要为其查找相关用户的项目。

      第一列和唯一列应包含项标识符。 如果包含其他列,则会引发错误。 使用 " 选择数据集中的列 " 模块可以删除不必要的列。

    • 评估模式,使用 " 从分级项 (进行模型评估)

      要评分的数据集应包含2-3 列,其中包含用户-项对。 第一列应包含用户标识符。 第二列应包含项标识符。

      数据集可以包含第2列中的项 (第2列中的第三列评级) 中的项,但会忽略分级列。

  4. 要查找的项> 的最大相关项数:键入一个数字,该数字指示每个项的最大预测数。

    默认值为5,表示最多可以返回五个相关项目,但可能小于5。

  5. 如果使用评估模式 (来自分级项) 的用户,请配置以下其他参数:

    • 查询项和相关项必须按 common 分级的最小项数:此值设置建议的阈值。 键入的数字表示由目标用户和一些相关用户进行评级的最小项数。 默认值为2,表示至少必须由目标用户和相关用户对两个项进行评级。

    • 单个项的相关项池的最小大小:此值控制创建建议所需的最小项数。 默认情况下,该值为2,这意味着,如果你有很少两个项是通过相同的用户进行评级的,你可以将它们视为相关并生成建议。

  6. (可选)。 如果拥有用户特征数据集,请将其连接到“用户特征”。

    用户特征数据集中的第一列应包含用户标识符。 其余列应包含可确定用户特征的值,例如其性别、偏好、位置等。

    计分 Matchbox 推荐器将忽略具有分级项目的用户的功能,因为在训练过程中已经了解了这些功能。 因此,可以预先筛选数据集以仅包含冷启动用户,或未对任何项进行评级的用户。

    警告

    如果在不使用用户功能的情况下培训了模型,则在评分过程中不能应用用户功能。

  7. (可选) 如果您具有项功能的数据集,则可以将其连接到 项功能

    项特征数据集中的第一列必须包含项标识符。 其余列应包含用于对项进行特征化的值。

    评分项的功能被 评分 Matchbox 推荐器忽略,因为在训练过程中已经了解了这些功能。 因此,你可以将评分数据集限制为 冷启动项,或将未由任何用户评分的项限制。

    警告

    如果在未使用项特征的情况下训练了模型,则在评分时请勿使用项特征。

  8. (可选) 在预测实验中,您可以使用名为 定型数据集的第五个输入端口从预测结果中删除模型定型数据中包含的现有用户。

    要应用此筛选器,请将原始训练数据集连接到该输入端口。

  9. 运行试验。

计分 Matchbox 推荐器返回的数据集列出了输入数据集中每个项的相关项。

  • 第一列包含作为输入) 提供的项 (目标项的标识符。

  • 将生成包含相关项的标识符的其他列。 额外的列数取决于你在选项中设置的值、 要为项查找的相关项的最大数量

    相关项按与目标项的关系的强度排序,其中最相关的项在列中具有 相关项 1

技术说明

本部分包含有关使用推荐器创建预测的一些常见问题的解答。

冷启动用户和建议

通常,若要创建建议, 分数 Matchbox 推荐器 模块需要的输入与定型模型时使用的输入相同,包括用户 ID。 这是因为算法需要知道它在训练期间是否已了解有关此用户的一些信息。

但对于新用户,你可能还没有用户 ID,只有某些用户特征,如年龄、性别等。

你仍可以为系统新用户创建建议,方法是将其作为冷启动用户处理。 对于此类用户,建议算法不使用过去的历史记录或以前的评级,仅使用用户功能。

出于预测目的,冷启动用户定义为 ID 尚未用于训练的用户。 为确保 ID 不会与已在训练中使用的 ID 匹配,可以创建新的标识符。 例如,可以在指定的范围内生成随机 ID,或提前为冷启动用户分配一系列 ID。

但是,如果你没有任何协作筛选数据(如用户特征的矢量),则最好使用分类或回归学习器。

Matchbox 推荐器的生产用途

如果已 vspackage 使用 Matchbox 推荐器,然后将该模型移动到生产环境中,则在评估模式和生产模式下使用推荐器时,请注意这些主要区别:

  • 根据定义,评估需要可以在测试集中根据基本事实进行验证的预测。 因此,评估推荐器时,它必须只预测在测试集中已评级的项目。 这必然会限制预测的可能值。

    但是,操作模型时,通常会更改预测模式,以根据所有可能的项目提出建议,从而获得最佳预测。 对于这些预测中的许多预测,都不存在对应的真值,因此无法以试验期间所使用的方式验证建议的准确性。

  • 如果未在生产环境中提供用户 ID,而是仅提供特征向量,则可能会收到针对所有可能用户的所有建议列表。 请确保提供用户 ID。

    若要限制返回的建议数,还可以指定针对每个用户返回的最大项数。

  • 无法仅针对以前未分级的项生成预测。 这是设计的结果。

    原因在于,为了仅建议未分级的项,推荐器需要将整个定型数据集与模型一起存储,这会增加存储的使用。

    如果你只想要推荐用户看不到的项,可以请求多个要推荐的项,然后手动过滤掉已评级的项。

连续更新推荐器

机器学习当前不支持推荐模型的联机更新 (或持续定型) 。 如果要捕获对建议的用户响应并使用这些响应来改进模型,建议定期重新训练完整模型。 不能进行增量训练,但可以对定型数据应用滑动窗口,以确保使用最新数据时数据量最小化。

预期输入

名称 类型 说明
经过训练的 Matchbox 推荐器 ILearner 经过训练的 Matchbox 推荐器
要评分的数据集 数据表 要评分的数据集
用户特征 数据表 包含描述用户的特征的数据集

此数据可选
项特征 数据表 包含描述项的特征的数据集

此数据可选

模块参数

名称 范围 类型 默认 说明
推荐器预测类型 列表 预测类型 项推荐 指定推荐器应输出的预测类型
推荐的项选择内容 列表 项选择 来自评分的项(用于模型评估) 选择要从中做出推荐的项集
相关用户选择 列表 用户选择 来自为项评分的用户(用于模型评估) 选择查找相关项时要使用的用户集
相关项选择 列表 [项选择 来自评分的项(用于模型评估) 选择查找相关项时要使用的项集

Outputs

名称 类型 说明
评分数据集 数据表 评分数据集

例外

异常 描述
错误 0022 如果输入数据集中的选定列数不等于预期数量,将出现异常。
错误 0036 如果提供了给定用户或项的多种特征,将出现异常。
错误 0013 如果传递给模块学习器的参数具有无效的类型,则会发生异常。
错误 0035 如果没有提供给定用户或项的任何特征,将出现异常。
错误 0053 如果 Matchbox 推荐没有用户特性或项目,则会发生异常。
错误 0003 如果一个或多个输入为 NULL 或为空,将出现异常。

有关特定于工作室和经典 (模块) 的列表,请参阅机器学习代码

有关 API 异常的列表,请参阅机器学习 REST API代码

另请参阅

训练 Matchbox 推荐器
评估推荐器
评分