| 互联网大众点评与商圈空间分布的餐饮商家协同推荐研究 |
随着互联网餐饮商家数量和类型的不断增加,用户面临的选择越来越多,向用户推荐符合用户个性特征,满足用户需求的商家将为用户带来极大的便利,但信息过载问题也日益严重[1]。推荐系统可以在没有明确需求的情况下,考虑每个用户独特的特征和用户的个性化追求,向用户提供感兴趣的信息[2]。协同推荐算法的核心是协同过滤技术,它通过用户的历史评分数据判断用户的相似性,进而根据相似度高的用户给出推荐[3, 4]。餐饮商家的协同推荐具有其特殊性,由于其线上购买、线下消费的特性,除了餐饮商家的口味、环境、服务等因素外,餐馆的位置信息也会对用户的消费行为产生较大的影响。日常生活中,人们具有较为固定的活动范围[5],给用户推荐的餐饮商家应在其日常活动范围内。
传统的协同推荐算法,如欧几里德距离法计算用户相似度方法直观、易于理解,且计算方便;皮尔逊相关系数[6]在数据不规范时(如用户对餐饮商家的评价总是相对于平均水平偏离很大),会倾向于给出更好的结果[7]。上述方法仅利用用户对餐饮商家的评分计算用户相似性,没有考虑用户的日常活动范围是否一致;加上数据稀疏性问题,给出的餐饮商家推荐结果准确性不高。针对上述问题,本文基于大众点评网武汉市餐饮类点评数据,利用商家的商圈属性和Tanimoto相似度算法来计算用户活动范围的相似性。并通过R软件进行了离线实验,利用准确率、召回率和F值作为评判指标,验证了本文方法有助于提高餐饮商家协同推荐算法的准确性。
1 研究方法 1.1 样本的选择与处理本文以武汉市大众点评网食神榜用户的最新评论记录为样本,剔除无效点评以及评论店铺数过少的用户数据之后,最终得到172名用户对5 186家餐馆的9 601条评论信息。用户-餐饮商家的评论记录数据结构为:用户ID(唯一值)、用户名称、美食商家ID(唯一值)、美食商家名称、美食商家所属商圈(由大众点评网划分)、用户对美食商家的口味评分、用户对美食商家的环境评分、用户对美食商家的服务评分、文字评论内容(用户对美食商家的文字点评)。其中口味、环境、服务评分值分别为0(很差)、1(一般)、2(好)、3(很好)、4(非常好)。
1.2 分店数据的合并和区分在所研究的样本中,存在大量的连锁店,每一连锁店具有多家分店,如麦当劳具有44家分店,仟吉西饼具有34家分店,且同一连锁店的不同分店具有不同的地理位置,但商家的口味、环境、服务大体一致。因此,在利用评分数据判断用户相似性时,应对分店数据进行合并,将同一连锁店不同分店的评论数据看作是同一餐饮商家的评论数据。而在根据商圈信息利用Tanimoto系数计算用户活动范围的相似性时,则将不同的分店区分对待,考虑不同分店的地理商圈属性。这样既能有效降低数据稀疏性,又不会忽略分店数据的地理属性,数据得到了最大化的利用。
1.3 基于用户评论数据集的评分权重分配所获取的样本中,用户针对美食商家的口味、环境、服务分别给出3个评分。为了对这3个评分进行综合,本文利用用户的文本评论数据进行词频分析,将出现的高频词分为口味相关、环境相关、服务相关3个类别,并统计每个类别中所有词语的总频次,将3个类别的频次比设为口味、环境、服务3个评分的权重,以得到一个综合评分,用于构建用户-美食商家评分矩阵。经过分析,得到的口味(好吃、难吃等)、环境(干净、舒服等)和服务(服务员热情、上菜快等)相关关键词出现的词频分别为9 307次、2 010次、1 498次,评分的权重比为0.7:0.2:0.1。
1.4 基于商圈信息和Tanimoto系数的用户活动范围相似度计算Tanimoto系数又称为广义Jaccard系数,常用于利用词语-词频向量度量文档数据的相似性[8]。其计算公式为:
| $\mathit{T}(\mathit{\boldsymbol{A}}, \mathit{\boldsymbol{B}}) = \frac{{\mathit{\boldsymbol{A}} \mathit{\boldsymbol{B}}}}{{{{\left| \mathit{\boldsymbol{A}} \right|}^2} + {{\left| \mathit{\boldsymbol{B}} \right|}^2} - \mathit{\boldsymbol{A}} \mathit{\boldsymbol{B}}}} $ | (1) |
式中,A和B表示两个相关向量。
本文根据大众点评网武汉市食神榜点评数据,构建用户(1、2)-商圈(a、b、c、d)频次矩阵为
本文利用准确率(P)、召回率(R)和F值作为评判指标。准确率表示推荐列表中用户感兴趣的商品所占的比例;召回率表示用户喜欢的商户中被推荐的商品所占的比例[9]。离线实验中,准确率表示预测结果与测试集中用户行为的吻合度[10],其值为推荐列表中用户喜欢的餐饮商家数量(测试集中用户评论过的商家)与所有推荐商家数量的比值;R值为推荐列表中用户喜欢的商家数量与测试集中用户评论过的商家数量的比值。本文认为,测试集中用户消费过的商家即为用户感兴趣的商家。
随着推荐列表长度的增大,准确率一般会减小,而召回率会增大。F值为准确率和召回率的调和平均值,即F=2×P×R/(P+R),它同时考虑了准确率和召回率,能比较全面地评价算法的优劣。
2 实验过程和结果分析本文采用离线实验的方法,样本数据集为172名用户对5 186家店铺合并分店后的3 601家餐馆的9 601条评论数据。为了能获得更为准确的估计,所有实验均采用四重交叉验证,将样本均分成4份,每份包含2 400条数据,每个用户的评论数据都被均分到这4份数据中。将4份数据轮流作为测试集,剩下的3份作为训练集。先通过训练集得到推荐列表,然后用测试集评测推荐结果的准确率、召回率和F值。重复实验4次,用4次评测指标的平均值判断推荐结果的优劣。考虑到推荐系统中为每个用户推荐的商品数量为5~10个较为合理,每种方法都将推荐数量设为5、8、10分别进行实验。
2.1 用户综合评分和传统计算方法的推荐结果对样本数据中的每一条记录进行处理,将用户对餐饮商家的口味、环境、服务评分按0.7:0.2:0.1进行加权,构建用户-餐饮商家综合评分矩阵。基于用户-餐饮商家综合评分矩阵,利用欧几里德距离法计算用户相似度,得到的推荐结果如表 1所示。同理,可以基于用户-餐饮商家综合评分矩阵和皮尔逊相关系数得到推荐结果。
| 表 1 不同计算方法得到的推荐结果/% Tab.1 Recommended Results of Different Methods/% |
![]() |
由表 1中欧几里德距离和皮尔逊相关系数得到的推荐结果F值可知,随着推荐数量的增加,推荐结果质量呈上升趋势。在推荐数量较少时,皮尔逊相关系数给出的推荐结果比欧几里德距离稍好,推荐数量较多时,欧几里德距离给出的推荐结果较好。
2.2 商圈数据和Tanimoto相似度计算法的推荐结果样本数据共包括172名用户在武汉市内80个商圈的点评记录。对样本数据中每个用户点评过的餐馆所属商圈进行统计,得到用户-商圈频数矩阵为:
| $\left[ {\begin{array}{*{20}{c}} 0&1&0&0&0&0\\ 0&0&0&0&0&0\\ 0&1&0&0&0&0\\ 0&0&0&0&0&0\\ 1&0&0&3&0&0\\ 0&0&0&0&0&0 \end{array}} \right] $ | (2) |
式中,行表示用户ID;列表示商圈ID;矩阵值为用户在该商圈的点评次数。
基于用户-商圈频率矩阵,利用Tanimoto系数计算用户的活动商圈相似性,并基于该相似性获得推荐结果,见表 1。
2.3 用户相似度和Tanimoto相似性融合的推荐结果为了综合考虑餐饮商家的口味、环境、服务和位置,本文对传统用户相似性和Tanimoto相似性取平均值,利用平均相似性获得的推荐结果如表 1所示。可以看出,基于平均相似性获得的推荐结果较传统的相似性计算方法得到了较大提升。这是因为传统用户相似性和Tanimoto系数平均后的相似性同时考虑了用户的就餐偏好和地理属性,比根据单一相似性获得的推荐结果好。并且从表 1可以看出,皮尔逊相关系数和Tanimoto系数融合后取得的提升效果较欧几里德距离法和Tanimoto系数融合后取得的提升效果更为显著,提升幅度更大,这可能是因为皮尔逊相关系数对相关程度的变化更加敏感,且能区分正相关和负相关的缘故[11]。
3 结束语本文利用用户点评记录的商圈信息,基于Tanimoto系数计算用户之间的活动范围相似性,并将用户的地理相似性与基于用户评分信息的用户就餐偏好(口味、环境、服务)相似性相融合,基于融合后的用户相似性获得推荐。实验结果表明,本文方法能有效地提升互联网餐饮类协同推荐效果,具有良好的应用前景。另外,本文中传统用户相似性和基于Tanimoto系数的用户活动范围相似性的融合方法较为简单,如何采用更加科学有效的方法对两者进行融合,以提升协同推荐结果,有待进一步研究。
| [1] |
陈婷婷.融合上下文和项目属性的美食商店信息推荐算法研究与实现[D].北京: 北京邮电大学, 2014
|
| [2] |
Sundaresan N. Recommender Systems at the Long Tail[C].ACM Conference on Recommender Systems, Chicago, USA, 2011
|
| [3] |
黄文明, 程广兵, 邓珍荣, 等. 基于用户特征的分步协同推荐算法[J]. 计算机应用研究, 2017, 34(4): 1047-1049. DOI:10.3969/j.issn.1001-3695.2017.04.020 |
| [4] |
王三虎, 王丰锦. 融合用户评分和属性相似度的协同过滤推荐算法[J]. 计算机应用与软件, 2017, 34(7): 16-19. |
| [5] |
于东.融合位置上下文和信任关系的美食商家推荐算法研究与实现[D].北京: 北京邮电大学, 2009
|
| [6] |
邵凡, 陈辰, 葛淼佳, 等. 基于电网线损的皮尔逊算法分析[J]. 科技创新与应用, 2017(14): 53-54. |
| [7] |
Segaran T.集体智慧编程[M].莫映, 王开福, 译.北京: 电子工业出版社, 2009
|
| [8] |
文俊浩, 舒姗. 一种改进相似性度量的协同过滤推荐算法[J]. 计算机科学, 2014, 41(5): 68-71. DOI:10.3969/j.issn.1002-137X.2014.05.015 |
| [9] |
朱郁筱, 吕林媛. 推荐系统评价指标综述[J]. 电子科技大学学报, 2012, 41(2): 163-166. |
| [10] |
夏娟.基于用户情境的推荐技术研究与应用[D].成都: 西南财经大学, 2014
|
| [11] |
彭海. 皮尔逊相关系数应用于医学信号相关度测量[J]. 电子世界, 2017(7): 163. DOI:10.3969/j.issn.1003-0522.2017.07.137 |
2018, Vol. 43



