大数据开发齐冀 2019-05-05
在优化算法的过程中,工程师总是强调分析数据进一步提高算法性能。但是对于一些老大难问题怎样分析数据,业内目前还没有一些较为全面和体系化的方法论。2018年在成都举行的 ICCCBDA 2018 会议刊登了一篇题为 Quantitative Analysis of Matthew Effect and Sparsity Problem in Recommender Systems 的论文,尝试着精准量化协同过滤算法中的两个常见难题:马太效应和稀疏性问题。
协同过滤是推荐系统最基本的方法。虽然如今推荐系统已经是深度学习的各种算法像 DeepFM 等的天下,但是一些基本的推荐系统的方法仍然是被用作 baseline 的工具。并且在一些并不具备深度学习能力的企业,协同过滤仍然是流行的算法。
协同过滤面临的两个主要挑战,一个是马太效应,另一个是数据稀疏性问题。马太效应是指在协同过滤的相似性计算中与某个物品相似的物品数量极大,导致这个物品对所有的物品都有影响。另外马太效应会导致数据分布不均衡,直接造成在 MapReduce 计算的过程中效率低下。而数据稀疏性问题指的是有的用户对应的物品过少或者有的物品对应的用户过少,导致算法的计算结果覆盖率很低。研究界和工业界针对这两个问题提出了很多不同的算法意图解决相应问题。但是在 ICCCBDA 2018 的论文之前,并没有人明确的用数学公式对这两个问题进行量化,以方便数据分析和算法的进一步优化。
作者用相似度的期望值来衡量协同过滤中的马太效应,而用相似度计算中关联的用户/物品数来衡量协同过滤中的稀疏性问题。因为推荐系统的应用场景大部分是长尾物品,作者假设了物品的分布服从 Zipf’s Law,也就是热度排名第 i 位的物品的分布占比是 1/i。利用组合数学的方法,我们可以得到一系列的公式。推导过程论文中有详细的记载。最终的推导结果如下:
针对于基于用户的协同过滤的马太效应,我们有用户 A 和用户 B 的平均期望为:
针对基于物品的协同过滤的马太效应,我们有用户 A 和用户 B 的平均期望为:
针对基于用户的协同过滤的稀疏性问题,参与相似性计算的物品数量期望为:
针对基于物品的协同过滤的稀疏性问题,参与相似度计算的物品数量期望为:
作者随后进行了实验,对于推导的公式进行了验证:
上图显示的是基于物品的协同过滤的稀疏性在真实数据集合 LastFM 中的分布,与公式中的马太效应基本吻合。
本文的数学公式推导过程以及整个的数据分析思路并不复杂。主要贡献在于首次提出了量化推荐系统马太效应和数据稀疏性的方法,使得系统化的解决这两个问题成为可能。