大数据学习笔记4·社会计算中的大数据(2)

本篇继续讨论对用户移动规律的理解:结合地理建模和矩阵分解来做兴趣点推荐。

位置推荐是一类非常受欢迎的应用。在位置推荐中,我们需要理解用户的潜在兴趣并熟悉用户所处的环境。然后,我们就可以根据用户的兴趣和位置的属性发现用户可能感兴趣的地点。与普通推荐任务相比,地理位置在位置推荐中是改进推荐性能的一个重要因素。

在前面一篇中,我们讨论了如何恢复用户行为数据用于移动规律的理解。我们发现,用户移动行为通常集中在像家庭、工作场所和最喜欢的餐馆这样的重要地点。而且,两个地点之间的距离通常很短。所以,我们想要利用这些信息来做一个更好的位置推荐算法。

为了向用户提供好的位置推荐,我们使用用户的位置记录作为一类隐性的反馈数据。

  1. 我们把用户去过的地方看成用户对一个特定地点的偏好。而用户去一个地点的次数则表示偏好的置信度。如果你去一些地方的次数更多,那么我们就更加确信你喜欢这些地方。但是,这并不意味着你喜欢这些地方胜于其他你去的不是那么多的地方。对于没有去过的地方,我们缺乏信息,所以它们可能是正的或者负的。
  2. 你们可以看到这张表或者这个矩阵中的数字。如果这些地点与用户的活动区域很接近,那么我们假定它们更可能是负的。这是因为用户可能非常熟悉那个区域,却故意不去那些地方。但是对于远离用户活动区域而且用户没有去过的地方,我们还不知道用户是不熟悉那个区域还是故意不去那个地方。所以,其中混合了正的偏好和负的偏好。
  3. 实际上,整个工作都是建立在这些重要的假设之上的。

矩阵分解模型

传统上,在推荐任务中,研究人员总是会使用矩阵分解模型。

  1. 我们有一个包含用户和兴趣点这两个维度的矩阵。矩阵中的值表示用户是否去过这个地方或者兴趣点。矩阵中的值可能为0或者1。
  2. 矩阵可以被分解成两个潜因子。一个是用户潜因子,另一个是位置潜因子,两个潜因子都有K这个低维度。
  3. 我们想要区分没有去过的地方,即这些0值。所以,我们在用户潜因子中增加活动区域向量,在地点潜因子中增加影响区域向量。

    这里的活动区域,这两个向量中都有表示区域数量的维度L。活动区域向量是指用户是否去过这些区域。影响区域向量是指这个位置或者兴趣点是否在这些区域中有影响力。

  4. 所以,我们把用户潜因子、位置潜因子、活动区域和影响区域相乘,最终得到原始的用户兴趣点矩阵。

GeoMF

我们使用了一个加权矩阵分解的结构,称之为GeoMF:

假设Cu,i表示用户u访问兴趣点i的次数、我们使用一个以Cu,i作为自变量的单调递增函数来计算权重。去的次数越多,则权重就越大。这里,权重越大意味着我们需要对这个位置的值有更精确的近似。从这个函数中,你们可以看到R会被分解成P乘以Q和X乘以Y。我们增加了W,它是权重矩阵。我们还有一些P、Q和X的正则项。在这里,为了简化计算,我们假设Y在优化中是给定的。我们使用二维核密度估计来估算Y,Y是指兴趣点的影响区域。我们假设兴趣点的位置对每个网格的影响服从高斯分布。这意味着距离位置越近的网格就越容易被兴趣点影响。

这里我们使用迭代方法来进行优化:

首先,我们固定X,即用户的活动区域,更新P和Q。这里展示了我们更新P和Q的方法以及这些步骤的时间复杂度。

然后,我固定P和Q,更新X。这张幻灯片说明了我们更新X的方法以及这些步骤的时间复杂度。

这里我们可以看到我们的方法是怎么样区分未被访问的地点的。假设X不变。由于Y是给定的,我们可以估计(R-X*Y)。对于给定用户,(R-X*Y)可以用这个方程来表示。对于一个位置,我们为用户u圈定了一个活动区域。所以,ru,i的值很可能是负的。实际上,这个值取决于用户u到这个区域去的次数。如果用户经常去这个区域,那么这个值很可能是负的。这意味着,这些没有去过的地方在经常去的地方的周围。所以,它们更有可能在优化中是负的。这表明用户对这些地方不感兴趣。但是,对于远离用户去过的区域的没有去过的地方,这个值可能还是0,这意味着我们无法区分用户是不喜欢这个地方,还是因为还不知道这个地方所以没有去过这个地方。

性能比较

我们有上海、北京、广州、天津和杭州这五个城市的数据。上海有40万用户,北京有16万用户。我们有上海用户的2500万条签到记录。我们把这些数据分成训练集和测试集。约有70%的数据属于训练集,30%的数据属于测试集。在实验中,我们进行了五次独立的测试。使用召回率和准确率作为测量项。我们比较加权矩阵分解和其他五种基准算法。

基准算法包括基于用户的协同过滤(UCF)和贝叶斯矩阵分解(B-NMF)。

我们还比较了加权矩阵分解和规范的奇异值分解以及基于访问频率矩阵的矩阵分解。这两种方法的区别在于在矩阵中是使用访问次数还是0、1值来表示用户访问。我们还比较了加权矩阵分解和有偏的加权矩阵分解。下面是两张分别表示召回率(左)和准确率(右)的图。

这些算法的性能相似,所以我们只能看看表示准确率的这张图。我们可以发现,加权矩阵分解和有偏加权矩阵分解的性能最好,但是它们的性能非常接近。基于访问次数矩阵的矩阵分解性能最差。这意味着访问次数不能直接在矩阵中使用。我们最好使用加权矩阵分解方法,这意味着使用次数作为置信度,但是在矩阵中仍然使用0和1。加权矩阵分解的性能好于UCF和B-NMF。

最终,我们使用加权矩阵分解作为框架。

我们想研究空间聚类现象,文献中已经有很多关于这个现象的研究。

为了研究这些现象,首先忽略用户潜因子和条目潜因子。这意味着要去掉P和Q,而仅保留X和Y,即用户活动区域和地点影响区域。我们比较加权版本和非加权版本。我们分别称加权版本和非加权版本为GeoWLS和GeoLS。我们还比较不同的参数以及二维核密度估计这个基准方法。下面两张图表示召回率和准确率非常相似。从图中可以看到,我们的方法好于二维核密度估计方法。在这里,二维核密度估计方法的性能最差。此外,加权版本的性能好于非加权版本的性能。

最后,我们比较了加权MF、GeoWLS和结合了这两种方法的GeoMF

从图中可以看到,GeoWLS的性能最差。这意味着还需要利用用户潜因子和位置潜因子,也就是P和Q。与WMF相比,考虑了地理约束的GeoMF的性能更好一些。这意味着地理建模能够提高矩阵分解性能,这一点在实验中得到了验证。

总结

  • 使用二维核密度估计来进行地理建模。
  • 使用加权矩阵分解来基于位置访问数据做推荐,在这里将位置访问数据作为一种很好的反馈。
  • 提出GeoMF模型,它结合了地理建模和矩阵分解,我们还提出了优化GeoMF的学习算法并分析了其时间复杂度。实验表明GeoMF的性能优于其他基准算法。
时间: 2024-10-14 15:09:08

大数据学习笔记4·社会计算中的大数据(2)的相关文章

大数据学习笔记6·社会计算中的大数据(4)

上一篇介绍了LifeSpec项目,这个项目是关于用户理解和用户画像的.这篇是社会计算部分的最后一篇,关于用户连接和图隐私. 用户连接与隐私保护 用户连接与隐私保护有很强的相关性. 上图中,左边有两个网络.对于用户连接,我们的目标是映射这两个网络和连接这些网络中的用户节点.然后,我们就能产生一个更大的网络.这样,用户就能够被连接在一起,我们就可以知道跨网络的用户信息. 但是,如果从隐私的角度来看这个问题,把第一个图看成一个匿名化处理后的图,称其为目标图:把第二张图看成辅助图或者攻击者可获得的信息.

