独家 | 一文读懂推荐系统知识体系-上(概念、结构、算法)

本文主要阐述:

  • 推荐系统的3个W
  • 推荐系统的结构
  • 推荐引擎算法

浏览后四章的内容请见下篇。

1. 推荐系统的3个W

1.1 是什么(What is it?)

推荐系统就是根据用户的历史行为、社交关系、兴趣点、所处上下文环境等信息去判断用户当前需要或感兴趣的物品/服务的一类应用。

1.2 为什么(Why is that?)

为什么我们要用到推荐系统呢?随着信息技术和互联网的发展,人类从信息匮乏时代走向了信息过载(Information Overload)时代

对于信息消费者,也就是用户,从大量信息中找到自己感兴趣的信息变得越来越困难;对于信息生产者,让自己生产的信息在众多信息中脱颖而出也变得越来越困难。推荐系统正是为了解决这一矛盾而应运而生的。

推荐系统的主要任务就是联系用户和信息。对用户而言,推荐系统能帮助用户找到喜欢的物品/服务,帮忙进行决策,发现用户可能喜欢的新事物;对商家而言,推荐系统可以给用户提供个性化的服务,提高用户信任度和粘性,增加营收。我们可以通过一组数据了解推荐系统的价值:

Netflix:2/3 被观看的电影来自推荐 Google新闻:38%的点击量来自推荐 Amazon:35%的销量来自推荐

当你看到这些数字,推荐系统的价值就不言而喻了吧?

1.3 用在哪(Where to apply?)

在这个信息爆炸的时代,信息过载问题催生了推荐系统在我们日常生活中方方面面的渗透:电子商务、电影或视频网站、个性化音乐网络电台、社交网络、个性化阅读、基于位置的服务、个性化邮件、个性化广告……在你逛淘宝、订外卖、听网络电台、看美剧、查邮件、淘攻略的时候,推荐系统在你不知不觉中将你可能感兴趣的内容推送给你。和搜索引擎不同,个性化推荐系统需要依赖用户的行为数据,一般都是作为一个应用存在于不同网站之中。在互联网的各大网站中都可以看到推荐系统的影子。例如都是逛淘宝,女同胞们和男同胞们看到的网页界面会有所不同。

以淘宝为例,本人(女)看到的淘宝界面:

男票看到的淘宝界面:

每个人的喜好不同,在页面上浏览的内容就不同,我们的每一次点击和搜索都会在网站上留下记录。淘宝的推荐系统正是通过分析大量我们平时浏览商品的行为日志,推测出我们的喜好,从而给不同用户提供不同的个性化界面,来提高网站的点击率和转化率。

2. 推荐系统的结构(Structure)

尽管不同的网站使用不同的推荐系统,但是总的来说,几乎所有的推荐系统的结构都是类似的,都由线上和线下两部分组成。线下部分包括后台的日志系统和推荐算法系统,线上部分就是我们看到的前台页面展示。线下部分通过学习用户资料和行为日志建立模型,在新的上下文背景之下,计算相应的推荐内容,呈现于线上页面中。

3. 推荐引擎算法(Algorithm)

3.1 协同过滤推荐算法

3.1.1 关系矩阵与矩阵计算

在一个推荐系统中,存在三类关系:用户与用户(U-U矩阵)物品与物品(V-V矩阵)用户与物品(U-V矩阵)

  • U-U矩阵
  • 算法原理

在基于用户相似度的协同过滤中,用户相似度的计算是基本前提。Pearson相关系数主要用于度量两个变量 i 和 j 之间的相关性,取值范围是+1(强正相关)到-1(强负相关),计算公式为:

式中,I_{ij} 为用户 i 和 j 共同评价过的物品的集合,c 是这个集合中的物品元素,r_{j,c} 是用户 j 对物品 c 的评价值,r_{i,c} 为用户 i 对物品 c 的评价值,\overline {r_{i}}\overline r_{j} 分别表示用户 i 和 j 对物品的平均评价值。

  • 算法流程

算法输入:用户行为日志。

算法输出:基于协同的用户相似度矩阵。

