《推荐系统实践》算法纯享(附代码链接)(六)—— 借助社交网络推荐篇

在上一篇博客里面分享的是《推荐系统实践》中上下文推荐相关的推荐算法,对此还不熟悉的读者可以戳这里

关于这个系列会分为如下几个部分:

《推荐系统实践》算法纯享(附代码链接)(一)—— 评价指标篇
《推荐系统实践》算法纯享(附代码链接)(二)—— 协同过滤篇
《推荐系统实践》算法纯享(附代码链接)(三)—— 冷启动篇
《推荐系统实践》算法纯享(附代码链接)(四)—— UGC推荐篇
《推荐系统实践》算法纯享(附代码链接)(五)—— 借助上下文信息推荐篇
《推荐系统实践》算法纯享(附代码链接)(六)—— 借助社交网络推荐篇
《推荐系统实践》算法纯享(附代码链接)(七)—— 评分预测篇

完整代码链接:https://github.com/Magic-Bubble/RecommendSystemPractice

下面将开始本系列的第六部分——借助社交网络推荐篇

6 社会化推荐

6.1 利用社交网络信息推荐

利用用户的社交网络数据进行推荐,主要是源于:

  1. 好友推荐可以增加推荐的信任度
  2. 社交网络可以解决冷启动问题

6.1.1 基于邻域的社会化推荐算法

最简单的方法是给用户推荐好友喜欢的物品集合,用户u对物品i的兴趣 p u i p_ui pui可以通过如下公式计算:

p u i = ∑ v ∈ o u t ( u ) r v i p_{ui} = \sum_{v \in out(u)} r_{vi} pui=vout(u)rvi

其中 o u t ( u ) out(u) out(u)是用户u的好友集合,如果用户v喜欢物品i,则 r v i = 1 r_vi=1 rvi=1,否则 r v i = 0 r_vi=0 rvi=0

当然,不同好友之间的熟悉度和兴趣相似度是不一样的,因此应该在推荐的时候把这个考虑在内:

p u i = ∑ v ∈ o u t ( u ) w u v r v i p_{ui}=\sum_{v \in out(u)}w_{uv}r_{vi} pui=vout(u)wuvrvi

这里的 w u v w_{uv} wuv由两部分相似度构成,一部分是用户u和用户v的熟悉程度,另一部分是用户u和用户v的兴趣相似度。

其中,用户u和用户v的熟悉程度由如下公式度量,即他们之间的共同好友比例:

f a m i l i a r i t y ( u , v ) = ∣ o u t ( u ) ⋂ o u t ( v ) ∣ ∣ o u t ( u ) ⋃ o u t ( v ) ∣ familiarity(u, v)=\frac{|out(u)\bigcap out(v)|}{|out(u)\bigcup out(v)|} familiarity(u,v)=out(u)out(v)out(u)out(v)

而用户u和用户v的兴趣相似度由如下公式度量,即他们喜欢的物品重合度:

s i m i l a r i t y ( u , v ) = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ⋃ N ( v ) ∣ similarity(u, v) =\frac{|N(u)\bigcap N(v)|}{|N(u)\bigcup N(v)|} similarity(u,v)=N(u)N(v)N(u)N(v)

6.1.2 基于图的社会化推荐算法

用户的社交网络可以表示为为社交网络图,用户对物品的行为可以表示为用户物品二分图,而这两种图可以结合成一个图。如下图所示:

在定义完图中的顶点和边后,需要定义边的权重。其中用户和用户之间边的权重可以定义为用户之间相似度的 α \alpha α倍(包括熟悉程度和兴趣相似度),而用户和物品之间的权重可以定义为用户对物品喜欢程度的 β \beta β倍。

在定义完图中的顶点、边和边的权重后,就可以利用前面几章提到的PersonalRank图排序算法给每个用户生成推荐结果。

6.2 给用户推荐好友

代码链接:https://github.com/Magic-Bubble/RecommendSystemPractice/blob/master/Chapter6/为用户推荐好友.ipynb

这里主要介绍基于社交网络图的好友推荐,最简单的方法是给用户推荐好友的好友。主要用来给用户推荐他们在现实社会中互相熟悉,而在当前社交网络中没有联系的其他用户。

有下面几种方法计算相似度:

  1. w o u t ( u , v ) w_{out}(u, v) wout(u,v)

对于用户u和用户v,用共同好友比例计算相似度:

w o u t ( u , v ) = ∣ o u t ( u ) ⋂ o u t ( v ) ∣ ∣ o u t ( u ) ∣ ∣ o u t ( v ) ∣ w_{out}(u, v) = \frac{|out(u)\bigcap out(v)|}{\sqrt{|out(u)||out(v)|}} wout(u,v)=out(u)out(v) out(u)out(v)

其中 o u t ( u ) out(u) out(u)是在社交网络图中用户u指向的其他好友的集合。

  1. w i n ( u , v ) w_{in}(u, v) win(u,v)

也可以定义 i n ( u ) in(u) in(u)是在社交网络图中指向用户u的用户集合,此时可以定义另外一种相似度:

w i n ( u , v ) = ∣ i n ( u ) ⋂ i n ( v ) ∣ ∣ i n ( u ) ∣ ∣ i n ( v ) ∣ w_{in}(u, v) = \frac{|in(u)\bigcap in(v)|}{\sqrt{|in(u)||in(v)|}} win(u,v)=in(u)in(v) in(u)in(v)

  1. w o u t , i n ( u , v ) w_{out,in}(u, v) wout,in(u,v)

这个是用户u关注的用户中,有多大比例也关注了用户v:

w o u t , i n ( u , v ) = ∣ o u t ( u ) ⋂ i n ( v ) ∣ ∣ o u t ( u ) ∣ w_{out,in}(u, v) = \frac{|out(u)\bigcap in(v)|}{\sqrt{|out(u)|}} wout,in(u,v)=out(u) out(u)in(v)

  1. w o u t , i n ′ ( u , v ) w^{'}_{out,in}(u, v) wout,in(u,v)

上面公式的一个缺点在于,所有人都和名人有很大的相似度。因此可以用如下方法改进:

w o u t , i n ′ ( u , v ) = ∣ o u t ( u ) ⋂ i n ( v ) ∣ ∣ o u t ( u ) ∣ ∣ i n ( v ) ∣ w^{'}_{out,in}(u, v) = \frac{|out(u)\bigcap in(v)|}{\sqrt{|out(u)||in(v)|}} wout,in(u,v)=out(u)in(v) out(u)in(v)

对于借助社交网络推荐部分的介绍就到这里,下面将继续分享第七部分——评分预测算法

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统和机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习与推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习和推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习和推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习和推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习和推荐系统相关算法的求职人员

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值