MeanReciprocalRank
类keras_rs.metrics.MeanReciprocalRank(
k: int | None = None,
shuffle_ties: bool = True,
seed: int | keras.src.random.seed_generator.SeedGenerator | None = None,
**kwargs: Any
)
计算平均倒数排名 (MRR)。
此指标评估排名质量。它侧重于单个得分最高的、相关项目的排名位置。该指标根据 y_true
中的真实相关性标签(相关性的二进制指示符(0 或 1))和 y_pred
中的预测分数进行处理。y_pred
中的分数用于确定项目的排名顺序,通过降序排序。分数范围从 0 到 1,其中 1 表示第一个相关项目始终排在第一位。
对于 y_pred
中的每个预测分数列表 s
和 y_true
中对应的真实标签列表 y
,每次查询的 MRR 分数计算如下:
MRR(y, s) = max_{i} y_{i} / rank(s_{i})
最终报告的 MRR 分数通常是数据集中所有查询/列表的这些每次查询分数的加权平均值。
注意:sample_weight
对于排名指标的处理方式不同。对于批处理输入,sample_weight
可以是标量、1D 或 2D。标量情况和 1D 情况(列表级权重)是直接的。2D 情况(项目级权重)是不同的,因为样本权重被聚合以获得 1D 权重。有关更多详细信息,请参阅 keras_rs.src.metrics.ranking_metrics_utils.get_list_weights
。
参数
True
。None
,这意味着使用 keras.backend.floatx()
。除非设置为不同的值(通过 keras.backend.set_floatx()
),否则 keras.backend.floatx()
是 "float32"
。如果提供了 keras.DTypePolicy
,则将使用 compute_dtype
。示例
>>> batch_size = 2
>>> list_size = 5
>>> labels = np.random.randint(0, 2, size=(batch_size, list_size))
>>> scores = np.random.random(size=(batch_size, list_size))
>>> metric = keras_rs.metrics.MeanReciprocalRank()(
... y_true=labels, y_pred=scores
... )
屏蔽某些元素(可用于不均匀输入)
>>> batch_size = 2
>>> list_size = 5
>>> labels = np.random.randint(0, 2, size=(batch_size, list_size))
>>> scores = np.random.random(size=(batch_size, list_size))
>>> mask = np.random.randint(0, 2, size=(batch_size, list_size), dtype=bool)
>>> metric = keras_rs.metrics.MeanReciprocalRank()(
... y_true={"labels": labels, "mask": mask}, y_pred=scores
... )