18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 电子商务 > 推荐系统实战之利用社交网络

推荐系统实战之利用社交网络

时间:2023-03-13 21:46:01 | 来源:电子商务

时间:2023-03-13 21:46:01 来源:电子商务

前言

项亮写的《推荐系统实战》是作为入门推荐系统的中文书籍不二选择。

《推荐系统实战》共有8章,因此分为八篇博客来写。下面介绍第六章。

其他几章可点击以下链接进行详读。

第六章:利用社交网络数据

互联网中的一个新宠儿便是社交网络。当前的社交网络类型众多,有熟人类型的微信、陌生人社交的陌陌,职场类型的领英和脉脉等基于社交网络的推荐可以很好地模拟现实社会,在现实社会中,很多时候我们都是通过可信的朋友渠道获得推荐。

美国著名的第三方调查机构尼尔森曾调查了影响用户相信某个推荐的因素。调查结果显示,90%的用户相信朋友对他们的推荐,70%的用户相信网上其他用户对广告商品的评论。因此,好友的推荐对增加用户对推荐结果的信任度非常重要,同时也间接说明了社交网络在推荐系统中具有重要的意义。

本章将详细探讨如何利用社交网络数据来给用户进行个性化推荐。主要涉及两点,一是如何利用社交网络来给用户推荐物品,二是如何利用社交网络来给用户推荐好友。本章将以以下几点为核心进行介绍:

本章的思维导图

1.获取社交网络数据的途径

获取社交网络数据途径主要有以下几种:

1.1电子邮件

电子邮件诞生较早,是一种社交工具。我们可以分析用户的联系人列表了解用户的好友信息,还可以 通过研究两个用户之间的邮件往来频繁程度度量两个用户的熟悉程度。只是,因为电子邮件是一个封闭的系统,因此很难获得用户的联系人列表和往来邮件。此外,还可以分析用户邮箱的后缀,来进行社区划分,进而获得一种隐式的社交关系。

1.2用户注册信息

有些网站需要用户填写一些注册信息,例如统计人口信息等。这些信息也是一种隐式的社交网络数据。

1.3用户的位置数据

在网页上可以获得用户位置信息就是IP地址,在移动端可以获取GPS数据。利用这两种数据,可以勾画出用户所属的社区关系。

1.4论坛和讨论组

用户因兴趣相似或在某个帖子下进行讨论,则可推断出两者的社区关系。

1.5即时聊天工具

即时聊天工具如QQ等,有联系人列表,根据用户之间聊天的频次,可以推断出用户的熟悉程度。不幸的是,由于即时聊天和电子邮件系统都是封闭的系统,因此一般不会将这种社会关系公开。

1.6社交网站

近几年,社交网络的发展催生了很多社交应用,例如Facebook和Twitter。这种新型的社交网络与以往封闭的社交应用不同,其用户关系是可以公开的。例如Facebook上,是双向好友,而Twitter上是单向好友。Facebook是社交图谱代表,Twitter是兴趣图谱代表。

2.社交网络数据的简介

社交网络既有节点也有边和权值,因此可以使用图来表示社交网络。定义一个图G(V,E,W),其中V是顶点的集合,E是边的集合,W是对应边的权重。

典型的社交网络有Facebook、Twitter、微博和微信。

此外,在有向社交网络中,还定义out(u)为顶点u指向的顶点集合,例如,如果是在微博中,则out(u)表示用户u关注的好友集合。in(u)则为指向顶点u的顶点集合,以微博为例,其表示关注用户u的好友集合。

一般社交网络数据可划分三类:

接下来,我们看一下社交网络数据的分布规律。

(1) 社交网络中用户的入度(in degree)和出度(out degree)的分布满足长尾分布。

图6-3和图6-4分别展现了Slashdot社交网络数据集中用户的入度和出度分布情况。其中Slashdot是一个类似于Twitter的社交网站。

3.基于社交网络的推荐

基于社交网络的推荐在学术界也被称为社会化推荐,其也已在大多数社交网站中被应用。如大家所熟知的微信中公众号文章会显示被多少朋友阅读,亚马逊利用Facebook好友信息给用户推荐商品等等。

利用社交网络中好友信息给用户做推荐有两个优势:

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

一个直觉就是用户的行为偏好会直接影响到用户。因此,最简单的想法是给用户推荐用户朋友喜欢的物品集合:

/begin{equation} p_{u i}=/sum_{i /in /text { out }(u)} r_{v i} /end{equation}

其中out(v)是用户好友的集合。如果用户v喜欢物品i,则$r_{v i}=1$, 否则为0。

由于用户和不同好友的熟悉度不同,影响的权重也自然应该不相同,因此可以在用户之间加入好友和用户的熟悉程度以及兴趣相似度:

/begin{equation} p_{u i}=/sum_{v /in /operatorname{out}(u)} w_{u v} r_{v i} /end{equation}

其中 w_{uv} 由两部分组成,一部分是用户u和用户v的熟悉程度,另一部分是用户u和用户v的兴趣相似度。用户u和用户v的熟悉程度(familiarity)描述了用户u和用户v在现实社会中的熟悉程度。因此可以用用户之间的共同好友比例来度量:

/begin{equation} /text { familiarity }(u, v)=/frac{|/operatorname{out}(u) /cap /operatorname{out}(v)|}{|/operatorname{out}(u) /cup /operatorname{out}(v)|} /end{equation}

兴趣相似度(similarity)可使用用户的行为来计算。可采用其对感兴趣的物品集合的重合度:

/begin{equation} /text { similiarity }(u, v)=/frac{|N(u) /cap N(v)|}{|N(u) /cup N(v)|} /end{equation}

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

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

在社交网站中存在两种关系,一种是用户对物品的兴趣关系,一种是用户之间的社交网络关系。因此采用图的形式可以融入这两种关系。如下是一个两者结合的二分图:

定义网络关系之后,还需要要定义边的权重。其中用户的社交关系之间的权重可以定义为用户之间相似度的 /alpha 倍(涵盖了熟悉程度和兴趣相似度),而用户和物品之间的权重可以定义为用户对物品喜欢程度的 /beta 倍。其中 /alpha/beta 是根据需要确定。

构建好上述的图之后就可以采用PersonalRank模型来进行建模了。

当然除了上述用户和用户之间设计关系之外,还可以有用户和群组之间的关系。例如社群的存在。

3.3 实际系统中的社会化推荐算法

前面提到的基于领域的社会化推荐算法也存在一定的弊端。其因为在计算时,需要得到用户所有好友的历史行为数据,这一操作对在实际中是非常困难的。因为在社交网络中,用户的历史记录是非常庞大的,因此不太可能将所有用户的行为都缓存在内存中。

为了使其有较快的响应,有两个改进的方法。一是做截断,即选择与用户相似度最高的top-N好友进行计算。此外,在计算时可以只用用户的1一个历史行为数据。二是重新设计数据库。具体思想是给每个用户维护一个消息队列。

3.4 社会化推荐系统和协同过滤推荐系统

社会化推荐系统的结果往往很难通过离线实验去评测,因为其优势不在于增加预测准确度,而是在于通过用户的好友增加用户对推荐结果的信任度,从而让用户单击哪些很冷门的推荐结果。

3.5 信息流推荐

信息流主要关注的问题是如何从社交网络中好友的信息墙给用户展示其感兴趣的信息墙。最典型的信息流推荐算法是Facebook的EdgeRank。

4 给用户推荐好友

好友推荐是社会化网络的重要应用之一,其目标是根据用户现有的好友及他们的行为记录来给用户推荐新的好友。 好友推荐算法在社交网络上也被称为链路预测(Link Prediction)。下面介绍一些简单的算法。

4.1 基于内容的匹配

可以给用户推荐和他们有相似内容属性的用户作为好友。常见的内容属性有用户的人口统计学属性,年龄、性别、职业、毕业学校和工作单位;用户的兴趣,包括用户喜欢的物品和发表的帖子;用户为位置信息,包含用户的住址、IP地址和邮编等。

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

利用用户喜欢的物品,进行相似度计算,其越相似说明他们的兴趣越相投。

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

可以基于用户现有的社交网络图来进行未来好友预测。基于好友的推荐方法,最简单的计算其共同好友的比例。其重叠越大,其推荐可能性就越大。

一点题外话

六度原理是指社会中任意两个人都可以通过不超过6个人的路径相互认识,如果转化为图的术语,就是社交网络图的直径为6。

总结

本章介绍了基于社交网络数据的推荐算法,其包含了获取社交网络数据的途径、社交网络数据的介绍、基于社交网络的推荐和基于社交网络的好友推荐

关键词:社交,网络,利用,系统,实战,推荐

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