A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。 B. 对于n个用户,依次计算用户1与其他n-1个用户的相似度;再计算用户2与其他n-2个用户的相似度。对于其中任意两个用户 i 和 j :

a) 查找两个用户共同评价过的物品集I_{ij}

b) 分别计算用户 i 和对物品 j 的平均评价\overline r_{i}\overline r_{j}

c) 计算用户间相似度,得到用户 i 和 j 的相似度。

C. 将计算得到的相似度结果存储于数据库中。

  • V-V矩阵
  • 算法原理

在基于物品相似度的协同过滤中,物品相似度的计算是基本前提。将物品的评价数值抽象为n维用户空间中的列向量 x_{i}x_{j} ,使用修正的余弦相似度,计算公式为:

式中,U_{x_{i}x_{j}} 为对物品x_{i}x_{j} 共同评价过的用户的集合, 是用户 u 对物品x_{i} 的评价值,\overline r_{x_{i}}\overline r_{x_{j}} 分别表示用户对物品x_{i}x_{j} 的平均评价值。

  • 算法流程

算法输入:用户行为日志。 算法输出:基于协同的物品相似度矩阵。

A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。 B. 对于n个物品,依次计算物品1与其他n-1个物品的相似度;再计算物品2与其他n-2个物品的相似度。对于其中任意两个物品 i 和 j:

a) 查找对物品 i 和 j 共同评价过的用户集U_{ij}

b) 分别计算用户对物品 i 和 j 的平均评价\overline r_{i}\overline r_{j}

c) 计算物品间相似度,得到物品 i 和 j 的相似度。

C. 将计算得到的相似度结果存储于数据库中。

  • U-V矩阵

在真实的推荐系统中,一方面U-V矩阵的行列数会随着用户和物品数量变得庞大,另一方面,因为用户实际上只能对有限数量的物品做出评价,所以U-V矩阵的内部会非常稀疏。系统在直接处理这些庞大稀疏矩阵时,耗费的时间、内存和计算资源都十分巨大。因此需要采取降低计算复杂度的方法。矩阵分解技术是一种有效降低矩阵计算复杂的方法,它的实质是将高维矩阵进行有效降维。

  • 奇异值分解(SVD)

SVD将给定矩阵分解为3个矩阵的乘积: M=U\Sigma V_{T}式中,矩阵\Sigma 为对角阵,其对角线上的值 \sigma 为矩阵M的奇异值,按大小排列,代表着矩阵M的重要特征。将SVD用在推荐系统上,其意义是将一个系数的评分矩阵M分解为表示用户特性的U矩阵,表示物品特性的V矩阵,以及表示用户和物品相关性的\Sigma 矩阵。

  • 主成分分析(PCA)

在推荐系统中,对于有较多属性的物品(物品的信息用向量

表示)可用PCA处理进行降维,将m×n的物品矩阵转化为m×k的新矩阵。

3.1.2 基于记忆的协同过滤算法

  • 基于用户的协同过滤算法

基于用户的协同过滤(user-based collaborative filtering)算法是推荐系统中最古老的算法,产生于1992年,最初应用于邮件过滤系统,1994年被GroupLens用于新闻过滤。在此之后直到2000年,该算法都是推荐系统领域最著名的算法。

  • 算法原理

什么是基于用户的协同过滤算法?举个简单的例子,我们知道樱桃小丸子喜欢葡萄、草莓、西瓜和橘子,而我们通过某种方法了解到小丸子和花伦有相似的喜好,所以我们会把小丸子喜欢的而花伦还未选择的水果(葡萄和橘子)推荐给花伦。

通过上面的例子我们可以做出如下总结:假设用户为U_{i}(i=1,2,...,n) ,物品M_{j}(j=1,2,...,m)U_{i}M_{j} 的评分为r_{i,j} ,基于用户的协同过滤算法主要包含以下两个步骤:

A. 搜集用户和物品的历史信息,计算用户u和其他用户的相似度Sim(u,N_{i}) ,找到和目标用户Ui兴趣相似的用户集合N(u)

B. 找到这个集合中用户喜欢的,且目标用户还没有听说过的物品推荐给目标用户。

