9

有人可以帮我通俗地解释一下 AWS Personalize 解决方案版本指标,或者至少告诉我这些指标在理想情况下应该是什么样子吗?

我对机器学习一无所知,并且想利用 Personalize,因为它被宣传为“不需要先前知识”的 ML SaaS。但是,我的解决方案结果中的“解决方案版本指标”似乎需要相当高的数学知识。

我的解决方案版本指标如下:
标准化折扣累积
5:0.9881,10:0.9890,25:0.9898
精度
5:0.1981,10:0.0993,25:0.0399
平均倒数排名
25:0.9833

研究

我浏览了Personalize Developer's Guide,其中包括第 72 页上每个指标的简短定义。我还尝试浏览 Wikipedia 关于折扣累积收益平均互惠排名的文章。从阅读中,这是我对每个指标的解释:
NDG = 推荐相关性的一致性;第一个建议和最后一个建议一样重要吗?
精度 = 推荐与用户的相关性;您的建议对所有用户的相关性如何?
MRR = 列表中第一个推荐与列表中其他推荐的相关性;您的第一个建议与每个用户的相关性如何?

如果这些解释是正确的,那么我的解决方案指标表明我高度一致地推荐不相关的内容。这是一个有效的结论吗?

4

1 回答 1

22

好的,我的公司有开发人员层级支持,所以我能够从 AWS 获得这个问题的答案。

答案摘要

指标越接近“1”越好。我对指标的解释非常正确,但我的结论却不是。

显然,这些指标(以及一般的 Personalize)并没有考虑到用户对某个项目的喜欢程度。个性化只关心相关推荐多快到达用户。这是有道理的,因为如果您在队列中获得第 25 个项目并且不喜欢您所看到的任何内容,那么您不太可能继续查找。

鉴于此,我的解决方案中发生的事情是第一个建议是相关的,但其他建议都不相关。

AWS 的详细答复

我将首先从相对简单的问题开始:这些指标的理想值是什么,以便一个解决方案版本可以优于另一个解决方案版本?上述问题的答案是,对于每个指标,数字越大越好。[1] 如果您有多个解决方案版本,请选择这些指标值较高的解决方案版本。请注意,您可以通过覆盖默认配方参数 [2] 创建多个解决方案版本。并通过使用超参数 [3]。

第二个问题:如何理解和解释 AWS Personalize 解决方案版本的指标?我可以从我的研究中确认,您在案例中为这些指标提供的定义和解释是有效的。

在我解释每个指标之前,这里是机器学习中一个主要概念的入门。这些指标是如何计算的?创建解决方案版本期间的模型训练步骤将输入数据集分为两部分,一个训练数据集 (~70%) 和一个测试数据集 (~30%)。在模型训练期间使用训练数据集。一旦模型被训练,它就被用来预测测试数据集的值。一旦做出预测,它就会根据测试数据集中的已知(和正确)值进行验证。[4]

我进一步研究以找到更多资源来了解这些指标背后的概念,并进一步详细说明 AWS 文档中提供的示例。[1]

"mean_reciprocal_rank_at_25"

我们先来了解一下 Reciprocal Rank:例如,电影流媒体服务使用解决方案版本来预测为特定用户即 A、B、C、D、E 推荐的 5 部电影的列表。一旦比较这 5 部推荐电影针对该用户喜欢的实际电影(在测试数据集中),我们发现只有电影 B 和 E 是用户真正喜欢的。倒数排名将仅考虑第一个相关(根据测试数据集正确)推荐,即位于排名 2 的电影 B,它将忽略位于排名 5 的电影 E。因此,倒数排名将是 1/2 = 0.5

现在让我们扩展上面的例子来理解平均倒数排名: [5] 假设我们对三个用户进行了预测,并且推荐了以下电影。
用户 1:A、B、C、D、E(用户喜欢 B 和 E,因此倒数排名为 1/2)
用户 2:F、G、H、I、J(用户喜欢 H 和 I,因此倒数排名为 1/3)
用户 3:K、L、M、N、O(用户喜欢 K、M 和 N,因此倒数排名为 1)
平均倒数排名将是所有个人倒数排名的总和除以为预测运行的查询总数为 3。 (1/2 + 1/3 + 1)/3 = (0.5+0.33+1)/3 = (1.83)/3 = 0.61

