随着移动互联网的发展,越来越多的用户都通过手机、平板等设备接入互联网,如何从用户的位置信息中挖掘出商业利益已经成为推荐领域的研究热点.在商品推荐领域中常用的推荐算法有基于内容推荐、协同过滤推荐、基于规则推荐、基于知识推荐等算法,其中协同过滤算法是在移动推荐领域中运用最为广泛的算法[1].但是协同过滤推荐算法在实际应用中也存在不足,其中用户评价标准不一导致评分矩阵误差较大,SVD算法提出基于矩阵奇异值分解的方法解决该问题,但是该算法效率较低、运算量大.越来越多的移动软件开始考虑用户的位置信息,试图通过用户位置信息来提供更加精准个性化的服务.
移动推荐系统可以利用地点、时间、天气等信息来影响推荐结果,其中基于位置的移动推荐系统是根据用户的位置信息来提供准确的个性化推荐[2].移动用户的兴趣偏好随着地理位置的不同会发生变化,同时待推荐商品也随着用户位置的移动而改变.然而当前移动推荐系统中考虑位置信息比较单一,只是简单根据用户位置获取用户周边的商品和服务,或者根据用户与商品的距离对待推荐商品进行排序,并没有深入研究距离对推荐系统产生的影响.距离的远近反映了用户到达目的地的成本,推荐商品的距离越远,用户对该商品选择的概率会随之减少.对于推荐商品,用户在其距离和喜好度上进行综合考虑,用户可能会选择一个喜好度较低但距离更近的商品.仅仅通过距离远近对推荐商品进行排序往往导致推荐的结果不能满足用户需求.Abowd等[3]提出的移动旅游推荐系统, 通过位置获取天气、温度等过滤推荐项目,并没有考虑移动用户的个性化偏好和距离给用户带来的影响.Girardello等[4]提出的应用程序推荐系统,该系统考虑了用户位置信息对用户选择的影响, 并没有考虑移动用户个人偏好和距离对应用程序选择的影响. Yang[5]通过统计分析移动用户访问过的商家网页,但是其忽略了“邻居”用户的距离关系.同时由于用户对商品的评价标准不同,部分用户在给商品进行评价时容易给出高分,而部分用户对非喜爱的商品评分较低, 导致评分矩阵的误差较大,从而降低推荐列表准确度.
本文通过研究距离和评分趋势对推荐系统的影响,在协同推荐的基础上,提出一种新的基于距离衰减和评分趋势改进的商品推荐方法.该方法中引入距离衰减函数和评分趋势函数对协同推荐算法进行改进,并实现了一个基于该推荐方法的商品推荐系统.
1 改进的协同推荐系统推荐系统主要是根据用户的位置信息和购买历史等数据为用户提供精准推荐,本系统包括手机客户端和服务器端,其系统架构如图 1所示.用户通过移动设备向服务器发起请求,请求中携带位置等信息.其中位置信息通过位置管理模块获取,包括GPS或者基站定位方式获取.服务器端包括用户偏好管理、推荐商品管理和推荐处理3个模块.用户偏好管理模块是通过获取用户的个人信息、购买记录、签到记录等数据,通过分类算法生成用户偏好信息表;推荐商品管理模块包括对商品进行分类等进行处理;推荐处理模块采用协同推荐算法,首先通过评分趋势函数对评分矩阵进行处理并计算出目标用户的相似“邻居”,然后通过相似“邻居”对待推荐商品打分并根据位置信息对商品进行处理,从推荐商品中找到TOP—N商品返回给目标用户.
|
图 1 系统架构图 Figure 1 System architecture graph |
系统通过位置信息对商品和邻居用户集进行过滤.服务器通过用户的请求获取用户的位置信息,根据距离式(1)、(2),从待推荐商品数据库中获取用户周边的待推荐商品集合I和用户集R,通过用户集合R查找用户偏好数据库形成用户评分矩阵R(m, n).该矩阵表示不同用户对项目的评分,其中rij是用户i对项目j的打分.
| $ \mathit{\boldsymbol{R}}\left( {m,n} \right) = \left[ {\begin{array}{*{20}{c}} {{r_{11}}}&{{r_{12}}}& \cdots &{{r_{1j}}}& \cdots &{{r_{1n}}}\\ {{r_{21}}}&{{r_{22}}}& \cdots &{{r_{2j}}}& \cdots &{{r_{2n}}}\\ {{r_{31}}}&{{r_{32}}}& \cdots &{{r_{3j}}}& \cdots &{{r_{3n}}}\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots \\ {{r_{m1}}}&{{r_{m2}}}& \cdots &{{r_{mj}}}& \cdots &{{r_{mn}}} \end{array}} \right]. $ |
距离公式采用球面坐标,(xa, ya)、(xb, yb)分别代表A、B两个点的经纬度,S代表两个点的距离,式(3)把两点之间的距离转换到[0, 1]区间(距离阈值为10 km), 方便计算.
| $ \begin{array}{l} C = \sin \left( {{x_a} \cdot \theta } \right)\sin \left( {{x_b} \cdot \theta } \right) + \cos \left( {{x_a} \cdot \theta } \right)\cos \left( {{x_b} \cdot } \right.\\ \left. {\left. \theta \right)\cos \left( {\left( {{y_a} - {y_b}} \right)} \right)\theta } \right). \end{array} $ | (1) |
| $ S = R \cdot \arccos \left( C \right) \cdot \theta \left( {\theta = Pi/180} \right). $ | (2) |
| $ {H_{AB}} = \frac{S}{D}\left( {D\;为阈值} \right). $ | (3) |
通过数据处理后获得的用户-项目R(m, n)评分矩阵,但是用户在评分的时候往往会出现3种情况:积极用户喜欢对购买的商品打高分,只有特别糟糕的情况下才会打低分; 消极用户则对产品极为严格,除非很满意不然往往会给出低分;有的用户不管好坏都会给一个中等分数.从而导致评分矩阵偏差.本文通过计算用户之间和项目之间的评分差异以及用户评分趋势,对评分矩阵进行处理.其中通过式(4)、(5)计算用户和项目评分的趋势,判断用户和项目是消极还是积极评分,其中
| $ {\varphi _u} = \frac{{\sum\nolimits_{i \in {I_u}} {\left( {{R_{ui}} - \overline {{R_I}} } \right)} }}{{\left| {{I_u}} \right|}}. $ | (4) |
| $ {\varphi _i} = \frac{{\sum\nolimits_{u \in {U_i}} {\left( {{R_{ui}} - \overline {{R_u}} } \right)} }}{{\left| {{U_i}} \right|}}. $ | (5) |
当φu与φi同时大于0时表明用户偏向于积极评分,同时项目偏向于被积极评分.此时它们之间的评分取两者之间的最低值.则它们之间的评分为
| $ {R_{ui}} = \max \left( {\overline {{R_u}} + {\varphi _i},\overline {{R_I}} + {\varphi _u}} \right). $ | (6) |
当φu与φi同时小于0时表明用户偏向于消极评分,而项目偏向于被消极评分.此时它们之间的评分取两者之间的最低值.则它们之间的评分为
| $ {R_{ui}} = \min \left( {\overline {{R_u}} + {\varphi _i},\overline {{R_I}} + {\varphi _u}} \right). $ | (7) |
当φu大于0而φi小于0时表明用户偏向于积极评分而项目偏向于被消极品分,则它们之间的评分为
| $ \begin{array}{l} {R_{ui}} = \min \left( {\max \left( {\overline {{R_u}} ,\left( {\overline {{R_I}} + {\varphi _u}} \right)\beta + } \right.} \right.\\ \left. {\left. {\left( {\overline {{R_u}} + {\varphi _i}} \right)\left( {1 - \beta } \right)} \right),\overline {{R_I}} } \right). \end{array} $ | (8) |
其β中为评分趋势因子.
当φu小于0而φi大于0时表明用户趋向于消极评分而项目趋向于被积极评分,此时它们的评分值为
| $ {R_{ui}} = \overline {{R_I}} \beta + \overline {{R_u}} \left( {1 - \beta } \right). $ | (9) |
通过商品评分趋势函数对R′(m, n)进行处理,得到修正后的评分矩阵R′(m, n),同时该方法解决了评分矩阵的稀疏问题,通过预测用户的评分趋势使得用户某些没有评分的商品页也能够得到一个较准确的评分值.
| $ \mathit{\boldsymbol{R'}}\left( {m,n} \right) = \left[ {\begin{array}{*{20}{c}} {{{r'}_{11}}}&{{{r'}_{12}}}& \cdots &{{{r'}_{1j}}}& \cdots &{{{r'}_{1n}}}\\ {{{r'}_{21}}}&{{{r'}_{22}}}& \cdots &{{{r'}_{2j}}}& \cdots &{{{r'}_{2n}}}\\ {{{r'}_{31}}}&{{{r'}_{32}}}& \cdots &{{{r'}_{3j}}}& \cdots &{{{r'}_{3n}}}\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots \\ {{{r'}_{m1}}}&{{{r'}_{m2}}}& \cdots &{{{r'}_{mj}}}& \cdots &{{{r'}_{mn}}} \end{array}} \right]. $ |
通过该矩阵计算位置相邻用户与目标用户的相似度,求出目标用户最近“邻居”,其中通过皮尔森公式(见式(10))计算相似度.式中Iuv表示用户u与目标用户v共同评分的项目,Ru, c表示用户对项目c的评分,
| $ \begin{array}{l} {\rm{sim}}\left( {u,v} \right) = \\ \frac{{\sum\nolimits_{c \in {I_{uv}}} {\left( {{R_{u,c}} - \overline {{R_v}} } \right)\left( {{R_{v,c}} - \overline {{R_v}} } \right)} }}{{\sqrt {\sum\nolimits_{v \in {I_u}} {{{\left( {{R_{u,c}} - \overline {{R_u}} } \right)}^2}} } \sqrt {\sum\nolimits_{c \in {I_v}} {{{\left( {{R_{v,c}} - \overline {{R_v}} } \right)}^2}} } }}. \end{array} $ | (10) |
通过目标用户的最近邻居评分矩阵,使用评分公式(11)对待推荐商品集I进行评分,获得邻居用户对待推荐商品的评分表.
| $ {p_{u,i}} = \overline {{r_u}} + \frac{{\sum\nolimits_{v \in {{\bf{N}}_u}} {{\rm{sim}}\left( {u,v} \right)} \cdot \left( {{R_{v,c}} - \overline {{R_v}} } \right)}}{{\sum\nolimits_{v \in {{\bf{N}}_u}} {{\rm{sim}}\left( {u,v} \right)} }}. $ | (11) |
其中,
传统的移动推荐算法只是通过用户的位置信息获取其周边的服务进行推荐,但其并没有考虑距离的远近对用户选择的影响.Song[6-7]等指出个体总是频繁地出现在某些特定的地点,位置上更靠近的用户更容易产生相同的选择.用户选择不同目标的概率与距离成负相关[8-9],随着距离的扩大,人与人之间的影响会减弱,人与推荐产品之间的交互强度也会减弱,用户选择该产品的概率会随之降低.距离衰减函数f(d)以距离d为参数,目前最常用的距离衰减函数包括指数函数、幂函数以及高斯函数,3种衰减函数衰减关系如图 2所示.随着用户之间距离的增大,用户之间的相关度会减弱.其中指数函数和幂函数衰减速度过快,导致通过距离对推荐集的影响过大,影响了生成推荐商品集的正确性.
|
图 2 距离衰减图 Figure 2 Distance decay graph |
本文采用高斯型衰减函数,如式(12)所示,高斯衰减函数更能够反映推荐系统中用户对商品的选择与距离之间的关系,其中α为衰减函数的衰减因子,衰减因子控制衰减函数的衰减速度.采用式(13)对待推荐商品的评分表进行距离衰减,选择评分超过预设阈值的TOP-N商品推荐给用户.
| $ f\left( d \right) = {{\rm{e}}^{ - \alpha {d^2}}}\left( {\alpha > 0} \right). $ | (12) |
| $ {{p'}_{u,i}} = {p_{u,i}} \cdot f\left( d \right). $ | (13) |
系统中的数据采集于Foursquare站点的签到数据集,该数据集中包括大量的店铺和商品以及位置信息、签到记录、用户评论等大量信息.通过数据过滤提取出该站点2013年2月到2013年6月的签到数据并删除非活跃用户的签到信息(活跃用户至少每个星期登录一次),得到908 675个用户和41 037 532条签到数据.最后通过位置信息选取纽约、洛杉矶、芝加哥等城市提取出相应的位置用户的数据.本文采用平均绝对误差MAE、F1系数和排序分(rankscore)3个指标来对算法进行度量.
| $ {\rm{MAE}} = \frac{1}{{\left| {{E^p}} \right|}}\sum\limits_{\left( {u,\alpha } \right) \in {E^p}} {\left| {{r_{u\alpha }} - {{r'}_{u\alpha }}} \right|} . $ | (14) |
| $ {F_1}L = \frac{{2P\left( L \right)R\left( L \right)}}{{P\left( L \right) + R\left( L \right)}}. $ | (15) |
排序准确度用于度量推荐算法产生的列表符合用户对产品排序的程度[10-11],考虑了推荐列表中的相对位置.Breese等提出排序分(rankscore)度量推荐系统的排序准确度,排序分rankscore′u越小说明用户感兴趣的在推荐列表中排在越靠前位置.定义如式(16)所示.
| $ {\rm{rankscor}}{{{\rm{e'}}}_u} = \frac{{{\rm{rankscor}}{{\rm{e}}_u}}}{{{\rm{rankscore}}_u^{\max }}}. $ | (16) |
同时生成推荐集的平均时间是度量推荐算法复杂度的重要指标,在商用推荐系统中如果产生推荐集所需的时间开销大,不仅影响系统的性能,同时也降低了用户体验.通过时间度量标准更能体现推荐算法的效率.
2.2 商品推荐应用通过基于位置的商品推荐方法,本文建立了一个商品推荐系统应用原型.系统采用Foursquare数据集,并采用N折交叉验证对数据集进行划分,其中3/4数据作为训练集,剩余1/4作为测试集.实验中采用多种推荐方法对不同城市的用户进行商品推荐并收集结果进行分析,其中分别包括协同推荐、不修正矩阵协同推荐(基于距离衰减函数改进的协同推荐)、SVD推荐、改进SVD推荐和本文基于距离衰减和评分趋势改进的推荐算法.
2.3 推荐分析距离衰减因子对本文推荐算法的影响分析.图 3表示距离衰减函数中衰减因子对排序分和MAE的影响.文献指出对于个体在城市尺度的移动, 距离衰减系数在1.0~2.0之间[12-14],系统中通过调整衰减因子的值产生不同商品推荐集推荐给用户,当衰减因子为1.5时本文算法排序分和MAE趋向于最小,推荐精准度更高.
|
图 3 衰减因子与排序分、MAE关系图 Figure 3 The relationship between attenuation factor、ranking score and MAE standard diagram |
在衰减因子取值为1.5后,系统分别采用了协同推荐(S0)、未修正矩阵推荐算法(S1)、SVD算法(S2)、改进SVD算法(S3)和本文推荐算法(S4)对不同城市的用户进行商品推荐,并统计各算法的MAE、排序分、F1系数等数据如表 1所示.从表中对比S1和S0可知通过距离衰减提高了协同推荐的准确率;对比S4与S1可知本文修正矩阵进一步提高了算法准确度;对比S2、S3、S4可知本文算法与SVD、改进SVD算法在MAE和F1指标基本相同,但是通过距离衰减使得本文算法排序分高于SVD和改进SVD算法.
| 表 1 多个城市推荐算法评价 Table 1 Each city recommended algorithms evaluation |
生成推荐集的平均时间是度量推荐算法复杂度的重要指标.实验中统计各个算法产生推荐集的时间,并分析产生推荐集时间和用户数量的关系,如图 4所示.随着系统中用户的增加,其中SVD算法的时间增长是最快的,因为SVD要对用户矩阵进行奇异值分解,用户越多评分矩阵越大,其矩阵处理耗时越高;协同推荐算法随着用户的增加其评分矩阵也会增大,效率越来越低,当用户数量超过600时协同推荐算法的效率会低于本文推荐算法.本文推荐算法通过用户评分趋势对评分矩阵进行修正,其效率高于通过矩阵奇异值分解的SVD算法,同时通过距离衰减使得评分矩阵减小而提高效率;而不修正矩阵推荐算法没有对用户矩阵进行处理,但是其通过距离衰减使得其评分矩阵减小,其推荐效率是最高的.
|
图 4 各推荐算法效率图 Figure 4 Efficiency diagram of cornmend algortthms |
本文提出一种基于位置的商品推荐方法,并在此基础上构建了一个商品推荐应用系统.该推荐方法研究了位置对商品推荐的影响和用户评分标准不同给推荐带来的影响,引入基于距离衰减和评分趋势改进的协同推荐算法,提高了推荐商品的推荐准确度和排序.同时根据到目的用户的距离对“邻居”用户和商品进行过滤,缩短了推荐商品集的产生时间,提高了系统的效率.
| [1] |
余文喆, 张蓉, 王立. 电子商务中的商品推荐系统[J].
华东师范大学学报:自然科学版, 2013(3): 46-53.
Yu W Z, Zhang R, Wang L. Recommendation in E-commerce[J]. Journal of East China Normal University:Nature Science Editiion, 2013(3): 46-53. |
| [2] |
孟祥武, 胡勋, 王立才, 等. 移动推荐系统及其应用[J].
软件学报, 2013, 24(1): 91-108.
Meng X W, Hu X, Wang L C, et al. Mobile recommender systems and their applications[J]. Journal of Software, 2013, 24(1): 91-108. |
| [3] |
Abowd G D, Atkeson C G, Hong J, et al. A mobile context-aware tour guide[J].
Wireless Networks, 1997, 3(5): 421-433.
DOI: 10.1023/A:1019194325861. |
| [4] |
Girardello A, Michahelles F. AppAware: which mobile applications are hot?[C]// Proc of the Human Computer Interaction with Mobile Devices and Services (Mobile HCI 2010). Lisbon: ACM, 2010: 431-434.
http://dl.acm.org/citation.cfm?id=1851698
|
| [5] |
Yang W S, Cheng H C, Dia J B. A location-aware recommender system for mobile shopping environments[J].
Expert Systems with Applications, 2008, 34(1): 437-455.
DOI: 10.1016/j.eswa.2006.09.033. |
| [6] |
Song C, Qu Z, Blum M N, et al. Limits of predict ability in human mobility[J].
Science, 2010, 327(5968): 1018-1021.
DOI: 10.1126/science.1177170. |
| [7] |
Song C, Koren T, Wang P, et al. Modeling the scaling properties of human mobility[J].
Nature Physics, 2010, 6(10): 818-823.
DOI: 10.1038/nphys1760. |
| [8] |
刘瑜, 龚俐, 童庆禧. 空间交互作用中的距离影响及定量分析[J].
北京大学学报:自然科学版, 2014, 50(3): 526-534.
Liu Y, Gong L, Tong Q X. Quantifying the distance effect in spatial interactions[J]. Acta Scientiarum Naturalium Universitaties PeKinensis, 2014, 50(3): 526-534. |
| [9] |
袁书寒, 陈维斌, 傅顺开. 位置服务社交网络用户行为相似性分析[J].
计算机应用, 2012, 32(2): 322-325.
Yuan S H, Chen W B, Fu S K. User behavior similarity analysis of location based social network[J]. Journal of Computer Applications, 2012, 32(2): 322-325. |
| [10] |
朱郁筱, 吕琳媛. 推荐系统评价指标综述[J].
电子科技大学学报, 2012, 41(2): 163-175.
Zhu Y X, Lü L Y. Evaluation metrics for recommender system[J]. Journal of University of Electronic Scienceand Technology of China, 2012, 41(2): 163-175. |
| [11] |
刘建国, 周涛, 郭强. 个性化推荐系统评价方法综述[J].
复杂系统与复杂性科学, 2009, 6(3): 1-10.
liu J G, Zhou T, Guo Q. Overview of the evaluated algorithms for the personal reconmendation systems[J]. Complex Systems and Complexity Science, 2009, 6(3): 1-10. |
| [12] |
Liu Y, Kang C, Gao S, et al. Understanding intra-urban trip patterns from taxi trajectory data[J].
Journal of Geographical Systems, 2012, 14(4): 463-483.
DOI: 10.1007/s10109-012-0166-z. |
| [13] |
Kang C, Ma X, Tong D, et al. Intra-urban human mobility patterns: An urban morphology perspective[J].
Physica A: Statistical Mechanics and its Applications, 2012, 391(4): 1702-1717.
DOI: 10.1016/j.physa.2011.11.005. |
| [14] |
Gao S, Wang Y, Gao Y, et al. Understanding urban traffic flow characteristics: a rethinking of between-ness centrality[J].
Environment and Planning B: Planning and Design, 2013, 40(1): 135-153.
DOI: 10.1068/b38141. |
2015, Vol. 32