结合商圈位置区域模型的商品推荐算法①
2019-08-22陈思亦何利力郑军红
陈思亦, 何利力, 郑军红
(浙江理工大学 信息学院,杭州 310018)
引言
近年来,随着电子商务的飞速发展,人们的传统购物消费习惯受到了巨大冲击,市场环境也因此变得更加错综复杂,线下销售呈现出日渐萎靡的趋势. 而伴随着“智慧门店”、“智慧快闪”、“智慧商圈”等全渠道新零售模式的出现,零售商户的线下业务开始融合数字化技术,加速了零售模式的商业转型,出现回暖. 由于“智慧商圈”、手机天猫中“逛商圈”等的营销模式及商业活动的推出,商圈作为企业营销过程中的基础环节,发挥了重要作用. 因此面对海量数据下的企业信息处理,本文提出将商圈与传统个性化推荐相结合,以满足互联网用户和大数据环境下个人用户精准营销的要求,挖掘用户潜在需求,进行面向用户的商品智能个性化推荐.
目前商品推荐领域的研究已经较为成熟,并能得到一定的推荐效果. 如在个性化推荐中基于用户协同过滤算法的优化,通过预先计算用户相似度函数,取出匹配最高的n个用户的数据生成推荐,在推荐的计算速度上有着显著提高[1]. 对于用户消费行为信息的分析,采用用户聚类的方法能有效解决协同过滤推荐的“稀疏性”问题. 而在缺少用户消费行为信息的情况下,基于商品领域知识的交互式推荐系统的研究,能一定程度上解决推荐系统的冷启动问题和隐私保存问题[2].除了协同过滤算法与基于知识的商品推荐,常见的个性化推荐算法还有基于内容的推荐[3]、基于关联规则的推荐和混合推荐等[4]. 而在目前云计算与人工智能的发展应用下,以深度学习和神经网络为基础的基于模型的推荐算法[5-7]逐渐成为了研究的热点,但目前尚未成熟.
为避免目前常规推荐算法推荐质量差、推荐效率低等问题,本文提出基于商圈位置区域模型的商品推荐算法,主要包含4方面的研究. 1)通过对全域数据采集下的商户订单数据的分析,以商圈这一商业集群模式进行商品推荐领域划分,基于地理位置特征建立商圈位置区域模型. 2)针对现有推荐算法,结合位置区域特征,提出引入了商圈位置区域模型的面向流行度的推荐算法与面向相似度的改进协同过滤算法,建立起浙江范围内某一行业的商圈商品推荐模型. 3)进行模型参数调整,通过实验结果分析与对比,验证了基于商圈位置区域模型的推荐算法相比传统推荐算法在推荐质量与推荐效率上的优化. 4)应用商圈位置模型,提出以商圈相似性协同过滤算法为基础的新品投放策略,在一定程度上加强企业对市场环境的预判与掌控.
1 数据采集与预处理
原始数据:本文所用的实验数据采集于某行业营销业务系统,通过相关ETL过程从系统数据库采集得到2017年所有商户基本数据、订单交易数据及商品基本数据,并部署到数据库内进行后续的分析研究.
实验数据:选取交易数据中浙江地区的25万户商户的交易记录作为实验主要数据集,以1-10月的交易数据作为训练集,11-12月数据作为测试集. 对数据集中商户位置数据及交易位置数据中的文本地址,采用百度地图API进行地理位置文本与经纬度的转换,便于后续的位置区域划分. 实验用到的商圈数据来源于美团全国城市商圈数据中的浙江省商圈数据(含777个商圈),相关样本数据示例如表1所示.
表1 商圈数据示例
2 基于商圈位置区域的商品推荐算法
2.1 商圈位置区域模型
商圈作为一种特殊的商业集群模式,与零售商户相辅相成,一个合适的商圈,能够增强商店吸引力,扩大客户群,同时强化规模优势,提高经济效益. 因此,如何建立一个合理的商圈位置模型直接关系着推荐结果的好坏. 早期商圈测评模型主要以区域(或城市)为单元,结合人口、距离、零售面积、经济环境、消费比例等因素,并进行实地考察来划分区域边界,但具有较高的实施成本,且考虑因素众多,划分结果较差. 近几年,有不少学者考虑将空间聚类算法加入到商圈划分中去,然而,常见的几种传统聚类算法在一定程度上均存在聚类结果不够准确、时间复杂度较大的问题. 因此,有学者考虑将空间自相关算法、核密度估计算法等方法纳入聚类算法中,以实现商圈的划分. 其中,较为典型的有郝斌等人[8]提出的多维特征融合的商圈划分方法,将K-means空间聚类算法、空间自相关算法和核密度估计等算法融入商圈模型中,但由于Kmeans算法的聚类结果主要取决于聚类中心的选取,无法保证其聚类个数能收敛至全局最优,使得在商圈区域划分时需要多次设定该值,并从中选取最好结果,具有一定的时间复杂度且随机性较大,在很大程度上影响商圈划分结果.
为减少初始聚类中心对聚类结果带来的影响,本文主要采用基于分区的DBSCAN聚类算法,算法主要思想是:只要聚类空间中相邻区域数据样本点的密度不小于一定阈值就继续聚类,可将密度足够大的相邻区域进行连接,具有聚类速度快、有效处理噪声点和发现任意形状的空间聚类的优点. 由于传统DBSCAN算法在参数Eps和MinPts的选择上存在不足[9],本文将结合核密度估计方法[10]进行改进,以实现参数的自适应选取.
本文通过将交易数据进行地图投影,研究地域偏好差异与消费水平、消费习惯方面的关系,发现其能呈现明显的地理位置特征[11],以此对市场进行位置区域划分,划定商圈范围,建立商圈位置区域模型,进行以商圈为主体的商品推荐.
将商户位置数据与某商品A的订单交易数据在地图上进行投影,得到关于商品A的交易情况热力图,如图1所示,以红色气泡标记表示商户位置,色彩渲染区域的颜色深浅表示商品A的交易分布情况,其中颜色越深表示交易越多,越浅表示越少.
图1 某商品交易热力图示例
对商圈这一点、线、面三部分构成的地理区域[12],本文采用圆形过滤与DBSCAN密度聚类算法、核密度估计算法相结合的方法进行范围划定,首先以预处理下的浙江省商圈数据中的经纬度数据为圆心,以3 km为半径,划定该圆的外切正方形为商圈范围,搜索出初步商户集合,划定商圈搜索范围. 并获得最小经度,最大经度,最小纬度,最大纬度的四个顶点坐标,用以判断商户位置与商圈的关系. 然后进行离圆心点距离大于3 km的商户的过滤,得到圆形过滤下的商户集合,即初始商圈.
根据订单中的商户位置数据和交易数据,结合圆形过滤方式下的初始商圈,并通过改进的DBSCAN密度聚类算法对商户位置数据集中每个商户点的Eps邻域进行簇搜索,即利用核密度估计方法来确定每个初始商圈内的Eps和MinPts参数,导出最大密度相连的商户集合,实现对圆形过滤方式下的商圈商户进行进一步去噪,保证同一商圈下商户的相似性. 对划分商圈过程中浙江省全域范围下25万商户中未被包含在任何所划定的商圈内的近8千户商户,以距离该商户最近商圈的推荐列表进行推荐. 建立起商圈与商户间的商圈位置区域模型.
2.2 面向流行度的推荐算法
基于商圈位置区域模型,结合商圈流行度,以商圈为关键字进行对商户商品交易数据的聚类,考虑到时间因素对商品流行度的影响,采用以交易时间计算权值的方法来统计衡量每个商品在各商圈内的流行度,距离现在越近的交易所统计出的权重越高,越远的权重越低. 具体计算每次交易权值的公式如下:
上述公式中的α为时间衰减参数,用来调控时间参数对商户兴趣变化的影响; k指的是某商品的一次交易记录; tk表示该交易记录的完成时间; T为当前时间.
针对商圈流行度,按商品对时间加权后的所有交易进行统计,得到各商品的总权重,即为当前商圈内各个商品的最终流行度,按流行度排序计入各商圈的推荐列表. 具体计算商圈内某商品流行度的公示如下:
其中,u表示某个商圈; i表示在商圈u内有交易记录的一个商品; k表示商品i的一次交易记录.
通过上述时间衰减参数与商品权重的排序计量,根据商品在商圈内部的权重随时间变化的趋势有效反馈商圈商品流行度变化,建立起面向流行度的商品推荐算法(Business-circle Popularity Based Algorithm,BPA).
2.3 面向商圈相似度的推荐算法
在面向商圈流行度的推荐算法中,采用的是将流行商品在商圈内进行推荐的方法,容易造成长尾效应,使流行商品一直在推荐列表中,而新商品难以得到推荐,导致推荐的商品存在新颖性和惊喜度不足的问题.为了解决这一困境,考虑商圈相似度因素,通过计算不同商圈之间的相似度,为目标商圈即当前被推荐的商圈推荐相似商圈中较为流行的商品,并过滤掉目标商圈中已经交易过的商品,建立起面向商圈相似度的协同过滤算法(Business-circle Similarity Based Collaborative Filtering,BSCF),主要进行如下操作:
统计筛选每个商圈内的商品交易数据,考虑时间上的流行度,计算各商圈内商户同时对一些商品感兴趣的程度,即先通过商品交易记录结合其流行度来计算商圈内各商品之间的相似度. 再由所交易过的商品的相似度来计算商圈之间的相似度,从而将被预测商品与商圈中共同交易过的商品之间的相似性作为权重,代入计算商圈相似度的公式中:
其中,u为目标商圈,i为被预测的商品,sim(u,v)表示商圈u和商圈v之间的相似性,N(u)和N(v)分别表示商圈u和商圈v中有过交易记录的商品集合. 其中sim(i,j)表示商品i与在商圈u和商圈v中均有交易记录的商品j之间的相似性,计算公式如下:
其中,x表示某个与商品i和商品j均有过交易的商圈,N(i)和N(j)分别表示与商品i和商品j的有过交易的商圈集合,p(i)和p(j)分别表示商圈x中商品i和商品j的流行度.
3 实验结果及分析
3.1 实验测评标准
对于推荐算法性能,一般采用准确率P、召回率R进行评价,但本文在实验过程中发现,准确率和召回率并不是完全正线性相关的,二者互有高低且表现在不同方面,因此本文还将采用Pazzani提出的调和平均数F值(F-measure)[13].
其中准确率P是指推荐正确的商品数目在总的推荐数目中的占比[12],对于以RecommendSet表示推荐集合,PurchaseSet表示交易商品种类数目集合,准确率P的计算公式如下所示:
召回率R是指推荐正确数目占总的购买种类数目的百分比[12],计算公式如下:
结合准确率和召回率的F值,能进行更全面的评价,计算公式如下:
3.2 结果分析与对比
3.2.1 时间衰减参数调整
时间衰减参数α在交易权重weight的计算中起关键作用,并直接影响商品在各商圈内的流行度,但由于α没有特定取值范围,不同取值在不同数据集、系统中都会产生不一样的推荐效果. 因此,实际应用中需通过反复试验来得到最优值. 通过对面向商圈流行度的推荐算法进行实验,设定推荐数量N=15,α在[0,0.09]之间,具体结果如表2所示. 其中,α=0时,算法将不考虑时间因素的影响.
表2 推荐数量N=15时,不同α下的准确率和召回率
由上表可知,面向商圈流行度的推荐算法在结合时间衰减参数的前提下会有更好的推荐准确率和召回率. 同时,当α=0.03时,效果最佳. 因此,本文将选取时间衰减参数α为0.03来进行后续的对比实验.
3.2.2 实验对比算法
在对比实验中,选择3种传统推荐算法与本文的两种基于商圈位置区域模型的推荐算法来进行性能上的比较. 对比算法如下:1) 基于用户的协同过滤算法[14](User Based Collaborative Filtering,UCF),根据商户的商品交易次数矩阵来计算商户之间兴趣相似度,找出目标商户的最邻近商户集合进行推荐,并通过单值分解和聚类实现矩阵的降维,来缓解稀疏性问题; 2) 基于关联规则的推荐算法[15](Association Rules Based Algorithm,ARA),通过改进的Apriori算法,来挖掘出数据之间所隐藏的潜在关系,为商户推荐与其交易记录关联程度较高的商品; 3) 基于热门商品的推荐算法(Popular Products Based Algorithm,PPA),将全域范围下商户交易数量最多的商品作为热门商品进行推荐.
3.2.3 算法稳定性分析
考虑不同的推荐数量对算法推荐质量的影响,进行算法稳定性的研究. 本文将推荐数N依次设定为5,10,15,20,25进行实验,发现随着N的增加,各算法的准确率呈现出先升高后下降趋势,召回率则一直保持上升,且在后期趋于平缓,而F值变化曲线表明,当N=15时,各算法的准确率和召回率之间均开始出现失衡. 因此,本实验将选定N=15作为平衡准确率和召回率的临界值. 具体结果如图2-图4所示.
图2 准确率随推荐数量变化
图3 召回率随推荐数量变化
图4 F值随推荐数量变化
由实验可知,本文所提出的面向商圈流行度的推荐算法具有较好的推荐准确性,但由于将流行商品进行推荐,存在长尾效应,即其召回率和F值均较低. 而面向商圈相似度的协同过滤算法充分利用商户位置数据,结合商圈,在一定程度上增加了可用的推荐信息,使推荐准确率和召回率明显优于其他几种算法,具有良好的稳定性. 并且该算法还缓解了冷启动问题,针对可用信息较少,兴趣特征难以提取的商户也可提供较为准确的推荐,对比其他推荐算法,面向商圈相似度的协同过滤算法具有明显的推荐优势.
3.2.4 算法应用与分析
企业3月份针对某款新品在浙江省内进行为期6个月的投放试验,并在基于商圈位置区域模型的基础上采用基于商圈相似度的协同过滤算法来改进传统的新品投放策略,以增强该规格新品与目标群体、零售商户所在商圈的消费群体匹配程度,从而提高新品在消费者中的关注度与接受度. 具体投放策略流程如下:
1) 按商品的品牌规格定位搜寻出与投放新品最为相似的商品;
2) 根据相似商品,找出5个具有该新品最高流行度的商圈,记为A组商圈;
3) 通过商圈相似度,搜寻出10个与A组商圈最为相似的商圈,记为B组商圈;
4) 为验证A,B两组商圈针对所投放的新品具有一定的投放意义,通过传统投放策略,即通过销量、结构或者档位进行排序,择优选取50名零售户,进行对比实验,记为C组;
5) 分别从A、B两组商圈中随机选择50个零售户作为投放户,与C组一起进行新品的等量投放试验,统计各组商圈在每个月份针对所投放的新品的销量,绘制销量趋势图,如图5所示.
图5 新品投放效益对比图
可以发现,经过6个月的新品投放试验,A、B两组商圈每个月的新品销量明显高于C组,因此,该新品投放方法具有较好的投放效果. 并且,该基于商圈相似度的新品投放策略已在今年8月在全国范围内正式部署,具有较好的投放效益.
4 结论
本文通过建立商圈位置区域模型,将地理位置信息作为重要特征数据纳入推荐算法,有效弥补了传统推荐算法中地理位置或区域信息因素缺失的缺陷. 相较于其他基于模型的推荐算法,引入商圈作为市场划分的标准,并进行分区推荐,增强了市场拟合度,使得推荐更具有市场针对性和可靠性. 对于所提出的两种基于商圈位置区域模型的推荐算法:面向商圈流行度的推荐算法和面向商圈相似度的协同过滤算法,本文在实验过程中采用Spark进行算法计算效率加速[12,16,17].实验结果表明,基于商圈位置区域模型的推荐算法相较于传统推荐算法,具有较好的推荐准确率,可以一定程度地缓解冷启动问题. 而面向商圈相似度的协同过滤算法通过推荐相似商圈中的流行商品,很好地提高了推荐结果的新颖性和惊喜度,避免了长尾效应的产生,在保证推荐准确率的前提下,具有良好的稳定性.
下一阶段,将继续对基于商圈位置区域模型的推荐算法进行研究,并从商圈范围划分、数据指标的设定、计算效率的提升等几方面改进算法及实验,提高商品的推荐准确率,满足用户个性化商品推荐的需求.