对于 AWS Personalize 解决方案版本指标,所有查询中前 25 个建议中第一个相关建议的倒数排名的平均值称为“mean_reciprocal_rank_at_25”。

“precision_at_K”

可以说是模型以最少的推荐量提供相关元素的能力。Coursera 提供的以下免费视频描述了精度的概念。[6] 可以在此处找到关于同一主题的非常好的文章。[7]

让我们考虑相同的示例,电影流媒体服务使用解决方案版本来预测特定用户的 5 部推荐电影列表,即;A、B、C、D、E。一旦将这 5 部推荐的电影与该用户喜欢的实际电影(测试数据集中的正确值)进行比较,我们就会发现只有电影 B 和 E 是用户真正喜欢的。precision_at_5 将是总共 5 部电影中的 2 部正确预测的电影,可以表示为 2/5=0.4

"normalized_discounted_cumulative_gain_at_K"

该指标使用对数和对数标度的概念为相关项目分配权重因子(测试数据集中的正确值)。对数和对数刻度的完整描述超出了本文档的范围。使用对数刻度的主要目的是将范围广泛的数量减少到微小的范围。

discounted_cumulative_gain_at_K
让我们考虑相同的示例,电影流媒体服务使用解决方案版本来预测特定用户的 5 部推荐电影列表,即;A、B、C、D、E。一旦将这 5 部推荐的电影与该用户喜欢的实际电影(测试数据集中的正确值)进行比较,我们就会发现只有电影 B 和 E 是用户真正喜欢的。让我们考虑相同的示例,电影流媒体服务使用解决方案版本来预测特定用户的 5 部推荐电影列表,即;A、B、C、D、E。一旦将这 5 部推荐的电影与该用户喜欢的实际电影(测试数据集中的正确值)进行比较,我们就会发现只有电影 B 和 E 是用户真正喜欢的。要在 5 处产生累积贴现收益 (DCG),每个相关项目都根据其在前 5 个建议中的位置分配一个权重因子(使用对数标度)。这个公式产生的值称为“折现值”。
公式为 1/log(1 + position)
因为 B 在位置 2 所以贴现值为 = 1/log(1 + 2)
因为 E 在位置 5 所以贴现值为 = 1/log(1 + 5 )
累积贴现收益 (DCG) 的计算方法是将两个相关项目的贴现值相加 DCG = ( 1/log(1 + 2) + 1/log(1 + 5) )

normalized_discounted_cumulative_gain_at_K
首先,什么是“理想DCG”?在上面的例子中,理想的预测应该看起来像 B、E、A、C、D。因此,在理想情况下,相关项目应该位于数字 1 和 2。为了在 5 处生成“理想 DCG”,每个相关项目都根据其在前 5 个建议中的位置分配一个权重因子(使用对数标度)。这个公式产生的值称为“折现值”。
公式是 1/log(1 + 位置)。
由于 B 位于位置 1,因此折现值为 = 1/log(1 + 1)
由于 E 位于位置 2,因此折现值为 = 1/log(1 + 2)
理想 DCG 是通过将折现值相加计算得出的两个相关项目 DCG = ( 1/log(1 + 1) + 1/log(1 + 2) )

归一化贴现累积增益 (NDCG) 是 DCG 除以“理想 DCG”。DCG / 理想 DCG = (1/log(1 + 2) + 1/log(1 + 5)) / (1/log(1 + 1) + 1/log(1 + 2)) = 0.6241

我希望上面提供的信息有助于理解这些指标背后的概念。

[1] https://docs.aws.amazon.com/personalize/latest/dg/working-with-training-metrics.html
[2] https://docs.aws.amazon.com/personalize/latest/dg /customizing-solution-config.html
[3] https://docs.aws.amazon.com/personalize/latest/dg/customizing-solution-config-hpo.html
[4] https://medium.com/@ m_n_malaeb/recall-and-precision-at-k-for-recommender-systems-618483226c54
[5] https://www.blabladata.com/2014/10/26/evaluating-recommender-systems/
[6] https:// /www.coursera.org/lecture/ml-foundations/optimal-recommenders-4EQc2
[7] https://medium.com/@bond.kirill.alexandrovich/precision-and-recall-in-recommender-systems-and-一些指标的东西-ca2ad385c5f8

于 2019-10-18T17:06:49.043 回答