推荐系统对于个性化用户在各种平台上的体验至关重要。这些系统根据用户的过去行为和偏好预测并建议用户可能会互动的项目。构建一个有效的推荐系统涉及利用大量复杂的数据集来捕获用户-项目的交互。
推荐系统和共同访问矩阵
推荐系统是设计用来给用户提供个性化建议的机器学习算法。它们广泛应用于电子商务、内容流媒体和社交媒体,帮助用户发现符合其兴趣的产品、服务或内容。
推荐系统的数据集通常包括:
- 待推荐的项目,数量可能达到百万级别。
- 用户和项目之间的交互,形成的会话帮助推断未来用户的交互。
共同访问矩阵统计一个会话中一起出现的项目,使得更加容易推荐那些在用户会话中频繁共现的项目。
构建共同访问矩阵的挑战
计算共同访问矩阵涉及处理大量会话并计数所有共现,这可能在计算上非常昂贵。使用像pandas这样的传统方法对于大数据集可能低效且缓慢,需对实际应用进行大量优化。
RAPIDS cuDF,一个GPU DataFrame库,通过提供类似pandas的API来解决这些问题,以实现更快速的数据操作。无需更改代码即可加速计算最多40倍。
RAPIDS cuDF的Pandas加速模式
RAPIDS cuDF设计用于加速大数据集上的加载、连接、聚合和过滤等操作。其新的pandas加速模式允许在pandas工作流程中进行加速计算,使表格数据处理性能提升50倍至150倍。
数据
本教程的数据来自OTTO – 多目标推荐系统Kaggle竞赛,包括一个月的会话数据。数据集包含186万项目和约5亿用户-项目交互,存储在分块的parquet文件中便于处理。
实现共同访问矩阵
为了高效地构建共同访问矩阵,需要将数据分成部分以管理内存使用。加载会话并应用转换以节省内存。将交互限制在可管理的数量内,通过在会话列上自连接数据计算共现。
给项目对分配权重,通过将新权重添加到以前的权重来更新矩阵。最后,矩阵被简化为每个项目仅保留最佳候选项,以确保保留最相关的信息。
生成候选项
通过对会话项目的权重进行汇总,共同访问矩阵可用于生成推荐候选项。具有最高权重的项目将被推荐。该过程从GPU加速中显著受益,使其更加快速和高效。
性能评估
使用召回率评估候选项的有效性。在这种情况下,recall@20指标显示了一个强基线性能,召回率达到了0.5868。这意味着推荐的20个项目中,平均有11个被用户购买。
进一步优化
提高候选项的召回率涉及给予矩阵更多的历史数据,通过考虑交互类型来优化矩阵,并根据会话项目的重要性调整权重。这些变化可以显著提升推荐系统的性能。
总结
本教程演示了如何使用RAPIDS cuDF构建和优化共同访问矩阵。利用GPU加速,共同访问矩阵计算速度提升最多50倍,从而实现快速迭代和推荐系统的改进。
欲了解更多详细信息,请访问NVIDIA 技术博客。
Image source: Shutterstock