基于用户的协同过滤子引擎,通过下面的公式来计算用户对物品的喜好程度:

式中,P_{uj} 表示用户 u 对物品 j 的喜好程度,rN_{i,j} 表示用户Ni对物品 j 的评价,Sim(u,N_{i}) 表示用户 u 和用户 N_{i} 的相似度。最后根据P_{uj} 来对候选物品进行排序,为用户推荐分值最高的Top-N个物品。

  • 算法流程

算法输入:用户行为日志,基于协同的用户相似性矩阵。 算法输出:初始推荐结果

A. 访问用户行为日志,获取近期变化的用户ID集合U。

B. 针对集合U中每个用户 u:

a) 访问用户相似矩阵,获取与用户相似的用户合集N(u)。 b) 对于N(u)中的每一个用户ui: 获取与用户ui有关联的物品合集M_{ui}

针对物品合集M_{ui} 中的每个物品,计算用户偏好值。 c) 对集M(u)中的所有物品进行按照用户偏好进行加权、去重、排序。 d) 取Top-N个物品,为每个物品赋予解释。 e) 保存Top-N个物品到初始推荐列表中。

  • 适用性

由于需计算用户相似度矩阵,基于用户的协同过滤算法适用于用户较少的场合; 由于时效性较强,该方法适用于用户个性化兴趣不太明显的领域。

  • 基于物品的协同过滤算法

基于物品的协同过滤(item-based collaborative filtering)算法是目前业界应用最多的算法。无论是亚马逊网,还是Netflix、Hulu、Youtube,其推荐算法的基础都是该算法。

  • 算法原理

基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。比如,我们知道樱桃小丸子和小玉都喜欢葡萄和西瓜,那么我们就认为葡萄和西瓜有较高的相似度,在花伦选择了西瓜的情况下,我们会把葡萄推荐给花伦。

ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

假设用户为U_{i}(i=1,2,...,n) ,物品M_{j}(j=1,2,...,m)U_{i}M_{j} 的评分为r_{i,j} ,基于物品的协同过滤算法主要分为两步:

A. 对于目标用户U_{i} 及其待评分的物品M_{j} ,根据用户对物品的历史偏好数据,计算物品M_{j} 与其他已评分物品之间的相似度 Sim(j,i),找到与物品M_{j} 相似度的物品合集N(u);

B. 根据所有物品 N(u) 的评分情况,选出N(u)中目标用户U_{i} 可能喜欢的且没有观看过的推荐给目标用户并预测评分。

式中,M_{u,i} 为用户 u 对物品 i 的评分,\overline M_{u} 是用户 u 对他买过的物品的平均打分。

ItemCF通过下面的公式来计算用户对物品的喜好程度:

式中,r_{uj} 表示用户 u 对物品 j 的喜好程度,物品 i 是用户买过的物品,r_{ui} 表示用户 u 对物品 i 的偏好程度,然后根据r_{uj} 来对候选物品进行排序,为用户推荐分值最高的物品。

  • 算法流程

算法输入:用户行为日志,基于协同的物品相似性矩阵 算法输出:初始推荐结果

A. 访问用户行为日志,获取该用户最近浏览过物品的用户集合U。 B. 针对集合U中每个用户u:

a) 访问用户相似矩阵,获取与用户相似的用户合集N(u)。 b) 访问物品相似矩阵,获取与M(u)相似的物品合集N(u)。 c) 针对物品合集M(ui)中的每个物品,计算用户偏好值。 d) 根据用户偏好值,对N(u)的物品进行排序。 e) 取Top-N个物品,为每个物品赋予解释。 f) 保存Top-N个物品到初始推荐列表中。

  • 适用性

适用于物品数明显小于用户数的场合; 长尾物品丰富,用户个性化需求强烈的领域。

  • UserCF和ItemCF的比较

3.1.2 基于模型的协同过滤算法

  • 基于隐因子模型的推荐算法

隐语义模型是最近几年推荐系统领域最为热门的研究话题,它的核心思想是通过隐含特征(latent factor)联系用户兴趣和物品。也就是,对于某个用户,首先找到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。

  • 基本算法

