APP下载

基于XGBoost的用户定位与商铺推荐

2019-05-24杜成喜郭瑞祥左彬靖肖明王杰

无线互联科技 2019年1期
关键词:分布式

杜成喜 郭瑞祥 左彬靖 肖明 王杰

摘 要:随着互联网的高速发展,期间衍生出了一系列改变人们生活的技术产物。互联网移动支付的迅速普及,我们享受到越来越多的生活便利。其中推荐系统最具代表性,它的出现使得人们不再像过去那样通过搜索引擎从海量的数据中查找自己所需要的信息,而是根据推荐系统主动提供的物品信息进行选择。这一局面的改变,得益于人们不断地在推荐算法上进行研究而取得的成果。在真实生活中,当用户在商场环境中打开手机的时候,存在定位信号不准、环境信息不全、店铺信息缺失、不同店铺空间距离太近等挑战,因此,如何精确地判断用户所在商铺是一个难题,这也是这一方面推荐系统的难题之一。文章研究了基于XGBoost的用户定位与商铺推荐。

关键词:商铺推荐;用户定位;分布式

随着“互联网+”的发展与兴起,传统的各行各业正在深受其影响,飞速发展,这些也深刻影响着人们的生活,有一些生活中的典型案例,如:当你走进某家商场的某家餐厅时,手机会自动弹出附近商家的优惠券;当你走进某家衣服店时,手机可以自动推荐你所喜欢的衣服;当你经过一些地方时,手机会提醒你附近是否有自己喜欢的东西,在我们日常上网购物时,每个人的购物软件所推荐的物品也是根据个人的日常爱好和生活习惯来进行推荐,从而在一定程度上实现“千人千面”,以上种种,都是推荐系统在人们日常生活中的一些体现。在上述所列举的例子中可以看出,要想根据用户的消费信息实现精准推荐,在商场中精确地定位用户当前所在店铺或者位置非常关键,而在本文中就是希望能够通过用户的手机WiFi等信号信息,精准定位用户的位置,从而实现对不同位置的用户进行精准推荐。

根据如何抽取参考特征,我们可以将推荐引擎分为以下四大类。

(1)基于内容的推荐引擎:它将计算得到并推荐给用户一些与该用户已选择过的项目相似的内容。例如,当你在网上购书时,你总是购买与历史相关的书籍,那么基于内容的推荐引擎就会给你推荐一些热门的历史方面的书籍。

(2)基于协同过滤的推荐引擎:它将推荐给用户一些与该用户品味相似的其他用户喜欢的内容。例如,当你在网上买衣服时,基于协同过滤的推荐引擎会根据你的历史购买记录或是浏览记录,分析出你的穿衣品位,并找到与你品味相似的一些用户,将他们浏览和购买的衣服推荐给你。

(3)基于关联规则的推荐引擎:它将推荐给用户一些采用关联规则发现算法计算出的内容。关联规则的发现算法有很多,如Apriori,AprioriTid,DHP,FP-tree等。

(4)混合推荐引擎:结合以上各种,得到一个更加全面的推荐效果。

1 数据描述

本文所使用的数据主要包含三大部分。

第一部分数据是店铺和商场信息数据(数据示例见表1)[1],主要包含6个有用字段,分别是店铺ID(shop_id),店铺类型ID(catehory_id,共有40种左右类型),店铺位置—经度(longitude),店铺位置—纬度(latitude),人均消费指数(price),店铺所在商场ID(mall_id),这一部分数据总共包含97个mall的信息,涉及8 477间shop[1]。

第二部分数据是用户在店铺内的交易数据(数据示例见表2)[1],数据是在2017年8月份的交易数据,主要包含6个字段,分别是用户ID(user_id),用戶所在商铺的ID(shop_id),行为时间戳(time_stamp),行为发生时的位置—经度(longitude),行为发生时的位置—纬度(latitude),行为发生时的WiFi环境(WiFi_info,包括bssid:WiFi唯一识别码,signal:强度,flag:是否连接)[1]。

第三部分则是测试数据[1],测试数据主要使用是时用户交易时刻环境的相关数据(数据示例见表3),数据是2017年9月前两周的交易数据,包含测试数据ID,用户ID,商场ID,行为时间戳,行为发生时位置—经度,行为发生时位置-纬度,行为发生时WiFi环境[1]。

在使用算法进行模型建设之前,对数据的处理是不可避免而且必要的环节,例如对用户在店铺内的交易数据中的WiFi_info进行切分解析,还有运用mapreduce分布式计算方式从用户维度对数据进行清洗处理,获取到用户的消费店铺和消费次数等信息,以便后续模型的建设,还有对缺失值的填补,以及去除重复的垃圾数据。在算法方便本文主要采用两种算法进行对比,分别是XGBoost算法和Logistic Regression算法。下面对这两种算法进行简要介绍与分析。

2 算法介绍

2.1 XGBoost

GB算法中最典型的基学习器是决策树,尤其是CART,GBDT是GB和DT的结合,需要注意的是这里的决策树是回归树,首先,XGBoost是Gradient Boosting的一种高效系统实现,并不是一种单一算法。XGBoost里面的基学习器除了用tree(gbtree),也可用线性分类器(gblinear)[2]。而GBDT则特指梯度提升决策树算法[3]。

