评估推荐器
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
评估推荐器模型预测的准确性
类别:机器学习/评估
模块概述
本文介绍如何使用机器学习 Studio (经典) 中的 "评估推荐器" 模块来度量建议模型做出的预测的准确性。 使用此模块,可以评估四种不同类型的建议:
针对给定用户和项预测的评级
针对给定用户推荐的项
发现与给定用户相关的用户列表
发现与给定项相关的项列表
使用建议模型创建预测时,将为每个受支持的预测类型返回略微不同的结果。 " 评估推荐器 " 模块将推导评分数据集的列格式的预测类型。 例如,评分的 数据集 可能包含:
- 用户-项-分级三元组
- 用户及其推荐项
- 用户及其相关用户
- 项及其相关项
此模块还根据所进行的预测类型应用恰当的性能指标。
如何配置评估推荐器
" 评估推荐器 " 模块将推荐模型的预测输出与相应的 "地面" 数据进行比较。 例如, 评分 Matchbox 推荐器 模块生成可通过 评估推荐器进行分析的评分的数据集。
要求
计算推荐器 需要以下数据集作为输入。
测试数据集
测试数据集包含用户-项-分级三元组形式的 "基本" 数据。
如果已经有一个包含用户-项-分级三元组的数据集,则可以使用RecommenderSplit选项应用 "拆分数据" 模块,以便从现有数据集创建定型数据集和相关测试集。
评分数据集
评分的数据集包含推荐模型生成的预测。
此第二个数据集中的列依赖于在评分过程中执行的预测类型。 例如,评分的数据集可能包含以下任何内容:
- 用户可能为项目提供的用户、项目和分级
- 用户及向其推荐的项的列表
- 用户列表,其用户可能类似于用户
- 项的列表,以及 smiliar 项
指标
根据输入类型生成模型的性能指标。 有关详细信息,请参阅以下部分:
评估预测评分
评估预测评级时,评分的数据集 (第二个输入来 评估推荐器) 必须包含 用户-项-分级三元组,满足以下要求:
数据集的第一列包含用户标识符。
第二列包含项标识符。
第三列包含相应的用户-项评分。
重要
若要使计算成功,列名称必须分别为 User
、Item
和 Rating
。
"评估推荐器" 将 "实际数据集" 中的分级与评分的数据集的预测分级进行比较,并计算平均绝对误差 (MAE) ,并 (RMSE) RMSE错误。
" 评估推荐器 " 的其他参数对于评级预测评估不起作用。
评估项目建议
评估项建议时,使用包含每个用户的建议项的评分的数据集:
数据集的第一列必须包含用户标识符。
所有后续列都应包含相应的推荐项标识符,并按项与用户的相关度排序。
在连接此数据集之前,我们建议您对数据集进行排序,使最相关的项目排在最前面。
" 评估推荐器 " 的其他参数对项目建议评估不起作用。
重要
若要使计算推荐器正常工作,列名称必须是 User
、 Item 2
Item 1
Item 3
、等。
"评估推荐器" 将计算平均标准化折扣累积增益 (NDCG) 并在输出数据集中返回。
由于不可能知道建议项的实际 "基本",因此," 评估推荐器 " 在测试数据集中使用用户项评级,作为 NDCG 计算的好处。 为了评估,推荐器评分模块只能为具有真实评级(在测试数据集中)的项提供推荐。
评估相关用户的预测
评估相关用户的预测时,请使用评分的数据集,其中包含每个相关用户的相关用户:
第一列必须包含每个感兴趣的用户的标识符。
所有后续列都包含预测的相关用户的标识符。 相关用户首先按 realtionship (最相关的用户) 的强度进行排序。
若要使计算推荐器正常工作,列名称必须是
User
、Related User 2
Related User 1
Related User 3
、、等。
提示
你可以通过以下方式影响评估:设置感兴趣的用户及其相关用户必须共有的最小项数。
“评估推荐器”根据曼哈顿 (L1 Sim NDCG) 和欧几里得 (L2 Sim NDCG) 距离计算平均规范化折损累积增益 (NDCG),并在输出数据集中返回这两个值。 由于相关用户没有实际的实际情况,因此," 评估推荐器 " 使用以下过程计算平均 ndcg。
对于评分的数据集中每个感兴趣的用户:
在测试数据集中查找所有项,这些项已由感兴趣的用户和考虑中的相关用户评级。
从这些项的分级创建两个向量:一个用于感兴趣的用户,另一个用于考虑相关的用户。
根据曼哈顿 (L1) 或欧几里得 (L2) 距离,计算增益作为生成的两个评级向量的相似性。
使用所有相关用户的增益,计算 L1 Sim NDCG 和 L2 Sim NDCG。
为评分数据集中的所有用户计算 NDCG 值的平均值。
换而言之,增益计算为 (规范化的曼哈顿或 Euclidian) 距离之间的相似性, (计分数据集中第一列中的条目) ,给定相关用户 (评分数据集的第 n 列中的条目) 。 此用户对的提升是使用所有项进行计算的,这些项已在原始数据 (测试集) 中分级。 然后,通过使用对数折扣聚合一个感兴趣的单个用户和所有相关用户的各个收益来计算 NDCG。 也就是说,将为每个感兴趣的用户 (计算一个 NDCG 值) 评分数据集中的每一行。 最后报告的数字是评分数据集中感兴趣的所有用户的算术平均值 (即) 的行数。
因此,为了评估,推荐器评分模块只能预测其项具有真实评级(在测试数据集中)的相关用户。
评估相关项的预测
评估相关项的预测时,使用包含每个相关项的相关项的评分数据集:
第一列必须包含相关项的标识符。
所有后续列都应该包含预测的相关项的标识符,并按它们与感兴趣的项的相关程度排序 (最相关的项首先) 来排序。
若要使计算推荐器正常工作,列名称必须是
Item
、Related Item 2
Related Item 1
Related Item 3
、、等。
提示
你可以通过以下方式影响评估:设置感兴趣的项及其相关项必须共有的最小用户数。
"评估推荐器" 根据曼哈顿 (L1 sim NDCG) 和欧氏 (L2 sim NDCG) 距离计算平均标准化折扣累积 (NDCG) ,并在输出数据集中返回这两个值。 由于相关项没有实际的实际值,因此," 评估推荐器 " 将计算平均 ndcg,如下所示:
对于评分的数据集中的每个感兴趣的项:
在测试数据集中查找已对感兴趣的项和正在考虑的相关项评级的所有用户。
从这些用户的评级创建两个向量,一个用于感兴趣的项,而另一个用于正在考虑的相关项。
根据其曼哈顿 (L1) 或欧几里得 (L2) 距离,计算增益作为生成的两个评级向量的相似性。
使用所有相关项的增益,计算 L1 Sim NDCG 和 L2 Sim NDCG。
对评分数据集中所有感兴趣的项目的 NDCG 值求平均值。
换而言之,增益计算为 (规范化的曼哈顿或 Euclidian) 距离之间的相似性, (计分数据集中第一列中的条目) ,并将给定相关项 (评分数据集的第 n 列中的条目) 。 此项对的提升是使用在原始数据 (测试集) 中分级了这两项的所有用户来计算的。 然后,通过使用对数折扣聚合一个感兴趣的单个项目及其所有相关项的各个收益来计算 NDCG。 也就是说,将为每个感兴趣的项 (计算一个 NDCG 值,) 评分数据集中的每一行。 最后报告的数字是评分数据集中感兴趣的所有项目的算术平均值, (即其行) 。
因此,若要计算,推荐器计分模块只能预测测试数据集中) (的相关项与诚实评级。
示例
有关如何在机器学习中使用推荐模型的示例,请参阅Azure AI 库:
Movie 推荐器示例:演示如何使用建议模型训练、评估和评分。
使用机器学习为 .net 应用程序生成推荐引擎:此博客提供了有关如何生成电影建议模型的详细说明。
预期输入
名称 | 类型 | 说明 |
---|---|---|
测试数据集 | 数据表 | 测试数据集 |
评分数据集 | 数据表 | 评分数据集 |
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
查询用户和相关的用户必须具有共同点分级的项的最小数目 | >=1 | Integer | 2 | 指定必须通过查询用户和相关的用户分级的项的最小数量 此参数可选 |
最小查询项和相关的项必须均得到评级的共同点的用户数 | >=1 | Integer | 2 | 指定的最小查询项和相关的项必须都评级的用户数 此参数可选 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
指标 | 数据表 | 评估度量值的一个表 |
例外
异常 | 描述 |
---|---|
错误 0022 | 如果输入数据集中的选定列数不等于预期数量,将出现异常。 |
错误 0003 | 如果一个或多个输入为 NULL 或为空,将出现异常。 |
错误 0017 | 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。 |
错误 0034 | 如果给定的用户项对存在多个评分,将出现异常。 |
错误 0018 | 如果输入数据集无效,将出现异常。 |
错误 0002 | 如果无法将一个或多个参数从指定类型分析或转换为目标方法所需的类型,将出现异常。 |
有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码。
有关 API 异常的列表,请参阅机器学习 REST API 错误代码。