基于兴趣分类的方法大概需要解决3个问题:

A. 如何给物品进行分类? B. 如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度? C. 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?

隐含语义分析技术采取基于用户行为统计的自动聚类,可以自动解决物品分类问题。LFM通过如下公式计算用户 u 对物品 i 的兴趣:

这个公式中,P_{u,k}q_{i,k} 是模型的参数,其中, 度量了用户 u 的兴趣和第 k 个隐类的关系,而度量了第 k 个隐类和物品 i 之间的关系。要计算这两个参数,需要一个训练集,对于每个用户 u ,训练集里都包含了用户 u 喜欢的物品和不感兴趣的物品,通过学习这个数据集,就可以获得上面的模型参数。

  • LFM和基于邻域的方法的比较
  • 理论基础

LFM具有比较好的理论基础,它是一种学习方法,通过优化一个设定的指标建立最优的模型。基于邻域的方法更多的是一种基于统计的方法,并没有学习过程。

  • 离线计算的空间复杂度

基于邻域的方法需要维护一张离线的相关表。在离线计算相关表的过程中,如果用户/物品数很多,将会占据很大的内存。而LFM在建模过程中,可以很好地节省离线计算的内存。

  • 离线计算的时间复杂度

在一般情况下,LFM的时间复杂度要稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。但总体上,这两种算法在时间复杂度上没有质的差别。

  • 在线实时推荐

UserCF和ItemCF在线服务算法需要将相关表缓存在内存中,然后可以在线进行实时的预测。LFM在给用户生成推荐列表时,需要计算用户对所有物品的兴趣权重,然后排名,不太适合用于物品数非常庞大的系统,如果要用,我们也需要一个比较快的算法给用户先计算一个比较小的候选列表,然后再用LFM重新排名。另一方面,LFM在生成一个用户推荐列表时速度太慢,因此不能在线实时计算,而需要离线将所有用户的推荐结果事先计算好存储在数据库中。因此,LFM不能进行在线实时推荐,也就是说,当用户有了新的行为后,他的推荐列表不会发生变化。

  • 推荐解释

ItemCF算法支持很好的推荐解释,它可以利用用户的历史行为解释推荐结果。但LFM无法提供这样的解释,它计算出的隐类虽然在语义上确实代表了一类兴趣和物品,却很难用自然语言描述并生成解释展现给用户。

  • 基于朴素贝叶斯分离的推荐算法
  • 算法原理

由于推荐问题可以看成分类问题,因此可以使用机器学习领域中的分类算法加以解决。朴素贝叶斯分类算法是贝叶斯分类算法中比较简单的一种,它的基本思想是:对于给出的待分类物品和既定的类别,计算该物品在各个类别中出现的频率,哪个类别计算出的概率大就将物品归于那个类。在推荐系统中,朴素贝叶斯分类能够在已知某些评分的情况下,通过计算概率预测未知评分。

计算中用到贝叶斯定理:

式中,表示事件B已经发生的前提下事件A发生的概率;P(A)和P(B)均为无条件概率。

  • 算法流程

算法输入:已知目标用户对物品V_{x} 之外的物品的评分情况,以及其他用户对各物品的评分情况。

算法输出:确定目标用户对物品V_{x} 的评分rV_{x}

A.

为一个待分类项,a_{1},a_{2},..,a_{m}rV_{x} 的特征属性; B. 设类别集合

C. 计算

a) 找到一个已知分类的待分类项集合作为训练样本; b) 统计得到在各个类别下各个特征属性的条件概率估计,即

c) 如果各个特征属性是条件独立的,则根据贝叶斯定理有如下关系:

因为分母对所有类别为常数,因此只需将分子最大化即可,又由于各特征属性是条件独立的,所以有:

D.

,则rV_{x}\in y+{k}

  • 适用性

朴素贝叶斯分类实现起来比较简单,准确率高,但是分类的时候需要学习全部样本的信息。因此,朴素贝叶斯分类适用于数据量不大,类别较少的分类问题。

3.2 基于内容(CB)的推荐算法

  • 基础CB推荐算法
  • 算法背景

