社交媒体照片数据包含了丰富的用户历史行为和用户信息。基于这些含地理标签的社交媒体数据,结合多源数据集(如天气数据、图片语义、文本数据等),可以很好地描述用户浏览历史情境,从而精细地刻画用户的“兴趣肖像”,进行个性化的旅游景点推荐。
数据准备
使用Flickr网站提供的公共API获取了2005年1月1日-2016年1月1年的照片数据集,包含照片ID、用户ID、标签信息、拍摄地经纬度(来自相机EXIF信息)、用户来源地、是否职业摄影师等属性信息。使用基于密度的聚类方法对照片数据集进行空间聚类,得到了90个景点,对噪音数据进行密度阈值过滤后得到80,440次签到和11,173位用户,其空间分布如下图:
图1. 旅游景点空间分布
同时,使用Weather Underground网站获取了对应时间段的北京市天气数据,包含平均温度、露点、降水量、气压、风、天气状态等属性信息。根据照片的时间戳和天气信息可以建立用户出行时的情境信息,包括如下几个维度:
1
季节:春(3-5月)、夏(6-8月)、秋(9-11月)、冬(12-2月)
2
时间段:上午(6:00-12:00)、下午(12:00-18:00)、夜晚(18:00-24:00)、凌晨(0:00-6:00)
3
温度:寒冷(<5℃)、凉爽(5-15℃)、温暖(15-25℃)、炎热(>25℃)
4
天气情况:晴朗、小雨/小雪、大雨/大雪(恶劣天气)。
模型概述
根据上述问题描述,本文提出了一种基于模型的推荐系统。如图2所示,推荐系统由两部分组成,分别是生成候选序列的匹配(Matching)过程和候选序列的排序(Ranking)过程。在候选序列的匹配过程中,是在多个类别中选取Top-N个最可能成为候选景点的类别,是一个多分类问题。在候选序列排序中,是对候选景点重新进行打分并重新排序,这是一个回归打分问题。对应不同的任务,本文在这两部分别使用SVM分类模型和GBRT回归模型。
图2. SVM-GBRT模型架构
候选序列的匹配
候选序列的匹配过程中,本文使用了SVM模型。以用户的历史景点签到信息作为输入,得到一个候选的景点序列,这是一个多分类问题。这个过程类似于协同过滤算法的输入和输出结果,都是在进行Top-N的推荐。在这一部分,只是考虑了用户的历史签到信息,因此只能做到粗糙的个性化推荐。
然而,SVM的划分方式是一种二值分类的形式,在面对多分类问题时,并不能用一个超平面完成划分,如图3所示。因此,需要用特殊的形式来组合分类器从而达到多分类的目的。本文采用了多个SVM二分类器,使用“一对多(one-vs.-rest,OvR)”的形式组织分类器。对于一个N类别的多分类问题,OvR的组织形式是对每个类别产生一个SVM二值分类器,其中属于该类别的样本记为正样本,其余类别的样本全部记为负样本,使用N个SVM二值分类器就可以形成一个多分类器。
图3. SVM多分类示意图
另外,SVM分类器接收固定维度的输入,因此需要对用户的浏览历史记录进行编码。在本研究中使用了One-hot编码的形式,每一个景点都使用一个维向量中的一个维度来表达,其余维度均记为0。例如,包含3个景点的集合,各个景点可以分别表示为[1,0,0],[0,1,0],[0,0,1]。那么用户的浏览历史记录就可以表达为一个维度为的向量,其中用户浏览过的景点对应维度记为1,否则记为0。例如,用户在3个景点的集合中浏览过第1个和第3个景点,那么其对应的Lu可以表达为3维向量[1,0,1]。使用编码后的浏览历史记录,就可以对SVM多分类模型进行训练和预测了。
候选序列的排序
候选序列的排序过程中,本文使用了梯度提升决策树(Gradient Boost Regression Tree,GBRT)。这一部分以各项天气信息指标、用户发布的社交媒体文本主题、用户拍摄照片数目等多源信息,对候选序列中的每个景点依次进行打分,最终按照打分重新排序候选序列,得到最终的推荐结果序列推送给用户。在这一部分,主要考虑了各种更加精细化的信息来刻画用户的兴趣,以此来优化推荐顺序。
在进行模型训练之前要解决的问题是——“打什么分?如何打分?”。也就是说,说和建模这个打分问题。在本文的旅游场景中,使用的是用户拍照上传形成的照片集作为数据进行分析。因此,可以基于用户u的拍照数目将用户对景点的感兴趣程度定义为下式:
其中Num(Pu,i)指用户u在景点i上拍摄的照片总数,用户的感兴趣程度就定义为用户u在景点l上的照片数比上用户总照片数的比值。之所以使用比值来定义,是为了防止用户之间拍照习惯不同带来的差异,防止一些拍照数量很大的用户进入训练,造成数据倾斜。
梯度提升决策树(GBRT)基于CART(Classification And Regression Tree)算法建立的回归树作为弱学习器,由多轮迭代形成多个CART回归树的线性组合形成一个强的学习器。GBRT模型是一种集成学习模型,不同于Adaboost(Adaptive Boosting)算法使用错分数据来迭代更新样本权重的训练方式,GBRT是使用弱模型(一般使用CART决策树)来学习和拟合上一步的残差使得样本的损失不断变小,如图4所示:
图4 GBRT模型示意图
实验设置与评价指标
数据集按照用户进行划分,80%用户作为训练用户,20%用户作为测试用户,使用每个用户的照片集合结合天气信息生成浏览历史记录进行训练和预测。本文使用的推荐指标除了准确率之外,还使用了平均准确率均值(Mean Average Precision,MAP)。MAP被广泛应用于衡量系统的排序能力,在top-n的推荐中,MAP@n可以由以下公式计算:
其中Nq代表总的查询次数,APi代表第i次查询的平均准确率,r代表正确结果在结果集中的位序。
为了验证本文提出的模型的性能,设置了三种不同的模型作为基准模型:
(1)基于Kullback-Leibler散度的协同过滤模型(Kullback-Leibler divergence Collaborative Filtering mode,简称KLCF模型):KLCF模型使用二维核密度估计的方法来建模用户的出行偏好,得到用户出行在二维空间上的分布函数。之后使用KL散度来计算两个用户之间的分布函数的相似性,以此来衡量用户出行偏好的相似性,并以此建立协同过滤模型;
(2)包含季节特征和时间特征的马尔科夫模型(Markov model with Seasonal and Temporal information,简称MST模型):MST模型通过在不同季节条件和时间条件下的转移概率来预测用户的出行选择,使用上一个地点来预测下一个可能前往的地点;
(3)使用情境上下文的协同过滤模型(Context-aware Collaborative Filtering,简称CACF模型):CACF模型是基于传统协同过滤模型的一种改进。虽然CACF模型和KLCF模型都使用了协同过滤作为基础,但是二者考虑的因素并不相同,CACF模型并没有考虑空间因素,而是使用了天气、时间、季节等情境信息的匹配程度来对用户进行前过滤或者后过滤,从而得到考虑情境上下文的推荐结果。
实验从两方面展开,一方面是在不同用户上的实验,另一方面是在不同景点上的实验。
在不同用户上的实验
用户浏览过的景点个数记作Num(Lu),以此来代表用户路线长度,短路线用户(Num(Lu) < 2)、中等路线长度用户(2 ≤ Num(Lu) < 5),长路线用户(Num(Lu) ≥ 5)。三种不同用户的数量统计如表1所示,其空间分布模式如图5所示,其中图(a)为短路线用户,图(b)为中等路线用户,图(c)为长路线用户,图(d)为图例。
表1 不同类型用户统计表
图5 不同类型用户空间分布统计图
图6 SVM-GBRT模型和基准模型在不同用户上的性能统计图
在不同用户上应用SVM-GBRT模型和基准模型,得到结果如图6所示。总的来说,以MST模型为代表的路径推荐模型并不适用于个性化的景点推荐,其倾向发现普遍的出行规律而非个体的兴趣偏好。对于有KLCF模型和CACF模型为代表的基于存储的推荐模型,其显著依赖于数据的丰富程度,在用户记录较少的时候,KLCF模型和CACF模型的性能受到了明显的制约,只有用户数量足够多的时候才能勉强给出较好的推荐结果。并且,基于空间分布相似性的KLCF模型比CACF模型更明显受制于数据稀疏性的影响,因为计算空间分布所需要的数据量明显要更高。然而SVM-GBRT模型则在路线较短和路线较长时都可以给出稳定且较好的推荐结果,并且其排序能力远高于三种基准算法。
在不同景点上的实验
推荐系统的目标是新颖且个性化的推荐结果,而非罗列出大众热门景点。为了确定本文提出的SVM-GBRT模型的个性化推荐能力,将SVM-GBRT模型在各个景点上分别进行了推荐尝试,之后统计了其在不同景点上的推荐准确率分布,如图7所示:
图7 SVM-GBRT模型在不同景点上的准确率统计图
对于本文提出的SVM-GBRT模型,如图4.6中所示,当用户的历史游览信息比较匮乏时,结果主要由那些访问人次超过1000的大众热门景点组成。当用户的历史记录增多路径变长时,SVM-GBRT的推荐窗口逐渐向一些新颖且冷门的景点偏移,例如“紫竹院公园”和“恭王府”只有在长路径用户才有所访问并且正确推荐了出来。当使用SVM-GBRT模型进行推荐的时候,可以正确推荐出的景点共计可以覆盖90个景点中的46个景点,而KLCF模型和CACF模型仅能分别正确推荐出35个景点和36个景点,MST模型则仅能正确推荐出11个景点。
结论
本文旨在建立基于模型的推荐系统,并将其分为两步进行构建,分别为候选序列匹配和候选序列排序。对于候选序列匹配使用了基于SVM组织的多分类器的形式,通过用户的历史浏览记录得到候选序列。之后使用基于GBRT的回归模型,补充更多维度的信息,对候选序列中的每个候选项进行打分和排序,得到最终的结果序列。针对模型的使用,探讨了如何组织多分类器的问题以及如何建模用户感兴趣程度的问题。最后对以上建立的模型进行测试,发现其在预测精度和结果排序上的能力都强于传统的基于存储的推荐系统,其受“冷启动”问题的影响较小,并且挖掘“长尾”数据的能力也更强。
参考文献:
Sun, X., Huang, Z., Peng, X., Chen, Y., & Liu, Y. (2018). Building a Model-based Personalised Recommendation Approach for Tourist Attractions from Geotagged Social Media Data. International Journal of Digital Earth, 1-18.
素材来源:S³-Lab
材料整理:孙晓宇
内容排版:鲍 毅