推荐系统实践-利用社交网络数据(6)

社交网络中包含着丰富的信息,例如电子邮件,用户注册信息,位置数据,qq等,若两个人经常通过电子邮件联系,则代表两人可能有相同的兴趣。社交图谱(social graph,facebook和qq等(好友一般认识))和兴趣图谱(interest graph(twitter等 好友一般不认识))。

社交网络也可以用图来定义,G(V,E,w)其中V是顶点集合,E是边集合,w是边的权重,分为有向图和无向图,对于twitter这种社交网站加边为有向边,若为qq,facebook这种则添加边为无向边。一般来说有3种不同社交网络数据:

1.双向确认的社交网络数据:形成好友关系需要双方确定,添加无向边,例如qq

2.单向关注的社交网络数据:可以不需要得到允许的单方面关注,添加有向边,例如twitter,微博

3.基于社区的社交网络数据:比如同一个学校,同一家公司等

社交网络推荐可以增加推荐的信任度,还可以解决冷启动问题。

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

如果给定了社交网络数据,我们能想到的简单算法是给用户推荐好友喜欢的东西,但是考虑到用户之间熟悉程度,以及用户之间的兴趣相似度等,用户u对物品i的兴趣可以定义为:

p_{ui}=\sum_{v\in out(u)}{w_{uv}r_{vi}}

其中w_{uv}由两部分组成,分别为用户熟悉程度和用户相似度,用户熟悉程度用共同好友比例定义为:

familiarity(u,v)=\frac{|out(u)\cap out(v)|}{|out(u)\cup out(v)|} 

兴趣相似度用两个用户喜欢物品集合重合度来定义:

similiarity(u,v)=\frac{|N(u)\cap N(v)|}{|N(u)\cup N(v)|} 

 N(u)是用户u喜欢物品的集合。

2.基于图的社会化推荐算法

 在社交网站中存在两种关系,一种是用户对物品的兴趣关系,一种是用户之间的社交网络关系,均可以用图上顶点之间的边来表示。用户和用户之间边的权重为用户之间相似度的α倍(包括熟悉程度和兴趣相似度),用户和物品之间边的权重为用户对物品喜欢程度的β倍。若将社群(即两个用户同属于一个群体)也考虑进来,加入一种表示社群的顶点即可,如下图所示:

 建完图之后使用personalrank算法即可。

3.信息流

EdgeRank算法考虑了信息流中每个会话的时间、长度与用户兴趣的相似度。将其他用户对当前用户信息流中的会话产生过行为的行为称为edge,一条会话的权重定义为:

\sum_{edges\ e}u_ew_ed_e

其中u_e指产生行为的用户和当前用户的相似度,主要为熟悉度;w_e指行为的权重,行为包括创建、评论、赞等不同行为权重不同;d_e指时间衰减参数,越早的行为对权重的影响越低。

此算法仅仅考虑了好友的影响,并没有考虑信息流的内容用户是否感兴趣,还应加入信息流内容用户是否感兴趣这一因素。

4. 给用户推荐好友

好友推荐系统的目的是根据用户现有的好友、用户的行为记录给用户推荐新的好友,从而增加整个社交网络的稠密度与活跃度。好友推荐算法在社交网络中被称为链接预测(link predicition)。

4.1 基于内容的匹配

给用户推荐和他们有相似内容属性的用户作为好友,常用的内容属性如下:

用户人口统计学属性,包括年龄、性别、职业、学校工作单位等;用户的兴趣,包括用户喜欢的物品和发布过的言论等;用户的位置信息等

4.2 基于共同兴趣的好友推荐

twitter和微博这样的社交网站并不关心两个用户现实中是否认识,而更看重两个用户的兴趣是否相似,根据两个用户的行为数据来判断兴趣是否相似,利用UserCF计算用户相似度即可。

4.3 基于社交网络图的好友推荐

可以根据用户之间的社交网络图,给用户推荐好友的好友。对于用户u和用户v,可以用共同好友比例计算他们的相似度:

w_{out}(u,v)=\frac{|out(u) \cap out(v)|}{\sqrt{|out(u)||out(v))|}}

out(u)是在社交网络中用户u指向的其他好友的集合。in(u)是社交网络图中所有指向用户u的集合。在qq这种无向社交网络中out(u)和in(u)是相同的集合,但是在微博这种社交网络中不同,因此可以通过in(u)定义另外一种相似度:

w_{in}(u,v)=\frac{|in(u)\cap in(v)|}{\sqrt{|in(u)||in(v)|}}

这两种相似度并不相同,w_{out}(u,v)表示两个用户关注的用户相似度,而w_{in}(u,v)表示的是关注用户u和用户v的用户的集合重合度。这两种相似度都是无向的,即 w_{out}(u,v)=w_{out}(v,u),下面这个相似度是有向的:

w_{out,in}(u,v)=\frac{|out(u)\cap in(v)|}{|out(u)|}

这个相似度的含义是用户u关注的用户中有多大比例也关注了用户v。但是若v是一个明星,则关注v的人很多,即in(v)集合很大,因此相似度很高,考虑到这个问题,对公式进行改进:

w^{'}_{out,in}(u,v)=\frac{|out(u)\cap in(v)|}{\sqrt{|out(u)||in(v)|}} 

这几种相似度计算并无好坏之分,根据数据集特征不同,所表现出的性能也不同。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值