基础CB推荐算法利用物品的基本信息和用户偏好内容的相似性进行物品推荐。通过分析用户已经浏览过的物品内容,生成用户的偏好内容,然后推荐与用户感兴趣的物品内容相似度高的其他物品。

比如,用户近期浏览过冯小刚导演的电影“非诚勿扰”,主演是葛优;那么如果用户没有看过“私人订制”,则可以推荐给用户。因为这两部电影的导演都是冯小刚,主演都有葛优。

计算公式为:

式中,u_{i} 表示用户,q_{j} 表示物品,u_{ik} 表示用户在第 k 个方面的特征,q_{jk} 表示物品在第 k 个方面的特征,

表示u_{i}q_{j} 在第 k 个特征方面上的相似度,表示权重\lambda _{k}

  • 算法流程

算法输入:物品信息,用户行为日志。 算法输出:初始推荐结果。

A. 物品表示:每个物品使用特征向量

表示,m_{i} 其中表示物品的特征属性; B. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好; C. 保存Top-K个物品到初始推荐结果中。

  • 适用场景

适用于基础CB架构的搭建,尤其是对新上线物品会马上被推荐非常有效,被推荐的机会与老的物品是相同的。

  • 基于TF-IDF的CB推荐算法
  • 算法背景

在推荐系统中,用户的反馈往往分为两类:评分和文字评论。前者通过分数直接反映用户对物品的喜好程度,后者则需要从文字当中提取关键信息,这时需要用到TF-IDF(Term Frequency-Inverse Document Frequency)。TF-IDF算法被公认为信息检索中最重要的发明,在搜索、文献分类和其他相关领域有广泛应用。

TF-IDF是自然语言处理领域中计算文档中词或短语的权值的方法,是词频(Term Frequency, TF)和逆转文档频率(Inverse Document Frequency, IDF)的乘积。TF指的是某一个给定的词语在该文件中出现的次数,这个数字通常会被正规化,以防止它偏向长的文件(同一个词语在长文件里可能会比段文件有更高的词频,而不管该词语重要与否)。IDF是一个词语普遍重要性的度量,某一特定词语的IDF,可以由总文件数目除以包含该词语的文件数目,再将得到的商取对数得到。

  • 算法原理

TF-IDF算法基于这样一个假设:若一个词语在目标文档中出现的频率高而在其他文档中出现的频率低,那么这个词语就可以用来区分出目标文档。这个假设的主要信息有两点:

  • 在本文档出现的频率高;
  • 在其他文档出现的频率低。

因此,TF-IDF算法的计算可以分为词频(TF)和逆转文档频率(IDF)两部分,由TF和IDF的乘积来设置文档词语的权重。

假设文档集包含的文档数为N,文档集中包含关键词k_{i} 的文档数为n_{i}f_{ij} 表示关键词k_{i} 在文档d_{j} 中出现的次数,f_{dj}

表示文档d_{j} 中出现的词语总数,k_{i} 在文档d_{j} 中的词频TF_{ij} 定义为 TF_{ij}=\frac{f_{ij}}{f_{dj}} 这个数字通常会被正规化,以防止它偏向长的文件。

IDF衡量词语的普遍重要性。\frac {ni}{N} 表示某一词语在整个文档中出现的频率,由它计算的结果取对数得到关键词k_{i} 的逆文档频率IDF_{i}

由TF和IDF计算词语的权重为

可以看出,TF-IDF与词语在文档中的出现次数成正比,与该词在整个文档集中的出现次数成反比。在目标文档中,提取关键词的方法就是将该文档所有词语的TF-IDF计算出来并进行对比,取其中TF-IDF值最大的个数组成目标文档的特征向量来表示该文档。

  • 基于KNN的CB推荐算法
  • 算法背景

KNN(k-Nearest Neighbor)算法基于这样的假设:如果在特征空间中,一个样本的k个最邻近样本中的大多数样本属于某一个类别,则该样本也属于这个类别。

  • 算法原理

