推荐系统知识学习记录文本.docx

上传人:scccc 文档编号:14426205 上传时间:2022-02-05 格式:DOCX 页数:23 大小:99.44KB
返回 下载 相关 举报
推荐系统知识学习记录文本.docx_第1页
第1页 / 共23页
推荐系统知识学习记录文本.docx_第2页
第2页 / 共23页
推荐系统知识学习记录文本.docx_第3页
第3页 / 共23页
推荐系统知识学习记录文本.docx_第4页
第4页 / 共23页
推荐系统知识学习记录文本.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《推荐系统知识学习记录文本.docx》由会员分享,可在线阅读,更多相关《推荐系统知识学习记录文本.docx(23页珍藏版)》请在三一文库上搜索。

1、推荐系统实践学习笔记1好的推荐系统1.1 什么是推荐系统推荐系统和搜索引擎都是为了帮助用户从大量信息中找到自己感兴 趣的信息。区别是搜索引擎由用户主动提供关键词来查找信息,推 荐系统则不需要,而通过分析用户的历史行为给用户的兴趣建模, 主动给用户推荐他们可能感兴趣的信息。从物品的角度出发,推荐系统可以更好地发掘物品的长尾。长尾商 品往往代表了一小部分用户的个性化需求,发掘这类信息正是推荐 系统的长项。1.2 个性化推荐系统的应用推荐系统广泛存在于各类网站中,作为一个应用为用户提供个性化 推荐。它需要依赖用户的行为数据,因此一般都由后台日志系统、 推荐算法系统和前台展示页面 3部分构成。应用推荐

2、系统的领域包括:电子商务-亚马逊:基于物品、好友的个性化推荐,相关推荐, 2030%电影视频-Netflix :基于物品的推荐,60%; YouTube、Hulu音乐-Pandora : 专家标记; Last.fm :用户行为社交网络-Facebook、Twitter 阅读-Google Reader基于位置的服务-Foursquare个性化邮件-Tapestry广告-Facebook1.3 推荐系统评测主要有3种评测推荐效果的实验方法:离线实验:划分训练集和测试集,在训练集训练用户兴趣模型,在 测试集预测优点:快速方便缺点:无法用真实的商业指标来衡量用户调查:用抽样的方法找部分用户试验效果优

3、点:指标比较真实缺点:规模受限,统计意义不够在线实验:AB测试优点:指标真实缺点:测试时间长,设计复杂实际中,这三种方法在推荐算法上线前都要完成。评测指标较多,一些重要的如下:用户满意度:调查问卷,线上的用户行为统计、其他的指标转化得 到预测准确度:可通过离线实验计算评分预测,通过均方根误差和平均绝对误差计算,前者更为苛刻。设rui为用户u对物品i的实际评分,r?ui为预测评分RMSE=Zi,i6T(rui- r?ui)2|T| ?MAE=H,iT|rui- r?ui|T|TopN推荐,通过准确率或召回率衡量。设R(u)为根据训练建立的模型在测试集上的推荐,T(u)为测试集上用户的选择Prec

4、ision = Zu u|R(u) nT(u)|Zu u|R(u)|Recall二 口 u|R(u)AT(u)|!i U|T(u)|覆盖率:表示对物品长尾的发掘能力(推荐系统希望消除马太效应)Coverage =| U u e UR(u)| I|上面的公式无法区分不同的分布,可以用嫡或基尼系数来更准确地表述覆盖率H= - B=i np(i)log p(i)p(i)为物品i的流行度的比例。G=1 n- 12j=1n(2j- n- 1)p(j)p(j)为按流行度由小到大排序的物品列表中的第j个物品的流行度的比例。多样性:推荐需要满足用户的广泛的兴趣,表示推荐列表中物品两两之间的不相似性。设s(i,

5、j)表示物品i和j之间的相似度Diversity (R(u)=1 - Ej R(u)js(i,j)12|R(u)|(|R(u)|- 1)Diversity =1| U|Eu uDiversity (R(u)新颖性:指给用户推荐他们不知道的物品,可以用平均流行度做粗算,或者更精确地通过 做用户调查。惊喜度:推荐和用户的历史兴趣不相似,却使用户满意的物品。信任度:只能通过问卷调查来评价,可以通过增加推荐系统的透明度和利用好友信息推荐 来提高信任度。实时性:保持物品的时效性,主要涉及推荐系统实时更新和对新物品的处理。健壮性:开发健壮性高的算法,清理脏数据,使用代价较高的用户行为设计推荐系统。商业目标

6、:推荐系统对于网站的价值。作者认为,离线实验的优化目标是在给定覆盖率、多样性、新颖性等限制条件下,最大化 预测准确度。对推荐系统还需要从多维度来评测,如用户维度、物品维度和时间维度,这样可以更全面 地了解推荐系统的性能。2利用用户行为数据2.1 用户行为用户行为数据一般从日志中获得,可以按反馈的明确性把用户行为分为显性反馈和隐性反 馈。用户行为数据很多满足长尾分布(Zipf定律)f(x)= %xk另外,用户活跃度高,倾向于看冷门的物品。基于用户行为分析的推荐算法一般称为协同过滤算法,包括基于邻域的方法、隐语义模型、基于图的随机游走算法等,应用最广的是基于邻域的方法。2.2 基于邻域的算法基于邻

7、域的算法可以分为基于用户的协同过滤算法(UserCF )和基于物品的协同过滤算法(ItemCF )。2.2.1 基于用户的协同过滤算法UserCF算法主要有两步:找到和目标用户兴趣相似的用户集合找到这个集合中的用户喜欢的,且目标用户 没有听说过的物品,推荐给目标用户设N(u)为用户u有过正反馈的物品集合,N(v)为用户v有过正反馈的物品集合,u和v的兴趣相似度可以用 Jaccard公式或余弦相似度计算wuv=| N(u)CN (v)|N(u)U N(v)|wuv=| N(u)CN (v)|N(u)|N(v)|以余弦相似度为例:def calcUserSimilarityl (t):w = de

8、faultdict( dict )# 相似度矩阵for u in t:for v in t:if u != v:wuv= len (tu & tv) / math .sqrt( len (tu) * len (tv)可以利用稀疏矩阵的性质优化上面的算法:def calcUserSimilarity2 (t):itemUsers = defaultdict( set)# 物品-用户倒排表n = defaultdict( int)#用户喜欢的物品数w = defaultdict( dict )# 相似度矩阵#建立倒排表for u, items in t .iteritems():for i in

9、items:itemUsersi . add(u)#计算相似度for i, users in itemUsers .iteritems():for u in users:nu += 1for v in users:if u != v:wuv= wu .get(v, 0) + 1for u in w:for v in wu:wuv/= math .sqrt(nu * nv)return w然后用上面的相似度矩阵来给用户推荐和他兴趣相似的用户喜欢的物品。用户u对物品i的兴趣程度可以估计为p(u ,i)= Zve S(u,K) CN(i)wuvviS(u,K)为和用户u兴趣最接近的K个用户,N(i)

10、为对物品i有正反馈的用户集合,wuv为用户u和用户v的兴趣相似度,rvi为用户v对物品i的兴趣。def recommend (u, t, w, k):rank = defaultdict( float )# 推荐结果su = sorted (wu .items(), key = itemgetter (1), reverse = True )for v, wuv in su:k:for i, rvi in tv .iteritems():if i not in tu:#排除已经有过反馈的物品ranki += wuv * rvireturn rank通过对不同 K值下的测量发现:准确率和召回率并

11、不和K成线性关系,通过 多次测量可以选择合适的K值K越大,推荐的结果越热门,流行度增大K越大,推荐结果的覆盖率越低可以调整计算用户兴趣相似度的公式来改进算法。注意到用户对冷门物品采取同样的行为更能说明他们的兴趣相似度,可以改用下式计算兴趣相似度wuv= Ue N(u)AN(v)110g(1+| N(i)|)|N(u)|N(v)| V上式用1log(1+| N(i)|) (IIF参数)减小了热门物品对用户兴趣相似度的影响。将 calcUserSimilarity2 第 15 行改为wuv = wu .get(v, 0) + 1 / math .log( 1 + len (users)UserCF

12、算法用的并不多。它的问题是运算复杂度大,并且难以解释推荐的结果。2.2.2 基于物品的协同过滤算法ItemCF算法是目前应用最多的算法。它也主要分为两步:根据用户行为计算物品之间的相似度根据物品的相似度和用户的历史行为给用户生成推荐列表设N(i)为喜欢物品i的用户数,N(j)为喜欢物品j的用户数,i和j的相似度可以计算 为wij=| N(i)AN(j)|N(i)|N(j)| V这里面包含的假设是每个用户的兴趣都局限在某几个方面。计算物品相似度使用和计算用户兴趣相似度类似的方法:def calcItemSimilarity (t):n = defaultdict( int)# 喜欢物品的用户数w

13、 = defaultdict( dict )# 相似度矩阵for u, items in t .iteritems():for i in items:ni += 1for j in items:if i != j:wij= wi .get(j, 0) + 1for i in w:for j in wi:wij/= math .sqrt(ni * nj)return w然后计算用户u对物品i的兴趣程度p(u,i)= M 6 s(i,K)nN(u)wijrujS(i,K)为和物品i最相似的K个物品,N(u)为用户u喜欢的物品集合,wj为物品i和物品j的相似度,ruj为用户u对物品j的兴趣。它的意思

14、是和用户感兴趣的物品 越相似的物品,越应该被推荐。def recommend (u, t, w, k):rank = defaultdict( float )# 推荐结果reason = defaultdict( dict )# 推荐解释for j, ruj in tu .iteritems():sj = sorted (wj .items(), key = itemgetter( 1), reverse = True )for i, wij in sj:k:if i not in tu:#排除已经喜欢的物品ranki += wij * rujreasonij = wij * ruj retu

15、rn rankItemCF算法的一个好处是可以给出推荐解释。对不同K值的测量可以看到:准确率和召回率和K也不成线性关系K和流行度不完全正相关K增大仍会降低覆盖率活跃用户对物品相似度的贡献要小于不活跃用户,可以用和IIF类似的IUF参数来修正物品相似度的计算公式Wj二 XU 6 N (i) CN(j)110g(1+|N(u)i)|N(i)|N(j)|将 calcItemSimilarity 第 9 行改为wij = wi .get(j, 0) + 1 / math .log( 1 + len (items)实际计算中,对于过于活跃的用户,一般 直接 做忽略处理。对ItemCF的另一个改进是将相似

16、度矩阵 归一化,这样可以提高推荐的准确率,以及覆 盖率和多样性。wij = wijmaxiwij2.2.3 UserCF算法和ItemCF算法的比较UserCF算法的特点是:用户较少的场合,否则用户相似度矩阵计算代价很大适合时效性较强,用户个性化兴趣不太明显的领域用户有新行为,不一定造成推荐结果的立即变化对新用户不友好,对新物品友好,因为用户相似度矩阵需要离线计算很难提供令用户信服的推荐解释对应地,ItemCF算法的特点:适用于物品数明显小于用户数的场合,否则物品本目彳以度矩阵计算代价很大适合长尾物品丰富,用户个性化需求强的领域用户有新行为,一定导致推荐结果的实时变化对新用户友好,对新物品不友

17、好,因为物品相似度矩阵需要离线计算用用户历史行为做推荐解释,比较令用户信服和UserCF算法相比,ItemCF算法的离线实验结果要差一些,不过这是在两者优化前的结 果,实际优化后性能是接近的。原始 ItemCF算法的覆盖率和新颖度不高的原因可以归结 为哈利波特问题,也就是热门物品和其他物品的相似度都很高,这个问题一个办法是惩罚 热门物品,同时可能还需要引入物品的内容数据来修正。2.3 隐语义模型隐语义模型(LFM)最近几年非常热门,核心思想是通过隐含特征联系用户兴趣和物品。简单说就是对物品的兴趣分类,对于用户,首先确定他的兴趣分类,然后从分类中选择他 可能喜欢的物品。这里的对物品分类的问题,可

18、以用隐含语义分析技术较好地解决。它基于用户行为统计做分类,和专家标记相比:能代表各种用户的看法能控制分类的粒度能给一个物品多个分类带维度属性可以确定物品在某个分类中的权重这些都是专家标记不能或者很难做到的。隐含语义分析技术其他相关的技术:pLSA、LDA、隐含类别模型、隐含主题模型、矩阵分解等LFM如下计算用户 U对物品i的兴趣Preference (u,i)= rui= pTuqi= Ek=i Kpu,kqi,k参数pu,k表示用户u的兴趣和第k个隐类的关系度,qi,k表示物品i和第k个隐类的关系度。这两个参数需要通过机器学习得到,利用最优化理论,可以通过最小化下式来计算p和qC= 5u,i

19、 6 K(rui- r?ui)2= 2u,i 6 K(rui- pTuqi)2+ 入/pu II2+ 入/qi II2入/pu /2+入/Zqi /2是用来防止过拟合的正则化项,入可通过实验获得。利用随机梯度下降法,令 eui= rui- pTuqi ,求导,得到递推关系pu pu+ %(eui?qi- Zpu)qiqi+ a(eui?pu- ?qi)%为学习速率。对于隐性反馈数据,LFM的一个问题是如何给每个 用户 生成负样本。研究表明,较好的方案是:对每个用户,保证正负样本数相近(设比例为 R);选取那些热门但用户却没有 选择的物品作为负样本(更能明确表明用户对它不感兴趣)。卜面是LFM推

20、荐算法的一个实现:def selectRandomSample (items, positiveitems ):n = len (items)mp = len (positiveitems)#采样mn = 0s = for i in positiveitems:si = 1#正样本rui = 1for k in range (0, n* 3):i = itemsrandom.randint( 0, n - 1)if i in s:continuesi = 0#负样本rui = 0mn += 1if mn mp:#正负样本比例为1breakreturn sdef calcLatentFactor

21、Model(t, k, step, alpha, lamb):p, q = initModel(t, k)# numpy.matrixfor j in range (0, step):for u, positiveitemsin t .iteritems():sampleitems = selectRandomSample(items, positiveitems)for i, rui in sampleitems .iteritems ():eui = rui - pu * qipu = sum (alpha * (eui * qi - lamb * pu)qi = sum (alpha *

22、 (eui * pu - lamb * qi)alpha *= 0.9 return p, qdef recommend (u, p, q):rank = #推荐结果for i in q:ranki = sum (pu * qi)return rank作者通过实验测量了LFM的主要参数 K、入和R对推荐效果的影响。实验表明,正负样本比例 R对性能的影响最大,随着负样本数增加,准确率和召回率明显提高,但达到10倍以后,就比较稳定了;同时覆盖率降低,流行度增加。即R控制了发掘长尾的能力。LFM的效果要优于 UserCF和ItemCF算法,但是在数据集非常稀疏时比较差。设有M个用户,N个物品,T条行

23、为记录,LFM取K个隐类,迭代 S次,离线计 算时,时间复杂度:UserCF 为 O(N(TN)2) , ItemCF 为 O(M(TM)2) , LFM为 O(TKS) , LFM 略高;空间复杂度:UserCF 为 O(M 2) , ItemCF 为 O(N2), LFM为O(K(M + N) , M和N很大时LFM要小很多。LFM在实际使用中的一个困难是难以实现实时的推荐,它的训练要依赖于所有的用户行为。雅虎提出了一个解决方案,使用用户的历史行为得到的用户兴趣分类和物品内容属性 直接生成的物品分类来计算实时的rui ,之后再使用 pTuqi来得到更准确的预测值。2.4 某于图的模型用户行

24、为数据可以用二分图来表示,令G(V,E)表示用户物品二分图,V= VUU VI ,对于用户行为数据集中的每个二元组(u,i),图中都有一套对应的边 e(vu,vi)。使用二分图,给用户u推荐物品的问题 可以转化为度量用户顶点 vu和与它没有边相连的物品顶点在图上的相关性,相关性越高,物品在推荐列表中的权重越高。相关性高的顶点对一般有:顶点间的路径数多顶点间的路径长度都比较短顶点间的路径不会经过出度比较大的顶点书中介绍了一种基于随机游走的PersonalRank 算法。对用户 u ,从它对应的顶点 vu开始在二分图上随机游走。在每个顶点,首先按 概率 决定是继续游走,还是停止而 从vu重新开始游

25、走,如果继续,就从当前顶点指向的顶点中按均匀分布随机选择一个继 续游走。多次游走后,每个物品顶点被访问的概率会收敛到一个值,即推荐列表中物品的 权重。PR(v)= ? ? % 6in(v)PR(v)|out(v)| % in(v)PR(v )|out (v )|+(1 - %)v7uv=vudef calcPersonalRank (g, u, step, alpha ):rank = defaultdict( float )# 推荐结果ranku = 1.0for k in range (step):temp = defaultdict( float )for i in g:for j in

26、 gi:tempj += alpha * ranki / len (gi)if j = u:tempj += 1 - alpharank = tempreturn rankPersonalRank算法的问题是时间复杂度很高,可以考虑减少迭代次数或者利用矩阵计算 的办法改进。3推荐系统冷启动问题在没有大量用户数据的情况下设计个性化推荐系统要面对 冷启动问题。有三类:解决增加新用户的用户冷启动;解决增加新物品的物品冷启动;解决新上线的网站的系统冷启 动。对于这三类问题,可以考虑下面这些办法:提供非个性化的推荐。比如使用热门排行榜作为推荐结果,在用户数据充足之后再改为个性化推荐。利用用户注册信息。可

27、以利用用户注册时填写的年龄、性别、国家、职业等人口统计学信息,让用户填写兴趣描述,从其他网站导入用户行为数据等。基于用户注册信息的推荐算法核心是计算每种特征f的用户喜欢的物品,或者说对物品i的喜好程度p(f,i)p(f,i)=| Nu(i)ANu(f)|Nu(i)|+ 0c%是一个比较大的参数,用来解决数据稀疏时没有 统计意义的问题。选择合适的物品启动用户的兴趣。就是在用户首次访问时,通过让用户反馈一些物品来收集用户的兴趣,可以按决策树的思路设计多个步骤。对物品的选择一般需要比较热门, 具有代表性和区分性,物品集合需要有多样性。利用物品的内容信息。前面3个方法针对的是新用户,而物品的冷启动则在

28、物品时效性较强的场景中非常重要。和 UserCF相比,ItemCF算法的物品冷启动问题比较严重。解决物 品冷启动问题的一个办法是利用内容信息计算物品的内容相似度,给用户推荐内容相似的物品。物品的内容可以用向量空间模型表示,对于文本,该模型通过分词、实体检测、关键词排名等步骤将文本表示成一个关键词向量(e1 ,w1),(e2,w2),。权重 Wi可以用TF-IDF公式计算wi=TF(ei)?IDF(ei尸 N(ei)IiN(ej)log| D|1+| Dei|N(ei)为文本中ei出现的次数,|D|为语料库的文档总数。物品的内容相似度可以通过向量的余弦相似度来计算,和前面类似,可以通过关键词-物

29、品倒排表降低时间开销。尽管内容相似度算法简单,又能解决物品冷启动问题,但一般效果要比协同过滤算法差, 因为它没有考虑用户行为的影响。向量空间模型的一个问题是不能理解含义近似的关键词,因此在内容较少时准确度很差。话题模型通过首先计算文本的话题分布,然后再计算相似度来解决这个问题,如 LDA模型。LDA包含文档、t题、词 3种元素,每个词属于一个话题,通过迭代收敛得到话题的 分布,文档的相似度由话题分布的相似度来度量。分布相似度的计算可以用KL散度(相对嫡):Dkl(P/Q尸 EP(i)lnP(i)Q(i)KL散度越大,分布相似度越低。很多推荐系统在刚建立时,既没有用户行为数据,又没有足够的物品内

30、容信息,这时的一 个常用办法是对物品做专家标记。这个过程也可以加入机器学习和用户反馈的机制。4利用用户标签数据除了上一篇中的基于用户和基于物品的推荐算法,还有一种通过一些特征联系用户和物品的形式。特征可能是物品的属性、隐语义向量和标签等。标签可以分为作者或专家打的标 签和用户打的标签(UGC的标签)。UGC标签是联系用户和物品的一种重要方式,既表 明了用户的兴趣,又描述了物品的语义。UGC标签的应用在 Web 2.0 网站中很常见,如: Delicious、CiteULike、Last.fm、豆 瓣、Hulu等。4.1 用户打标签因为标签的特点,它很适合用到推荐系统中。标签和用户、物品类似,它

31、的流行度分布也满足长尾分布。用户打的标签有各种类型,总体来说,一些是和物品相关的标签,类似于关键词和分类;另一些是和用户相关的标签,比如用户的信息、看法、状态等。4.2 基于标签的推荐考虑到标签后,用户的标签行为数据可以表示为(u,i,b),表示用户u给物品i打了个标签b 。在设计推荐算法时,可以把标签近似于用户的反馈或物品的关键词来考虑。对于评测指标,如果实际的标签可以视作为用户的正反馈,那么准确率和召回率中的T(u)表示测试集上用户打过标签的物品集合。物品的相似度可以用它们的标签向量的 相似度来度量。一个简单的想法是通过计算用户的标签向量和物品的标签向量来得到用户对物品的兴趣p(u,i)=

32、 XbN(u,b)N(i,b)上面的方法同样有热门标签和热门物品权重很大的问题,采用和IIF、IUF和TF-IDF类似的想法改进p(u,i)= XbN(u,b)log(1+ Nu(b)N(i,b)10g(1+ Nu(i)N(u,b)表示用户u打过标签b的次数,N(i,b)表示物品i被打过标签b的次数,Nu(b)表示用过标签 b的用户数,Nu(i)表示给物品i打过标签的用户数。对于新用户或新物品,标签数会很少,为提高推荐的准确率,可能需要对标签集合做扩展。常用的扩展方法有话题模型等,作者介绍了一种基于邻域的方法:标签扩展也就是找到相似的标签,即计算标签的相似度,可以从数据中采用余弦公式计算标签的

33、相似度。使用标签的一个问题是不是所有标签都反映了用户的兴趣,另外将标签作为推荐解释也需要清理标签。常用的标签清理方法有:去除词频很高的停止词去除因词根不同造成的同义词去除因分隔符造成的同义词这里也可以加入用户反馈的途径。也可以利用图模型来做基于标签的个性化推荐。方法和二分图的推荐模型类似,不过这里需要用户、物品和标签三种顶点。同样可以用 PersonalRank 算法计算所有物品顶点相对于当前用户顶点在图上的相关性,排序得到推荐列表。基于标签的推荐的最大好处是可以利用标签做推荐解释。一些网站还使用了标签云表示用 户的兴趣分布,标签的尺寸越大,表示用户对这个标签相关的物品越感兴趣。分析表明:用户

34、对标签的兴趣能帮助用户理解为什么给他推荐某个物品物品与标签的相关度能帮助用户判定被推荐物品是否符合他的兴趣用户对标签的兴趣和物品与标签的相关度对于用户判定有同样的作用客观事实类标签比主观感受类标签作用更大4.3 给用户推荐标签标签系统会希望用户能够给物品打上优质的标签,这样 有利于标签系统的良性循环。给用户推荐标签的好处是方便用户打标签,同时提高标签质量,减少同义词。给用户推荐标签的方法可以是:给用户推荐物品i的最热门标签;给用户推荐他最常用的标签;或者前两种方法的结合。以最后一种为例:pui (b)= %wu,bmax bwu,b+(1 - %)wi,bmax bwi,b上面的方法同样有类似

35、于冷启动的问题,解决的办法可以考虑用抽取关键词(没有标签) 和关键词扩展(有标签但是很少)。图模型同样可以用于标签推荐。在生成用户-物品-标签图后,可以用 PersonalRank算法生成推荐结果。但这里和之前不同,可以重新定义顶点的启动概率为rv= ? ? ? %1- %0v= vuv= viothers5利用上下文信息5.1 时间上下文时间上下文表现在:用户的兴趣是变化的,物品是有生命周期的,季节效应。时效性强的 物品,平均在线天数短。考虑时间信息后,推荐系统就变为一个时变的系统,可以用(u,i,t)表示用户u在时刻t对物品i的行为。推荐系统的实时性要求:在每个用户访问推荐系统时,根据用户

36、在此之前的行为实时计算推荐列表。推荐算法需要平衡考虑用户的近期行为和长期行为,保证对用户兴趣预测的延续性。推荐系统的时间多样性为推荐结果的变化程度,时间多样性高能够提高用户满意度。加入时间效应后,最简单的非个性化推荐算法是推荐最近最热门物品。给定时间T ,物品最近的流行度 ni(T)定义为ni(T)= Uu,i,t),tTl1+ 0t(T- t)5.1.1 时间上下文相关的ItemCF算法根据时间效应,用户在相隔很短的时间内喜欢的物品具有更高的相似度;用户近期行为比很久以前的行为更能体现用户现在的兴趣。由ItemCF算法,考虑到时间效应后(未使用 IUF做修正)Wij= XU N(i)nN(j

37、)f(|tui- tuj|)|N (i)|N (j)| Vf为时间衰减函数,用户对物品 i和j产生行为的 时间距离越远,则f(|tui- tuj|)越小。 取f(A)=11+将 calcItemSimilarity 第 9 行改为wij = wi .get(j, 0) + 1 / (1 + alpha * abs(itemsi - itemsj)另外,类似地p(u,i)= 3 S(i,K)AN(u)11+ 3|t0- tuj|wijruj其中t0为当前时间,tuj越靠近t0 ,和物品j相似的物品就会更受推荐。5.1.2 时间上下文相关的 UserCF算法和ItemCF算法的思路类似,用户兴趣的

38、相似度在间隔较短的时间较高;给用户推荐和他兴趣相似的用户最近喜欢的物品。由UserCF算法,考虑时间效应后(未使用IIF做修正)wuv= Ue N(u)nN(v)ll+ a|tui- tvi|N(u)|N (v)| Vp(u,i)=S(u,K)nN11+ 3|t0- tvi|wuvrvi5.2 地点上下文不同地区的用户兴趣会不同,用户在不同的地方,兴趣也会变化。研究表明,用户具有兴趣本地化和活动本地化的特征。可以从3种数据形式来分析地点上下文的影响:(用户,用户位置,物品,评分)(用户,物品,物品位置,评分)(用户,用户位置,物品,物品位置,评分)对于第一种,可以把用户按地理位置做树状划分,对

39、每一级树节点生成推荐列表,最终对各级推荐结果加权(金字塔模型)。对于第二种,可以先计算忽略物品位置的p(u,i),然后减去物品位置对用户的代价。实验表明,考虑了用户位置的算法要优于ItemCF算法。6禾M用社交网络数据7推荐系统实例作者基于他在Hulu使用的架构总结了基于物品的推荐的推荐系统架构。推荐系统在网站中所处的位置如下图所示。用户行为存储系统将日志系统中的行为日志提取出并存储起来,推荐系统以这些行为日志为输入,把推荐结果提供给UI做展示。日志嘉绩 *推荐系统用户行为数据可以分为匿名的如浏览、搜索等,非匿名的评论、购买等。按数据规模和是 否需要实时存取,数据会被保存到缓存、数据库或者分布

40、式文件系统中。以基于特征的推荐系统为例,推荐系统一般要考虑多种特征,可以由多个推荐引擎组成, 每个引擎负责一类特征或一种任务,推荐系统只需要将推荐引擎的结果合并、排序。这样 做的好处是: 可以方便地增加或删除推荐引擎,以不同的推荐引擎组合来决定推荐结果。可以实现推荐引擎级别的用户反馈。推荐引擎对应于推荐策略,不同的用户可能喜欢不同 的推荐策略,通过分析,可以给不同的用户不同的推荐引擎权重。下图是推荐引擎的架构,主要包括三部分:生成用户特征向量的部分将用户特征向量通过特征-物品矩阵转化为初始 推荐列表的部分对初始推荐列表做过滤、排名的部分。用户行为效据那相比衰过港推荐引擎架构生成用户特征向量用户

41、行为产生的时间。一般地用户近期的行为权重应该更高。用户行为的次数。对同一物品可能有多次行为,对应的物品的特征权重应该更高。用户特征可以分成用户注册时填写的人口统计学特征和从用户行为中计算得到的特征。特征向量由特征和它的权重组成。在利用用户行为计算特征向量时,需要考虑:用户行为的种类。有些行为比其他的行为更重要,一般用户付出代价越大的行为权重应该更局。用户属性数棘即行为捉麻生成用户冷把向收行为特价转换特征时址特征-物楂相控推荐相美表利美在f 初始推程结果候选构曷集什f用户打为反馈物贴属性推荐僻秣造择M终推推结果特出构精 相渔推荐物品的热门程度。热门物品往往 不能代表用户的个性,因此应该加重不热门

42、物品的特征 权重。特征-物品相关推荐相关推荐使用的特征-物品相关表一般不止一个,不同的算法、不同的用户行为数据会有不 同的相关表,系统会根据配置和权重叠加相关表,直接使用叠加后的相关表。如果需要在一个较小的候选物品集合中给用户推荐物品,可以考虑用候选物品集合先做过 滤,避免热门度带来的影响。过滤过滤模块会过滤掉:用户已经产生过行为的物品候选物品以外的物品某些质量很差的物品,比如以评分为依据排名排名模块一般需要包括很多不同的子模块:新颖性:目的是给用户尽量推荐他不知道的、长尾中的物品。一般要对热门物品降权,对ItemCF算法,要对 wij和ruj降权。多样性:很多时候需要增加多样性来提高覆盖率。

43、可以通过分类,或者让推荐理由(来自特征)尽量不同。时间多样性:为了保证用户能看到不同的推荐结果。一方面要保证推荐系统的实时性;另外对于没有新行为的用户,也要记录他看到的推荐结果,并给这些物品降权。用户反馈:这是排名模块最重要的部分,主要通过分析用户之前和推荐结果的交互日志, 预测用户会对什么样的推荐结果感兴趣。如果关注点是点击率,可以使用点击模型。8评分预测问题9最后Strand研究人员总结的10条设计推荐系统的经验:确定你真的需要推荐系统 确定商业目标和用户满意度之间的关系选择合适的开发人员忘记冷启动的问题平衡数据和算法之间的关系社会网络数据找到相关物品容易,但如何展现给用户则很困难不要浪费时间计算相似兴趣的用户,可以直接利用需要不断提升算法的扩展性选择合适的用户反馈方式设计合理的评测系统,时刻关注推荐系统各方面的性能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1