第 4 步:使用指标评估解决方案版本 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 4 步:使用指标评估解决方案版本

您可以通过离线和在线指标评估解决方案版本的性能。在线指标是你在用户与实时推荐的互动中观察到的经验结果。例如,您可能会在用户浏览目录时记录点击率。您负责生成和记录任何在线指标。

离线指标是 Amazon Personalize 在您训练解决方案版本时生成的指标。您在创建市场活动并提供推荐之前可以使用离线指标评估模型的性能。离线指标可让您查看修改解决方案的超级参数的效果,或比较使用相同训练数据但使用不同配方的解决方案的结果。对于本节的其余部分,术语指的是离线指标.

为了获取绩效指标,Amazon Personalize 化将输入互动数据拆分为培训集和测试集。分割取决于你选择的食谱类型:

  • 对于 USER_SEGEMENT 食谱,培训集包括每个用户互动数据的 80%,测试集包括每个用户互动数据的 20%。

  • 对于所有其他配方类型,培训集包括每个用户互动数据的 90%,测试集包括每个用户互动数据的剩余 10%。

然后,Amazon Personalize 使用培训集创建解决方案版本。培训完成后,Amazon Personalize 为新解决方案版本提供了测试集中每位用户最早 90% 的数据作为输入。然后,Amazon Personalize 化通过将解决方案版本生成的建议与测试集中每位用户最新 10% 数据中的实际互动进行比较来计算指标。

为了使用比较目的生成基准,我们推荐使用热门程度-计数配方,该配方推荐了前 K 个最热门的项目。

重要

为了使 Amazon Personalize 生成解决方案版本指标,您的输入数据集组中必须至少包含 10 个数据点。

检索指标

您通过调用 GetSolutionMetrics 操作为特定解决方案版本检索指标。

使用 Amazon Python 开发工具包检索指标

  1. 创建解决方案版本。有关更多信息,请参阅 创建解决方案

  2. 使用以下代码来检索指标。

    import boto3 personalize = boto3.client('personalize') response = personalize.get_solution_metrics( solutionVersionArn = 'solution version arn') print(response['metrics'])

下面是来自使用用户个性化配方有额外的优化目标。

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "metrics": { "coverage": 0.27, "mean_reciprocal_rank_at_25": 0.0379, "normalized_discounted_cumulative_gain_at_5": 0.0405, "normalized_discounted_cumulative_gain_at_10": 0.0513, "normalized_discounted_cumulative_gain_at_25": 0.0828, "precision_at_5": 0.0136, "precision_at_10": 0.0102, "precision_at_25": 0.0091, "average_rewards_at_k": 0.653 } }

上述指标在下面使用以下术语进行描述:

  • 相关推荐 是指与特定用户的测试数据中的值匹配的推荐。

  • 排名 是指推荐项在推荐列表中的位置。位置 1(列表的顶部)被假定为与用户最相关。

  • 查询 是指 GetRecommendations 调用的内部等效项。

对于每个指标,数字越大越好。

覆盖

:一项评估指标,指明 Amazon Personalize 可能推荐使用您的模型的唯一项目占交互数据集和项目数据集总数的比例。要确保 Amazon Personalize 推荐您的更多项目,请使用覆盖率分数较高的模型。具有项目浏览功能的配方(例如用户-个性化)比不具备项目浏览功能的配方(例如热门程度-计数)具有更高的覆盖率。

前 25 项中平均倒数排名

一项评估指标,用于评估模型中排名最高推荐的相关性。Amazon Personalize 在针对所有推荐请求的前 25 个推荐中最相关的推荐进行排名时,使用模型的平均准确度计算此指标。

如果您对单个排名最高的推荐感兴趣,那么此指标非常有用。

K (5/10/25) 项标准化折扣累计增益(NCDG)

:一项评估指标,指明了模型中排名较高的推荐的相关性,其中 K 是样本大小,即 5、10 或 25 个推荐。Amazon Personalize 按照以下方式计算此值:根据推荐在排名列表中的位置为其分配权重,其中每个推荐都根据其位置给予一定的折扣(给予较低的权重)。K 项标准化折扣累计增益假定列表中排名较低的推荐与列表中排名较高的推荐相比相关性更低。

Amazon Personalize 化使用加权系数1/log(1 + position),其中列表的顶部是位置1.

此指标奖励出现在列表顶部附近的相关项目,因为列表顶部通常会引起更多关注。

K 处的精度

:一项评估指标,指明了根据样本大小 K(5、10 或 25)个推荐,您模型的推荐的相关性。Amazon Personalize 将按照以下方法计算此指标:前 K 个推荐中的相关推荐数量除以 K,其中 K 为 5、10 或 25。

此指标奖励相关项目的精准推荐。

average_奖励s_at_k

当您为具有优化目标的解决方案创建解决方案版本(训练模型)时,Amazon Personalize 会生成average_rewards_at_k指标。该分数是average_rewards_at_k告诉你解决方案版本在实现目标方面的表现如何。要计算此指标,Amazon Personalize 化计算每位用户的奖励如下:

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

最终average_rewards_at_k是所有人的平均值rewards_per_user标准化为小于或等于 1 且大于 0 的十进制值。值越接近 1,每位用户可以从推荐中获得的平均收益就越多。

例如,如果您的目标是最大限度地提高点击收入,Amazon Personalize 化将用户从前 25 个最昂贵的推荐中点击的商品所产生的总收入除以用户点击的所有推荐商品的收入,从而计算每个用户的得分。然后,Amazon Personalize 化返回所有用户分数的标准化平均值。越接近average_rewards_at_k是 1,平均而言,每位用户可以从推荐中获得的收入越多。

有关更多信息,请参阅优化解决方案以实现额外目标.

命中(击中 K 处)

如果您使用 USER_SEGUNTEMENT 配方训练了解决方案版本,则预测的最高相关 K 结果中与实际用户匹配的平均用户数。实际用户是实际与测试集中的项目进行交互的用户。K 是最相关的用户中前 1%。该值越大,预测越准确。

召回(在 K 处召回)

如果您使用 USER_SEGEMENT 配方训练了解决方案版本,则预测的最高相关 K 结果中与实际用户匹配的预测用户的平均百分比。实际用户是实际与测试集中的项目进行交互的用户。K 是最相关的用户中前 1%。该值越大,预测越准确。

示例

下面是一个简单的示例,其中,为了生成指标,解决方案版本将为特定用户生成一个推荐列表。第二个和第五个推荐与此用户的测试数据中的记录匹配。这些是相关的推荐。如果将 K 设置为 5,将为该用户生成以下指标。

reciprocal_rank

计算:1/2

结果:0.5000

normalized_discounted_cumulative_gain_at_5

计算:(1/log(1 + 2) + 1/log(1 + 5)) / (1/log(1 + 1) + 1/log(1 + 2))

结果:0.6241

precision_at_5

计算:2/5

结果:0.4000

既然您已评估您的解决方案版本,请通过部署最佳解决方案版本创建一个市场活动。有关更多信息,请参阅创建市场活动