推荐算法(5)利用社交网络数据
影响用户相信某个推荐结果的因素,90%的用户相信朋友对他们的推荐。基于社交网络的推荐可以很好的模拟现实社会。所以利用社交网络数据进行推荐可以增加用户对系统的信任度。另外利用用户在社交网络的数据可以解决冷启动问题。
1.社交网络数据来源:
1.电子邮件(联系人通信)
2.用户注册信息(公司信息,居住信息)
3.用户位置数据(网页IP和用户手机GPS;给定位置信息后,可以查表知道用户访问时的地址)
2.社交网络数据简介
图G(V,E,w)定义一个社交网络,V表示顶点集合,表示用户,E是边集合,表示两个用户是否有关系,w表示了边的权重。以Facebook为代表的需要双向确认的网络,可以用无向图表示;以Twitter为代表的社交网络只需要单方面关注,所以需要用有向图表示。
双向确认的社交网络数据:Facebook,用户A,B之间形成的h好有需双方确认。
单向关注的社交网络:微博,Twitter,用户单向关注。
社交网络数据:双向确认;单向关注;基于社区的社交网络数据(同一个公司的人)
3.基于社交网络的推荐
利用用户的社交网络数据进行推荐,主要是源于:
1.好友推荐可以增加推荐的信任度
2.社交网络可以解决冷启动问题
3.1基于领域的社会化推荐
(1)最简单的方法是给用户推荐好友喜欢的物品集合,用户u对物品i的兴趣pui可以通过如下公式计算:
其中out(u)是用户u的好友集合,如果用户v喜欢物品i,则rvi=1,否则为0
(2)当然,不同好友之间的熟悉度和兴趣相似度是不一样的,因此应该在推荐的时候把这个考虑在内:
这里的wuv由两部分相似度构成,一部分是用户u和用户v的熟悉程度,另一部分是用户u和用户v的兴趣相似度。
其中,用户u和用户v的熟悉程度由如下公式度量,即他们之间的共同好友比例:
而用户u和用户v的兴趣相似度由如下公式度量,即他们喜欢的物品重合度:
*Wuv = familirity(u,v)similarity(u,v)
3.2基于图的社会化推荐算法
用户的社交网络可以表示为为社交网络图,用户对物品的行为可以表示为用户物品二分图,而这两种图可以结合成一个图。如下图所示:
在定义完图中的顶点和边后,需要定义边的权重。其中用户和用户之间边的权重可以定义为用户之间相似度的α 倍(包括熟悉程度和兴趣相似度),而用户和物品之间的权重可以定义为用户对物品喜欢程度的β倍。
如果希望用户好友历史行为对推荐结果影响大,则选大的α
如果希望用户历史行为对推荐结果影响大,则选大的β
3.3信息流推荐:
每个用户都有一个信息墙,展示了用户的好友最近的言论。信息流的个性化推荐就是进一步帮助用户从信息墙中挑选有用的信息。目前最流行的信息流推荐算法时Facebook的EdgeRank。
4.给用户推荐好友
4.1基于内容的匹配
:常用内容属性包括,用户的人口统计学属性(年龄、职业、性别等);用户的兴趣(喜欢的物品和发布过的言论);用户的位置信息(用户住址、邮编、IP等);
4.2基于共同兴趣的好友推荐:
利用UserCF的思想,如果两个用户喜欢相同的物品(比如微博),就说明他们具有相似的兴趣;此外,也可以根据用户在社交网络中的发言提取用户的兴趣标签,来计算用户的兴趣相似度。
4.3 基于社交网络图的好友推荐
这里主要介绍基于社交网络图的好友推荐,最简单的方法是给用户推荐好友的好友。主要用来给用户推荐他们在现实社会中互相熟悉,而在当前社交网络中没有联系的其他用户。
通过用户u和用户v的出度和入度,定义Wuv。根据相似度Wuv进行推荐
有下面几种方法计算相似度:
1.Wout(u,v) 越大表示u,v关注的用户集重合度越大
对于用户u和用户v,用共同好友比例计算相似度:
其中out(u)是在社交网络图中用户u指向的其他好友的集合。
2.Win(u,v)越大表示关注u,v的用户的集合重合度越大
也可以定义in(u)是在社交网络图中指向用户u的用户集合,此时可以定义另外一种相似度:
3.Wout,in(u,v) 越大表示u关注的用户中,有多大比例也关注用户v
这个是用户u关注的用户中,有多大比例也关注了用户v: (在该相似度下所有人都和名人有很大相似度)
.Wout,in(u,v)上面公式的一个缺点在于,所有人都和名人有很大的相似度。因此可以用如下方法改进: