基于协同过滤的商品个性化推荐算法应用研究

2020-12-21 03:58梁家富
河北软件职业技术学院学报 2020年4期
关键词:余弦协同顾客

梁家富

(广州科技职业技术大学,广州 510550)

0 引言

随着互联网的快速发展,电子商务平台的商品交易规模越来越大,平台中的商品数量和种类呈几何倍数增长,人们的网上购物频率愈来愈高。顾客在网络购物时,在海量的商品中选取出需要的商品是不容易的,所以商品推荐系统的开发与完善受到了大家的追捧。商品推荐系统作为电子商务平台系统的重要组成部分,推荐效率的高低直接影响着平台系统商品交易量的提升,因此电子商务平台非常重视推荐系统的应用开发。

电子商务平台推荐系统的主要技术是协同过滤算法(collaborative filtering,CF),以顾客购物需求为目标,在海量的商品数据中形成信息推荐模型,具有商品信息收集、数据处理、信息分析和商品推荐预测等功能。[1]协同过滤算法是根据相似购买特征的顾客或者相似属性特征的商品数据进行线性分析,将偏好接近的顾客或者特征相似度高的商品形成邻集,最终把它们推荐给顾客的一种决策方法。[2]该算法被广泛应用在电子商务平台推荐系统中,如美国的Amazon、亿贝以及国内的阿里、当当、美团等。

当前大型电子商务平台的各类数据激增,单机版机器学习模式R Studio 和分布式机器学习模式Spark MLib 的电子商务推荐系统处理海量数据质效都有所下降,具体表现在商品推算的正确率下降、误差增大和推荐的商品信息满足不了顾客的个性化需求等方面。采用企业级阿里云机器学习平台(Platform of Artificial Intelligence,简称PAI)进行协同过滤算法的商品个性化推荐系统,能有效处理大规模的商品数据信息,解决商品信息的离线调度问题,进而提升商品推荐预测能力和顾客推荐服务满意度。

1 商品个性化推荐系统工作原理

协同过滤算法的核心内容是在已有顾客购买行为或意见的数据基础上,预测该顾客的购买意向,如喜欢哪些商品或者对哪些商品感兴趣。常用的协同过滤算法有两种,即基于顾客的协同过滤算法和基于商品的协同过滤算法。[3]

基于顾客的协同过滤算法是根据顾客以往的购买行为数据(如商品的点击、收藏、评论、购买或分享)分析出顾客喜欢的商品或内容,针对喜欢程度进行量分,通过量分高低计算出具有相同喜好的顾客,最后对他们进行商品推荐。基于商品的协同过滤算法就是在基于顾客的协同过滤算法上将顾客换成商品,通过分析顾客对各种物品的量分获得物品之间的线性关系,进而把相似的商品推荐给顾客。[4]

PAI 是阿里云提供的海量数据处理智能机器学习平台,具备机器学习和深度学习一站式服务功能。机器学习PAI 提供了数据处理、模型创建、机器训练、项目部署、项目预测等功能。在数据资源处理上,PAI 兼容了大数据处理的MaxCompute、OSS、NAS 和HDFS 等平台;在计算框架上,PAI提供了完整的生态系统框架,如MR、MPI、Graph、SQL、Tensorflow、Caffe、PYTorch 和 Flink;在产品开发工具上,PAI 提供了3 个产品,即可视化开发工具PAI-STUDIO、云端交互开发工具PAI-DSW(Data science workshop)和模型服务工具PAIEAS(Elastic Algorithm Service)。

本文采用PAI-STUDIO 开发工具,通过底层MaxCompute 进行数据处理,使用PAI 提供的分布式、大数据、封装算法,以Restful API 的形式与系统业务打通,实现智能商品个性化推荐系统功能,最后以推算监测数据为例验证系统的计算性能。[5]

2 推荐系统的关键技术设计

电子商务平台商品推荐系统的关键内容是推荐算法,它是商品推荐平台系统效果的核心因素,即推荐系统的关键是协同过滤算法。

2.1 顾客对商品的偏好设计

应用协同过滤算法进行商品应用推荐时,应对顾客和商品特征进行设定,用 u、i、t、d 分别表示顾客、电子商务项目商品、顾客购买行为和顾客购买时间。用N 表示顾客的数量,所有顾客表示为:User={u1,u2,…,uj,…,uN};设项目商品的数量为P,所有项目商品表示为:Item={i1,i2,…,ij,…,iP};设顾客的购买行为类型为G,购买行为表示为:Active_type={t1,t2,…,tj,…,tG},其中 A 的取值为(0,1,2),0 表示顾客点击行为,1 表示顾客购买行为,2 表示顾客收藏行为;设顾客购买日期为D,购买时间表示为:Active_Date={d1,d2,…,dj,…,dD}。

2.2 项目商品余弦相似度

余弦相似度(cosine similarity)是利用两个向量形成的夹角计算它们的余弦值,评估它们的相似水平,常用在二维空间中,使用欧几里得点积定理求它们的余弦值,公式如下:

已知属性向量a 和b 的夹角两边长度,那么它们的余弦相似度cosθ 可通过转换进行计算,余弦相似度公式如下:

为了平滑余弦相似度的误差引入平均值,改进的余弦相似度公式如下:

余弦相似度在商品的协同过滤推荐算法中广泛应用,相似度 sim(a,b)值的范围在[0,1]区间,离1 越近表示两个项目商品的相似度越高,反之表示相似度越低。

2.3 项目商品杰卡德距离相似度

Jaccard 相似系数(Jaccard similarity coefficient)又称为杰卡德系数,常用来计算有限数量的项目商品样本集之间的差异度和相似度。已知项量 a,b,Jaccard 系数就是 a 与 b 的交集数值与它们的并集数值的比值,公式如下:

公式中 J(a,b)的数值越大,则表示项目商品集a,b 相似度越高。与Jaccard 系数密切相关的是Jaccard 距离,常用于表示商品集的不相似度,公式如下:

公式中dj(a,b)的数值越大,则说明项目商品集a,b 的不相似度越高。

3 实验分析

3.1 实验环境和工作过程

在阿里云机器学习PAI 平台下进行协同过滤推荐实验,步骤如下所述。

(1)在阿里云平台注册账号,开通机器学习PAI。由于 PAI-Studio 是在 MaxCompute 环境上执行的,所以还要开通MaxCompute 服务,需要选择所属区域、付费方式、是否开启GPU 集群等。

(2)数据集的准备和管理。数据集的上传需要在PAI 平台注册数据集,可将本机数据集导入到PAI 平台,导入的数据集文件支持.manifest 和.csv格式。数据集上传时小于20M 可以用IDE 环境上传,大于 20M 建议使用 MaxCompute Tunnel 上传,默认执行压缩后上传。在PAI 中数据集存储为对象存储(Object Storage Service,OSS),可在RAM访问控制中开通Aliyun PAI Accessing OSS Role的权限。

(3)基于PAI 的协同过滤推荐算法的工作过程。基于PAI 的协同过滤商品推荐系统是建立在MaxCompute 平台之上的,本次实验在PAI Studio可视化建模中进行,利用阿里云的多种云端计算资源,能快速高效地从多维度完成企业级的机器学习实验。协同过滤商品推荐系统的工作过程如图1 所示。

图1 协同过滤商品推荐系统工作过程

3.2 推荐商品的数据集

本实验基于商品的协同过滤的推荐系统,采用了某电子商务购物平台的公开数据集进行测试,数据集分为cf_训练集和cf_测试集两部分。cf_训练集有 user_id、Item_id、active_type 和active_data四个字段,分别表示顾客ID、商品id、商品购买行为和商品购买时间,记录数为104 097,顾客人数为847,商品数目为 7017,顾客行为用 0,1,2 表示(0表示点击,1 表示购买,2 表示收藏),顾客购买行为时间采用的是2018 年6 月4 日之前的数据。cf_测试集字段和cf_训练集一样,记录数为78 783,顾客人数为854,商品数目为6604,顾客购买行为时间采用了 2018 年 7 月 10、23、26 日和 8 月 7 日共4 天的数据。具体研究数据集情况如表1 所示。

表1 研究数据集情况

表1 中总顾客、总商品和顾客行为的数据是原始数据,包含了只点击或者只收藏的顾客信息,测试主要是采用有购买行为的数据,即整理后购买人数、被购买商品和购买行为的数据。

3.3 协同过滤推荐算法测试

在PAI 平台进行协同过滤商品推荐测试时,采用PAI 平台协同过滤etrec 组件的三种相似度计算方法,分别进行jaccard、wbcosine 和asymcosine 三组测试。

使用训练集进行实验测试,为保证测试的公平,协同过滤的参数设置为一致。其中Top-N 设置为1,主要考虑商品两两之间的相似度,不考虑多商品之间的相似度问题;计算行为,即同一位顾客的某个商品出现多次时的处理playload 行为,实验设置为add;最小物品值minUserBehavior 设为2,最大物品值maxUserBehavior 设为500,平滑因为0.5,权重系数为1。三组协同过滤实验测试结果每组都有1343 对数据,前15 条数据如表2 所示。

表2 中第一行数据分析如下:jaccard 的值为1000 和 11 849:1,表示商品编号 1000 和商品编号11 849 相似度为1,表明具有较高相似性;wbcosine 的值和jaccard 的值解析一样,表明具有较高的相似度;asymcosine 的值为 1000 和 11 849:18.045,表示商品编号1000 和商品编号11 849 的相似度值为18.045,在该列中数据较高,表明具有较高的相似度。

根据图1 的工作过程进行试验,通过对数据的拆分 SPLIT_PART、内连接、SQl 去重 distinct 和全表统计等操作,得到商品推荐总数。

使用测试集进行实验测试,对数据进行过滤与映射、与训练集内连接、SQl 去重distinct 和全表统计等操作,得到商品准确推荐总数,具体如表3所示。

表2 协同过滤后的商品间的相似度

表3 协同过滤算法性能测试结果

表3 中,协同过滤推荐式样采用 jaccard、wbcosine 和asymcosine 测试的商品推荐总数都是18 065,而商品准确推荐总数不一样,分别是60、46 和42。这说明基于商品的协同过滤推荐系统采用jaccard 类型进行行为相关性的度量效果更优,更加符合顾客的需求,推荐的商品信息更容易让顾客购买,具有较高的应用性。

4 结语

电子商务协同过滤的商品推荐问题一直都是行业研究的重点,本文设计了采用阿里云PAI 平台基于协同过滤算法的商品推荐系统。首先,准备平台环境,开通MaxCompute 大数据功能,了解PAI 平台的工作过程;然后,整理商品数据集;接着使用协同过滤etrec 组件进行jaccard、wbcosine和asymcosine 三组测试,结果表明采用jaccard 类型进行商品购买预测效果更佳。

猜你喜欢
余弦协同顾客
输入受限下多无人机三维协同路径跟踪控制
家校社协同育人 共赢美好未来
旋转变压器接线故障分析法的研究
蜀道难:车与路的协同进化
“四化”协同才有出路
豆腐多少钱
两个含余弦函数的三角母不等式及其推论
实施正、余弦函数代换破解一类代数问题
让顾客自己做菜
分数阶余弦变换的卷积定理