KNN在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,它们都是要首先找到与目标物品相似的且已经被用户 u 评价过的 k 个物品,然后根据用户 u 对这 k 个物品的评价来预测其目标物品的评价。它们的差别在于,CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而CB推荐算法中KNN是根据物品画像来计算相似度的,所以对于后者来说,如何通过物品画像来计算物品间的相似度是算法中的关键步骤。相似度的计算可以使用余弦相似度或Pearson相关系数的计算方法。

  • 算法流程

算法输入:用户已评分物品,目标物品 i 。 算法输出:用户对目标物品 i 的评分。

A. 采用余弦相似度公式计算相似度。 B. 选择最近邻。在用户 u 评过分的所有物品中,找出 k 个与目标物品 i 相似度最高的物品,并用 N(u,i) 来表示这出 k 个物品的集合。 C. 计算预测值。在第二步的基础上,可使用以下公式计算用户对目标物品的评分:

式中,\widehat r_{u,i} 表示用户 u 对物品 i 的预测评分,S_{i,n} 是相似度。

  • 基于Rocchio的CB推荐算法
  • 算法背景

Rocchio是从用户浏览历史中抽取用户喜好的物品特征来构建用户画像的一种常用算法,是信息检索领域处理相关反馈(Relevance Feedback)的一个著名算法。它提供了如何通过用户浏览的物品,反馈计算用户特征向量中属性值的方法。

举个简单例子,假如用户观看过“星球大战”和“加勒比海盗”,并给予高分,那么根据用户的行为历史数据构建画像时,用户的特征向量可表示为{“动作”:1,“欧美”:1,“科幻”:1,“冒险”:0.5}。

  • 算法原理

Rocchio算法基于这样的假设:如果我们需要计算出最精准度的用户特征向量U_{c} ,那么这个用户特征向量应该与用户喜欢的物品特征最相似,与用户讨厌的物品特征最不同。若V_{1} 表示用户喜欢的物品,V_{h} 表示用户讨厌的物品,那么根据Rocchio算法的思想,定义最优的用户特征向量为:

式中,

表示用户特征向量与用户喜欢的物品的相似度,采用余弦相似度计算,公式为:

更新用户的特征向量,修改公式为:

式中,U_{0} 是原始的用户特征向量,\ \alpha 、\beta 、\gamma 为权重。若用户新的历史数据较多,那么可以增大\beta\gamma 的值,反之,用户更新数据较少则可以适当减小\beta\gamma 的值。在基于内容的物品推荐中,根据用户的历史行为数据建立用户画像,我们可以采用Rocchio算法不断地调整用户的特征向量U_{c}

  • 基于决策树的CB推荐算法
  • 算法背景

基于决策树的推荐算法在训练阶段会生成一个显示的决策模型。决策树可以通过训练数据构建并有效判断一个新的物品是否可能受到欢迎。当物品的特征属性较少时,采用决策树算法能够取得不错的效果,另外,决策树学习的思想也比较容易被理解,在物品推荐时的可解释性较好。

  • 算法原理

在物品推荐系统中,决策树的内部节点通常表示物品的特征属性,这些节点用于区分物品集合,例如,通过物品中是否包含这个特征将其进行分类。在只有两个分类的简单数据集中,用户是否对物品感兴趣一般出现在决策树的叶子节点上。

  • 基于线性分类的CB推荐算法
  • 算法背景

将基于内容的物品推荐问题视为分类问题时,可以采用多种机器学习方法。从一个更抽象的角度上看,大部分学习方法致力于找到一个可以准确区分用户喜欢和不喜欢的物品的线性分类模型系数。

将物品数据用n维特征向量来表示,线性分类器试图在给定的物品特征空间中找到一个能够将物品正确分类的平面,一类点尽可能在平面的某一边(喜欢),另一类在平面的另一边(不喜欢)。

  • 算法原理

基于线性分类器的CB推荐算法通过物品特征的线性组合进行分类。若输入的物品特征向量为

,输出的结果 y 表示用户是否喜欢物品,则线性分类器可以表示为:

式中,\overrightarrow w_{i} 表示物品特征向量对应的权重,根据输入的物品特征属性做出决定输出结果。

  • 基于朴素贝叶斯的CB推荐算法
  • 算法背景