大数据学习笔记5·社会计算中的大数据(3)

前两篇文章介绍了我们在用户移动规律的理解方面的研究工作,包括如何处理用户轨迹中的缺失数据以及如何为用户推荐感兴趣的位置.在这一部分,我将展示我们在用户特征研究方面的研究项目. LifeSpec 首先,我想介绍我们近期开展的LifeSpec项目.这个项目的目标是利用社交网络中的用户数据来探索城市生活方式的方方面面. 我们从多个社交网络收集了数据,包括街旁,微博,图书和电影评论网站豆瓣,以及著名的餐馆评论网站点评.我们收集的数据覆盖了超过140万用户,这些用户在我们的数据集中至少有两个账号. 右边这

大数据学习笔记3·社会计算中的大数据(1)

背景信息 什么是用户行为数据,用户行为数据是怎么积累的.为什么我们需要研究用户理解以及为什么用户理解这么重要.在第二部分,我会介绍我们最近关于移动规律理解应用的研究工作.例如,怎样处理用户轨迹中的数据缺失问题,怎么样为用户推荐有趣的地点.在最后一部分,我会展示我们近期在用户分析和隐私保护方面的研究项目. 这张图展示了每分钟用户在一些网站上产生的数据量. 用户数据是怎么样收集的 二十多年之前,那时候普适计算的概念才刚刚被提出来.马克.维瑟提出了普适计算的概念.那时候已经有了大型机和个人计算机,人们

大数据学习笔记2·互联网搜索中的大数据研究

大规模网络搜索的设计 大规模搜索引擎的逻辑结构 上图来自1998年Google两个创始人发表的论文. crawler:爬虫,从互联网上获取文档信息 index:读取这些信息,并记住哪些单词出现在哪些文档中,称为索引 search:使关键词查询成为可能,并对查询结果进行排序 Google的独特性在于:使用anchor text描述目标文档,并利用文档之间的链接对文档的重要性排序,这就是PageRank. Google搜索的主要数据结构 将大文件设计为虚拟文件 每个页面有三个描述维度: sync同步

大数据学习笔记7·城市计算(1)

前言 众所周知,快速的城市化使得很多人的生活变得现代化,同时也产生了很多挑战,如交通拥挤.能源消耗和空气污染. 城市的复杂性使得应对这些挑战看起来几乎是不可能的.近来,传感技术和大规模计算基础设施的进步产生了各种各样的大数据,从社会化媒体数据到交通数据,从地理数据到气象数据.如果使用得当,我们可以使用这些数据去应对城市中面临的各种挑战. 受到这个机会的激励,我们提出了城市计算的解决方案.它把城市传感.城市数据管理.城市数据分析和服务提供变成一个对人的生活.城市运行系统和环境进行不断重复但不显眼的

社会计算中一些名词笔记

社会计算中相关的一些概念,整理下笔记: 1.弱连接[weak tie]:最早来源于Granovetter的"弱连接假设"(weak tie hypothesis),比如下图,弱连接假设是说,如果A和B.C有一条强连接,可以理解成A和B.C是好朋友,则B.C之间形成连接的可能性就会很大,即B.C很有可能也称为好朋友. 也就是说,A和B.C通过强连接连接,则B.C之间的连接一般是存在的,如果B.C之间不存在连接,则B.C之间的连接很容易生成,这个叫做"三元闭包"(For

angular学习笔记(五)-阶乘计算实例(2)

<!DOCTYPE html> <html ng-app> <head> <title>2.3.3计算阶乘实例2</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="script.js"></script> </

Android学习笔记_78_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

angular学习笔记(五)-阶乘计算实例(1)

<!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="script.js"></script> </