考虑用户预算的商品推荐算法

2016-05-30 10:48张毅伟
科技风 2016年5期

张毅伟

摘要:在本文中,作者在基于物品的最近邻推荐的基础上引进了用户的上下文信息来修正推荐结果。具体说来是考虑了用户的消费预算,可以在原来的物品最近邻推荐的基础上更加符合用户的偏好,从理论上来说,这种机制是可以改进推荐的效果的。基于这种思想,作者给出了具体的推荐算法。

关键词:用户预算;基于物品的推荐;上下文信息

1.引言

随着电子商务的兴起,网购网站的规模越来越大,用户面对的选择越来越多,为了解决这个问题,网购网站都为自己的的网站添加了推荐的功能。推荐系统一定程度上为用户解决了信息过载的问题,增加了用户的购物效率,同时也增加了网购网站的利润。

在本文中,作者考虑的是这样一个场景:用户已经在购物车中添加了一系列的商品,但是还没有最终付款,针对购物车中已近添加的一系列商品,系统可以为用户生成一个推荐列表,推荐列表中商品可以和购物车中的商品组合起来使用户达到最大的收益。作者考虑的用户上下文信息是用户的购物预算。在购物的过程中,用户基本上都会对自己的消费在心里设定一个预算,当消费额在预算范围之内时,用户最终购买的概率远大于消费额超出预算范围的情况。所以,在设计推荐机制的时候要考虑这一点。尤其,在作者考虑的这种场景下,当用户选定需要购买的商品后,系统根据购物列表进行推荐,推荐的商品会和购物车中的商品有很大的关联性。而且特别是当二者组合起来的消费额仍然低于自己的预算,甚至二者组合起来会有某种折扣的时候,用户会以相当大的概率接受系统的推荐。这中心理可以解释为个体在经济活动中总是追其利益最大化,而人在购物的时候总是想要花少量的钱获得更多的物品。

基于上面的介绍,作者针对前面提到的场景设计了一种推荐机制,这种推荐机制是通过在基于物品的最近邻推荐[2]的框架内引进用户消费预算的限制来实现的。为了实现这一点,作者对商品进行了形式化描述,在此基础上,给出了相似度的计算方法,然后分析了用户和网购网站的期望收益。在这之后,作者给出了系统的设计思路,最后进行了总结。

2.推荐模型

假设一个网购站点中商品种类的集合为G={g1,g2,g3…gn},G的子集组成的集合为S。为了下面表述问题的方便,定义函数:

pay:s→R+U{0}(1)

x∈S表示一个商品列表,pay(x)表示用户一次购买列表中所有的商品需要支付的钱。因为存在一些优惠组合,所以函数pay满足:

x,y∈S,x∩y=→pay(x)+pay(y)≥pay(x∩y)(2)

x,y∈S,下面需要计算出x,y之间的关联性,这是推荐的基础,本文中用v(x,y)表示x,y之间的关联性。具体的度量方式可以采用余弦相似度,它可以通过用户的历史消费记录来计算得出。实验证明,在基于物品的最近邻推荐中,余弦相似度比其它的相似度度量有更好的表现。而且,Google的YouTube系统中使用的推荐算法的演变也可以很好地说明这一点[3]。

至于用户的预算,用θ表示用户的预算值,预算的值是不公开的,但是可以认为预算的概率分布情况是公开的。假设预算的取值范围为 θ∈[a,b],预算分布的密度函数为f(θ)。

推荐的思想可以形式化地认为是推荐可以最大化目标函数的参数,最常用的目标函数是相似度函数。只考虑相似度的缺点在本文的前半部分已经有了相应的分析。本文中,作者引进了用户的消费预算来修正这个缺点,具体到目标函数的构建上,作者在相似度函数的基础上做了一些修改得到了一个新的目标函数。定义目标函数为V:S→R,对于x,y∈S,xI y=设x是已经存在于用户的购物车中的商品列表,那么有:

V(x,y)=a*w*[pay(x)+pay(y)-pay(x∩y)]+β*v(x,y)(3)

目标函数中的后一部分是用户已有的购物列表和推荐的购物列表之间的关联度,它度量了推荐的购物列表满足用户需求的程度;前一部分表示的是如果用户接受推荐可以获得的直接的经济利益,这对用户具有很大的吸引力,因为用户总是想花更少的钱来得到更多的东西,这一点在前面也已经有相应的叙述。α,β是常数。这种将相似度进行线性组合得到新的目标函数的思想来自混合推荐[1]。

其中w表示如果用户接受系统推荐,最终的消费额不超过自己的预算的概率,可以通过下面的方法计算得出:

w=∫bpay(x∩y)f(θ)dθ[]∫bpay(x)f(θ)dθ(4)

实际上这个结果是一个条件概率,因为用户已经选择了购物列表x,那么就说明他的预算θ满足θ≥pay(x),那么后面接受系统的推荐后总的预算是否会超过自己的预算都在这个前提下进行讨论。

假设用户的购物车中已经存在购物列表e,那么推荐的结果为:

r=argmaxV(t,e),t∈S∧t∩e=(5)

至此,叙述了推荐算法的完整思路。

推荐模型的核心是计算目标函数的值,而目标函数的值是由两个部分组成。第一部分是计算两个对象之间的相似度,可以通过离线计算得到,因为这个部分的值是相对稳定的,所以这一部分的计算可以独立为一个模块。目标函数的第二部分需要根据用户的购物车列表来计算出概率以及经济收益,这个部分的值需要实时生成,无法通过离线计算来生成,也要独立为一个模块。最终的结果需要将两者组合起来,所以生成最终的推荐结果的过程也可以独立为一个模块。

3.总结

在这篇文章中,针对现在推荐系统中系统挖掘的用户偏好滞后于用户的实际偏好的情况,考虑了用户的上下文信息。具体说来就是在传统的推荐系统的框架内引进用户的消费预算来修正推荐结果。并且基于这种思想提出了具体的推荐算法。总的来说,这是一个尝试,随着移动互联网甚至物联网的兴起,用户的上下文会变得更加多样化,而传统的推荐系统会显得更加无力。那么在设计推荐系统的时候考虑用户的上下文就显得很有必要。下一步的研究可以考虑细化上下文的信息,考虑在上下文中纳入用户的环境,服务的环境,用户使用服务的差异以及商品的差异。

参考文献:

[1]《推荐系统》,(奥地利)Jannach,D.等著;蒋凡译,北京:人民邮电出版社,2013.7.

[2]B.M. Sarwar et al., “Item-Based Collaborative Filtering Recommendation Algorithms,” 10th Intl World Wide Web Conference, ACM Press, 2001, pp. 285-295.