基于朴素贝叶斯的推荐系统假设用户和物品的特征向量中的各个分量之间条件独立,判断用户是否对某个物品有兴趣的方法是将这个问题转化为分类问题:喜欢和不喜欢。

计算物品分类情况的后验概率为:

式中,

表示物品的相关属性;C为物品的分类,

表示在分类 c 的一个物品的特征属性v_{i} 出现的概率。这样,物品分类的后验概率可以通过观察分析训练数据得到。

  • 算法原理

推荐系统中,分类 c 下的一个物品特征属性v_{i} 的条件概率用v_{i} 在分类 c 下所有物品中出现的频率近似表示,即

式中,

表示在标记为的物品 c 出现的次数,

表示在这些物品中出现的所有特征属性的个数。为了预防计算概率为0的情况,对式子进行平滑,新公式如下:

式中,|V|表示所有物品中的出现的不同特征属性数。

3.3 基于知识的推荐算法

3.3.1 概述

基于知识(Knowledge-based, KB)的推荐算法,是区别于基于CB和基于CF的常见推荐方法。如果说CB和CF像通用搜索引擎的话,KB好比某个领域的垂直搜索引擎,可以提供该领域的特殊需求,包括专业性的优质特征,帮助提高搜索引擎在特定领域的服务。

以视频推荐为例,一部电影的上映时期和档期热度,哪些导演执导的一定是大片,变形金刚和指环王系列口碑肯定不会太差,都是非常有价值的推荐信息。此外,基于知识的推荐,也更容易满足主观个性化需求。例如,对于VIP用户,如果配置好了偏好,就可以为其提供更加精准的推荐服务。

  • 约束知识与约束推荐算法

如今网上购物所能涵盖的物品越来越丰富,人们逐渐发现推荐系统的CF和CB推荐算法并不能很好地适应某些特殊物品的推荐需求。例如,更新换代非常快的而人们又通常不会经常更换的电子产品。对于这些产品来说,其各方面的性能参数在几年间就会有很大变化,代表历史偏好的用户画像并不能很好地反映用户当前的购买需求,于是就需要推荐系统将用户当前的需求作为重要信息参考源。人们发现可以利用物品的参数特征等属性形成约束知识,再将用户对物品的特定刻画为约束条件,然后经过对物品集合的约束满足问题的求解,就可以得到用户所期望的物品了。

  • 创建推荐任务

推荐任务是以元组(R,I)的形式表示出来,其中用集合 R 表示目标用户对物品的特定需求,即对物品的约束条件,用集合 I 表示一个物品集合。推荐的任务就是从集合 I 中确定出能够满足集合 R 要求的物品。

  • 推荐任务的解决

推荐任务的解决是以找到可能的集合 S 为目标,集合 S 应满足的条件是S\subseteq I ,并且

,其中,\sigma 表示对集合 I 进行合取查询的运算符,R 表示对物品的约束条件或选择标准。

  • 冲突集

冲突集CS应满足的条件为:CS \subseteq R ,并且

。特别地,当不存在集合CS'\subset CS 时,集合CS被称为最小冲突集。

  • 诊断集

诊断集\Delta 应满足的条件是\Delta \subseteq R ,并且

。特别地,当不存在集合\Delta ' \subset \Delta 时,集合\Delta 被称为最小诊断集。

  • 关联知识与关联推荐算法
  • 算法原理

关联知识以关联规则为表现形式,用以描述数据库中数据之间关联性的知识。在推荐系统领域,可以通过对用户画像中关联规则的挖掘分析来分析用户的习惯,发现物品之间的关联性,并利用这种关联性指导系统做出推荐。

  • 算法流程

算法输入:n个用户画像。

算法输出:针对目标用户u的Top-N推荐列表。

A. 从系统中的n个用户画像中挖掘出所有的强关联规则,建立集合P_{u} 以表示目标用户u尚未观看但极有可能感兴趣的物品。

B. 再次使用置信度对集合P_{u} 中的物品进行高低排序。

