机器学习中HR和NDCG
时间: 2024-03-31 14:23:03 浏览: 42
HR (Hit Rate) 和 NDCG (Normalized Discounted Cumulative Gain) 是机器学习中用于评估排序模型性能的常用指标。
HR 表示在前 k 个推荐结果中有多少个是用户实际感兴趣的物品。例如,如果一个用户实际感兴趣的物品在前 k 个推荐结果中出现了 m 次,则 HR@k 的值为 m/k。HR 越高,表示推荐结果越符合用户的兴趣。
NDCG 是一种针对排名的评价指标,考虑了物品的排名位置和相关性。它通过把推荐结果按照相关性降序排序,然后计算出每个物品的 Discounted Cumulative Gain (DCG) 值,再将其标准化得到 NDCG 值。NDCG 越高,表示推荐结果的排序越符合用户的兴趣。
在实际应用中,HR 和 NDCG 可以被用来评估推荐系统的性能,以及优化排序模型的训练策略。
相关问题
电影推荐中NDCG指标代码
以下是使用Python计算电影推荐中NDCG指标的代码示例:
```python
import numpy as np
def dcg_at_k(r, k):
"""Calculate DCG@K (Discounted Cumulative Gain)"""
r = np.asfarray(r)[:k]
if r.size:
return np.sum(r / np.log2(np.arange(2, r.size + 2)))
return 0.
def ndcg_at_k(r, k):
"""Calculate NDCG@K (Normalized Discounted Cumulative Gain)"""
dcg_max = dcg_at_k(sorted(r, reverse=True), k)
if not dcg_max:
return 0.
return dcg_at_k(r, k) / dcg_max
# Example usage:
# r = relevance scores of recommended movies, with higher scores indicating higher relevance
# k = number of recommended movies to consider for NDCG calculation
r = [3, 2, 3, 0, 1, 2]
k = 6
ndcg = ndcg_at_k(r, k)
print(f"NDCG@{k}: {ndcg}")
```
在代码中,`r` 是推荐电影的相关性得分列表,得分越高表示电影越相关。`k` 是用于计算 NDCG 的推荐电影数。该代码使用 `dcg_at_k` 函数计算 DCG@K,然后计算 NDCG@K 并返回结果。
hr, ndcg = self.validate(self.testloader, self.graph) cur_best = hr + ndcg > best_hr + best_ndcg if cur_best: best_hr, best_ndcg, best_epoch = hr, ndcg, self.epoch wait = 0 else: wait += 1 print('+ epoch {} tested, elapsed {:.2f}s, N@{}: {:.4f}, R@{}: {:.4f}'.format( self.epoch, time.time() - start_time, args.topk, ndcg, args.topk, hr ), flush=True)
这段代码是在每个训练轮次结束后进行模型验证的过程。
首先,调用 `self.validate()` 方法来评估当前训练模型在测试数据集上的性能。`self.testloader` 是测试数据集,`self.graph` 是用于评估的图形。
然后,计算当前的 `hr` 和 `ndcg` 与历史最佳值 `best_hr` 和 `best_ndcg` 的和,并将结果赋值给 `cur_best` 变量。
接下来,通过比较 `cur_best` 和 `True` 来确定当前性能是否超过了历史最佳性能。如果是,则更新 `best_hr`、`best_ndcg` 和 `best_epoch` 的值,并将等待计数器 `wait` 重置为 0。否则,将 `wait` 加 1。
最后,打印出当前轮次的验证结果,包括轮次数 `self.epoch`、经过的时间 `time.time() - start_time`、评估指标的值 `ndcg` 和 `hr`。
这个过程用于监控模型在验证集上的性能,并根据性能的提升或下降来决定是否保存当前模型的状态。通过比较当前性能与历史最佳性能,可以选择保存效果更好的模型状态。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)