推荐系统导论笔记(四)

Content Based Filtering推荐算法概述

CBF算法是一种个性化推荐算法,其基本思想是根据用户的长期、稳定的偏好来推荐Item给用户,如当用户买衣服时,他喜欢棉的、蓝色的、便宜的等等,这些偏好都是长期稳定的。因此,CBF必须解决以下两个问题:

  • 用户偏好的获取与表示
  • Item的匹配

当然,同样存在着大量需要个性化推荐,但无法获取长期、稳定偏好的情况。比如,我要购买电脑或者照相机,我可能只有在买的时才会去网站上寻求推荐,在这种情况下,是不可能获取到长期稳定的偏好的。为了解决这个问题,可以使用Case Based Recommendation或者Knowledge Based Recommendation 算法。其主要思想是用户通过设定筛选条件,或者指定某个特征来进行搜索。如在买电脑的情况下,我们可以指定价格、CPU、内存等筛选条件,然后让系统过滤并按照指定方式排序。这里重点讨论CBF,对CBR不做过多的讨论。

用户偏好的获取、表示与预测

预备知识

TF-IDF

TF-IDF全称是Term Frequency-Inverse Document Frequency,是信息检索领域的一个算法。考虑这样一种情况:当我们进行多关键字搜索时,搜索引擎应该如何返回结果?直观地来考虑,搜索引擎需要做这两件事:

  • 返回所有含有待搜索关键字的页面
  • 将页面按照关键字出现的频率来排序

这种思想非常符合直观的理解。搜索引擎就是来搜索包含关键字的文档的,关键字出现的次数越多,文档越符合我们需求。但这明显忽视了一个问题,是不是所有关键字的重要程度都是相同的?比如,我们搜索“The Civil War”和“中国的景点”,其中的“The”和“的”在英文和中文文档中都大量的出现,如果按照上面的方法,可能返回的是一堆不相关的文档。因此,我们的思想是,对常见的关键字进行惩罚,以凸显不常见关键字的作用。我们可以把上述思想归纳为两点:

  • 关键字出现频率是重要的
  • 不是所有关键字都一样相关

现在我们就可以一窥TF-IDF的全貌了。给定关键字 k ,文档集合c,对于特定的文档 d ,我们有:

tfidf(k,d,c)=tf(d,k)×idf(c,k)
其中, tf(d,k) 一般是关键字 k 在文档d中出现的频数, idf(c,k) 是关键字 k 在文档集合出现的频率的倒数。一般情况下,
idf(c,k)=log|c||{d|kd,dc}|
从上面的讨论可以看出,TF-IDF主要做了如下两件事:

  • 自动对常见的停止词进行惩罚
  • 相对于经常出现的词,提升了核心关键字的作用

Vector Space Model

向量空间模型是用来表示文档的一种线性代数的模型,它将文档表示成为一个向量,其中,向量的每一个维度表示一个关键字。每个维度可以由多种方法来确定,如可以根据某个关键字是否出现、根据某个关键字出现的次数,或者是用上文提到的TF-IDF算法。
当进行文档匹配时,我们计算用户的查询向量 q 与每一个文档向量d的夹角余弦值,并据此返回结果。

用户偏好的获取与表示

用户偏好的获取可用以下伪代码表示

初始化用户 u 的偏好向量p=[0,0,,0];
forall Item i in UserRatedItemCollection uric:
根据特定算法calcuVSM(u,i,c)计算 i 的向量空间模型di,u;
更新偏好向量 p +=di,u;
end for;
返回 p

其中c为全体Item的集合。可以看到,算法的核心是如何设计计算 i 的向量空间模型d的算法calcuVSM(u,i,c)。在设计该算法时,我们应该考虑以下两点:

  • 是否应该考虑凸显不常见的关键字?
  • 如何将用户评分算进去?

考虑第一个问题。正如上文所述,计算向量空间模型时,我们通常采用是否出现某个关键字、关键字出现的频数或者TF-IDF方法。其中,前两个算法无法凸显不常见关键字的作用,TF-IDF可以起到该作用。现给出calcuVSM(u,i,c)部分伪代码。

calcuVSM(u,i,c):
index=0 ;
初始化 i 的关键字向量为di,u=[0,0,,0];
forall Keyword w in KeywordList kl:
di,u[index++]=tfidf(w,i,c)×factorRating(u,i) ;
end for;
返回 di,u ;

对于第二个问题,实际上就是要在算法中凸显用户的喜好和厌恶程度,一般而言,有如下四种方式(以下公式中的 ru,i[1,5] ):

  • 不考虑用户具体评分,即只要用户评分了,权重就为 1 ,否则权重为0,如:
    factorRating(u,i)=1u rated i+0u didnt rate i
  • 阈值加权方式。即只有当用户的评分超过一定阈值,才算到用户的偏好向量中。如:
    factorRating(u,i)=1ru,i>3.5+0ru,i3.5
  • 不带惩罚的正加权方式。即用户评分越高,权重越高,但不会对低评分的项给予负权的惩罚,如:
    factorRating(u,i)=ru,i
  • 带惩罚的加权方式。即用户评分高,权重高;用户评分越低,惩罚越高,如:
    factorRating(u,i)=ru,i3

用户偏好的更新

用户的偏好虽然是长期稳定的,但也存在着随着年龄增长而逐渐演变的可能。如何自动更新用户偏好成了一个待解决的问题。对于这个问题,一个很直观的思路是重新计算该用户的偏好向量,这种方法虽然可行,但计算量较大,且比较浪费。我们可以基于旧的偏好向量来进行动态更新,如:

p=0.95×pold+0.05×pnew

这样就可以节省大量的计算成本。

利用用户偏好进行预测

预测就是指对于一个用户 u 没有接触过的Item i,来预测 u 是否需要或者喜欢i。为此,我们可以计算 u 的偏好向量p i 的关键字向量di,u的余弦相似度,以此来衡量 u i的喜欢或者需要程度。

总结

CBF算法是一种优秀的完全基于内容的算法,它易于实现,计算简单,同时可扩展性极高,但同时,它无法解决互相依赖的关系。如,我喜欢历史纪录片和战争电影。如果我们按照上述算法来进行推荐,我可能收到诸如古装电影和战争纪录片,这显然不是我想要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值