C. 取出排序列表中的前N个物品构成Top-N推荐列表。 由于对系统中全体用户的画像进行规则关联挖掘意义不明显且计算量大,所以基于关联规则的推荐算法常与CF推荐算法混合使用。在这类混合方案中,使用了CF推荐算法中的最近邻算法将用户画像数目n限定在目标用户的最邻近范围内,使得关联规则挖掘算法处理的数据规模被有针对性地限定在一定范围内。

3.4 混合推荐算法

各种推荐方法都有优缺点,为了扬长补短,在实际中常常采用混合推荐(Hybrid Recommendation)。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。

  • 加权式:加权多种推荐技术结果。
  • 切换式:根据问题背景和实际情况或要求决定变换采用不同的推荐技术。
  • 混杂式:同时采用多种推荐技术给出多种推荐结果为用户提供参考。
  • 特征组合:组合来自不同推荐数据源的特征被另一种推荐算法所采用。
  • 层叠式:先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。
  • 特征补充:一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。
  • 级联式:用一种推荐方法产生的模型作为另一种推荐方法的输入。

李中杰,数据派研究部志愿者,清华热能系博士生。擅长数据分析处理及机器学习算法Python实现,对大数据技术充满热情,曾获天池大数据IJCAI16口碑实体商户推荐赛冠军和菜鸟网络最后一公里极速配送冠军。

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2017-10-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

干货 | 重温五条 AI 基础规律

AI 科技评论按:如果每个人都有足够的时间和热诚,并乐意去大学拿个 AI 学位,那你大概就不会读到这篇博客了。 虽说 AI 的工作方式挺神秘的,但在处理技术问题...

9520
来自专栏数据派THU

独家 | 如何改善你的训练数据集?(附案例)

这张幻灯片是Andrej Karpathy 在Train AI 演讲的一部分,我很赞同它表达的观点。它充分体现了深度学习在研究和应用上的差异。学术论文几乎全部集...

11940
来自专栏数据的力量

干货 | 从定义到应用,数据挖掘的一次权威定义之旅

16540
来自专栏AI研习社

学 AI 和机器学习的人必须关注的 6 个领域

近期热门的话题, 人们开始重新讨论这一基本定义----什么是人工智能(AI)。有些人将 AI 重新命名为「认知计算」或「机器智能」,而其他人则错误地将 AI ...

16820
来自专栏智能算法

2017年关于深度学习的十大预测

Carlos E. Perez对深度学习的2017年十大预测,让我们不妨看一看。有兴趣的话,可以在一年之后回顾这篇文章,看看这十大预测有多少准确命中:) ? 1...

42560
来自专栏量子位

连AI都在看《英雄联盟》游戏直播

原作:Robert Hunt(FormDs创始人) 李林 问耕 编译整理 量子位 出品 | 公众号 QbitAI 打游戏和看人打游戏,都是一种乐趣。 最近,吃鸡...

39080
来自专栏AI研习社

博客 | 重温五条 AI 基础规律

雷锋网AI 科技评论按:如果每个人都有足够的时间和热诚,并乐意去大学拿个 AI 学位,那你大概就不会读到这篇博客了。 虽说 AI 的工作方式挺神秘的,但在处理技...

10010
来自专栏专知

【下载】面向机器智能的TensorFlow实践书籍和代码

【导读】自2015年11月TensorFlow第一个开源版本发布以来,它便迅速跻身于最激动人心的机器学习库的行列,并在科研、产品和教育等领域正在得到日益广泛的应...

46780
来自专栏PPV课数据科学社区

干货 | 从定义到应用,数据挖掘的一次权威定义之旅

什么是数据挖掘 前两天看到群里有人问,什么是数据挖掘,现在就数据挖掘的概念做一下分析,并且尽量用大白话说一下数据挖掘到底是个啥东西,为啥大数据来了数据挖掘也火了...

30850
来自专栏ATYUN订阅号

【业界】是时候解决深度学习的生产力问题了

深度学习正在推动从消费者的手机应用到图像识别等各个领域的突破。然而,运行基于深度学习的人工智能模型带来了许多挑战。最困难的障碍之一是训练模型所需的时间。 ? 需...

35160

扫码关注云+社区

领取腾讯云代金券