基于最近邻算法的协同过滤(nearest-neighbor collaborative filtering)是一种十分成功的推荐方法。然而,这种方法存在一些缺点,比如数据稀疏性、脏数据、冷启动问题以及可扩展性。
本文将介绍一种基于专家意见向用户推荐内容的新方法,该方法是传统协同过滤的一种变体,它的不同之处在于:该方法不再将最邻近算法用于用户评级数据,而是使用一组独立的专家数据集来计算预测专家意见和用户之间相似性。该方法能在解决传统协同过滤问题的同时保持相近的准确性。
CF(collaborative filtering)是目前构建推荐系统的主流算法。CF 算法假设为了向用户推荐 Items,可以从过去其他类似用户的喜好中提取信息。 例如,最近邻算法通过为每个用户找到许多类似用户来实现这一目的,这些用户的画像随后可用于预测建议。然而,定义用户之间的相似性并不是一件容易的事:它受到数据中的稀疏性和噪声的限制,并且计算量很大。
本文将探讨特定领域的专业评估者(即专家)如何预测一般人群的行为。 在最近的工作中,我们发现传统 CF 算法中的很大一部分误差是来自于用户反馈中的噪声。 因此,本文的目标是使用噪声较小的来源(即专家)的反馈来建立推荐系统。
关于专家的定义,我们认为专家是能对特定领域物品给出经过深思熟虑的、一致且可靠评级的人。
传统 CF 方法使用 KNN 算法来预测用户的评级,该算法基于最近的 k 个邻居来计算 user-item 对的预测结果,计算过程既可以是 item-based 也可以是 user-based,本文选择 user-based (基于用户的 CF )方法。整个计算流程可以拆解为下面几个阶段:
关于相似度的计算方式,我们可以使用余弦相似度的变体:在余弦相似度的基础上加入调整因子,用以调整两个用户共同评定的物品数量。计算公式如下图:
公式中各部分的含义:
基于专家意见的协同过滤(后文简称专家 CF)的不同之处在于,它不需要构造 user-item 评分矩阵,而是构建了一个每个用户和专家集之间的相似性矩阵。
专家 CF 的核心思想是这样的:为了预测用户对特定物品的评级,我们需要找到和给定用户的相似度大于 δ 的专家。
整个算法可以分下面几块来理解:
一、给定用户和专家的空间 V 和相似性度量 sim:V×V→R,我们定义一组专家 E = {e1,…,ek}⊆V 和一组用户 U = {u1 ,…,uN} ⊆ V。 给定一个特定的用户 u⊆U 和一个值 δ,我们找到专家组 E’⊆E,使得:∀e⊆E’⇒sim(u,e)≥ δ。
二、使用固定阈值 δ 的一个缺点是存在找到很少邻居的风险;此外,找到的那些可能没有评定当前项目。 为了解决这个问题,我们将置信度阈值 τ 定义为必须对项目进行评级以信任其预测的最小专家邻居数量。
三、假设上一步中发现的专家组 E’ 和 物品 i,我们发现 E’ 的子集 E′′ 存在这种关系:∀e ⊆ E′′⇒ rei,其中 rei 专家 e ⊆E’ 对 物品 i 的评级 。
四、经过前面的计算,我们得到了专家组 E′′ = e1e2…en,如果 n 的数量小于 τ,再不返回预测结果,如果 n 的数量大于 τ ,则使用如下计算公式算得用户和物品的相似度:
这里列举几个专家CF的优点:
本文是论文《The Wisdom of the Few》的阅读笔记,算是论文一个简短的总结。
另外,本文略去了论文中关于数据集的介绍以及算法最终效果评估这两部分内容,对该部分内容感兴趣或者想深入研究原文的可以下载论文阅读。