XGBoost相对于普通gbm的实现,可能具有以下的一些优势:(1)显式地将树模型的复杂度作为正则项加在优化目标。(2)公式推导里用到了二阶导数信息,而普通的GBDT只用到一阶。(3)允许使用column(feature) sampling来防止过拟合,借鉴了Random Forest的思想,sklearn里的gbm好像也有类似实现。(4)实现了一种分裂节点寻找的近似算法,用于加速和减小内存消耗。(5)节点分裂算法能自动利用特征的稀疏性。(6)data事先排好序并以block的形式存储,利于并行计算。(7)支持分布式计算可以运行在MPI,YARN上,得益于底层支持容错的分布式通信框架rabit。

2.2 Logistic Regression算法

Logistic Regression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。类似某用户购买某商品的可能性,某病人患有某种疾病的可能性等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达[4]。“几率”指的是某事物发生的可能性与不发生的可能性的比值。Logistic regression可以用来回归,也可以用来分类,主要是二分类。它给我们提供的就是样本属于正类的可能性是多少。

3 实验过程及结果

3.1 实验过程

3.1.1 训练集划分

在训练集划分上,笔者简单地将训练数据的最后7天划分为训练区间,此前的作为特征提取区间。线上预测时使用全部数据作为特征提取区间。本地验证时,直接从训练集中拿出最后3天作为验证集。本地验证时不更新特征提取区间(即仍然使用7.1—8.24作为特征提取区间),降低了实现上的复杂性。

3.1.2 特征构造

(1)标记特征。

记录中是否有连接的WiFi。

记录中是含否有null。

记录中WiFi与候选shop出现过的WiFi重合的个数。

(2)“总量—比例”特征。

该mall的总历史记录数、候选shop在其中的占比。

该user的总历史记录数、候选shop在其中的占比。

WiFi历史上出现过的总次数、候选shop在其中的占比。

在当前排序位置(如最强、第二强、第三强…)上WiFi历史上出现过的总次数、候选shop在其中的占比。

连接的WiFi出现的总次数、候选shop在其中的占比。

经纬度网格(将经纬度按不同精度划分成网格)中的总记录数、候选shop在其中的占比。

对于特征3、4,每条记录中的10个WiFi由强到弱排列,可生成10个特征。

(3)差值特征。

WiFi强度—候选shop的历史记录中该WiFi的平均强度。

WiFi强度—候选shop的历史记录中该WiFi的最小强度。

WiFi强度—候选shop的历史记录中该WiFi的最大强度。

3个WiFi强度差值特征,按照信号强度由强到弱排列,可生成10个特征[3]。

(4)距离特征。

与候选shop位置的GPS距离(L2)。

与候选shop历史记录中心位置的GPS距离(L2)。

与候选shop对应WiFi信号强度历史均值的距离(L1,L2)[3]。

(5)其他特征。

特征中還包括多分类的输出概率。另外,还有一些利用规则定义的距离特征,这里不再详述。

3.2 实验结果

通过对上述数据进行清洗处理,构造特征,然后分别训练了XGBoost和Logistic Regression两个模型,其中评价标准为预测出的shop_id和标准答案中的shop_id相同,也就是评价标准为准确率ACC=预测正确样本总数/总样本数,得出结果如表4所示。

由此结果可以看出,在此种业务背景之下,通过对数据的处理,特征的提取构造等一系列处理方法,分别选用XGBoost算法和传统的Logistic Regression算法进行了对比,得出了在指标为ACC的情况下的预测结果。

4 结语

本文提出了一种基于XGBoost的用户定位与商铺推荐方法,通过对用户信息和商铺数据的挖掘与探索,构造出合适的特征,然后通过与传统的Logistic Regression在评价标准为ACC的情况下进行了对比,发现此种方法准确率明显高于传统的方法,后续希望能够通过这种方法结合现有的推荐系统实现对用户的精准推荐,实现算法的实际效益。

[参考文献]

[1]阿里云.商场中精确定位用户所在店铺[EB/OL].(2018-05-26)[2018-11-05].https://tianchi.aliyun.com/competition/information.htm?spm=5176.11165261.5678.2.7d5148aesPuqnG&raceId=231620.

[2]邱耀,杨国为.基于XGBoost算法的用户行为预测与风险分析[J].工业控制计算机,2018(9):44-45.

[3]倪巍,王宗欣.基于接收信号强度测量的室内定位算法[J].复旦学报(自然科学版),2004(1):72-76.

[4]张昊,纪宏超,张红宇.XGBoost算法在电子商务商品推荐中的应用[J].物联网技术,2017(2):108-110.

猜你喜欢

分布式
基于RTDS的分布式光伏并网建模研究
基于预处理MUSIC算法的分布式阵列DOA估计
基于点估计法的分布式电源的配置优化
一种用于微电网分布式发电的新型Buck-Boost逆变器
基于DDS的分布式三维协同仿真研究
西门子 分布式I/O Simatic ET 200AL
家庭分布式储能的发展前景
第26届IEEE并行及分布式处理国际会议