基于外卖数据的社区团购选品系统研究与应用
2022-12-03刘云鹏
李 瑾 刘云鹏 邱 虹
(浙江万里学院 浙江 宁波 315100)
0 引 言
网络技术、移动技术与电子商务的发展,促进了网络购物的迅速增加,使得网购成为生活模式中必需的一部分。团购是网购的一种模式,指部分消费者联合起来形成一个消费团体,求得更优价格的一种购物方式。社区团购则是团购演变后的一种新型模式,利用小区内的兼职用户、物业人员或小店老板等作为团购团长,通过电商或供应链平台将商品以较低的价格对社区内群体进行销售的行为,具有明显的区域性与小众化的购物特色。可以看出,通过团长这一稳定的社区关键角色,使用微信等社交平台获取人气,可以有效地将社区内固定用户与电商平台进行高粘性与深度的链接,利用预售和爆款等轻资产运作模式快速满足小区用户快消品的刚性需求,本质上是O2O的一种升级商业模式。
社区团购在2015年已经出现萌芽,2018年开始迅猛发展,目前全国有300多家社区团购类的电商平台或者企业,社区团购微信小程序用户规模已经突破500万,融资金额超过40亿。东南沿海的一线与二线城市是社区团购的活跃地区,既包含全国性平台,也有各种快速成长起来的地方团购平台。如今社区团购的市场规模依然在不断扩大,已经进入到竞争白热化的阶段。
要做好社区团购,除了供应链和性价比之外,一个重中之重的工作就是选品,差异化的选品本身也是社区团购的一大优势。大量增加团购品类或者全品类反而会增加不必要的成本和减弱社区团购的优势,也会对小区用户的下单频次造成一定的影响。因此,要做好社区团购项目,要有对市场需求进行判断的能力,必须明确当前时段下什么样的产品适合在社区内营销,如何对不同的社区进行差异化营销。
由于住户数据的安全性与保密性等因素,对社区进行画像和获取丰富的数据特征并非一件易事,一种有效可行的方案就是依靠互联网上的开放数据进行挖掘与分析。如今外卖产业已经深入到每个社区的家家户户,可以真实地反映出大多数家庭一日三餐消费的快消品,而快消品又是社区团购的主打商品,所以本文以外卖数据为切入点,通过对不同社区外卖数据的分析进行一种选品方案的设计,本质是针对社区进行个性化的商品推荐,从而提升社区用户体验,提高页面转化率。本文的主要贡献包括:
(1) 提出一种有效利用外卖数据对不同社区的购买力与食品喜好进行分析的方法,从而商家可以针对不同社区提供差异化的商品推荐与服务。
(2) 使用最长公共子序列的匹配方法建立外卖菜品名与常见大众菜谱的关联,以及菜谱主料与有效商品名的关联,从而找到外卖食品到实际商品的最终映射关系,给选品与竞品分析提供数据支撑。
本文利用爬取的“饿了么”外卖平台数据进行分析,并在宁波某家做社区团购的电商企业进行了实际应用,根据分析结果对不同社区开展定制化商品推荐服务,企业经济效益得到了提升,验证了本文方法的价值与有效性。
1 相关工作
对于大型规模的电商平台来讲,可以根据系统长期积累的商品数据、用户数据和用户行为数据开发一个内部的选品系统,这个系统既可以内部自己使用,也可以通过接口或软件产品的方式开放部分或全部功能给需要的商家。
针对亚马逊的选品工具主要有亚马逊船长和Sorftime,亚马逊船长产品不仅包括基于大数据分析的选品功能,还包括经营分析、竞品监控、跟卖监控和评价监控等功能。选品的核心功能包括长尾关键词、窥探竞品词、搜索选品调研、Reviews智能分析和产品监控。Sorftime对所有亚马逊的分类产品进行列出并对每一产品给予各种多维度的标签,包括卖家数量、市场容量、卖家垄断系数和品牌垄断系数等,从而可以更好地以市场与自身匹配度为导向进行更加合理的选品,让卖家更快找到合适的市场,从而获得更高的投资收益。
淘宝生意参谋可以对淘宝市场店铺的经营数据进行了解,从而指导商家选品和更好的数据化运营。主要包括商品实时排行、流量分析、搜索关键词分析、行业排名和交易分析等。阿里指数是阿里巴巴技术部依据阿里巴巴网站每日运营数据研发出的数据分析平台,能以某个行业或某个地区为视角进行多维度的分析,比如针对热门细分子行业的分析,某地区供应商与采购商交易分析等,从而可以对选品和采购渠道做出更加合理的判断。
事实上可以把单个社区刻画成一个用户,这个用户是由社区内住户的共性所组成,选品的本质就是针对社区的推荐,对于不同的社区推荐不同的产品。由于深度学习强大的学习能力,越来越多的研究开始使用深度学习进行推荐系统的设计。一般是将用户与商品相关信息作为深度神经网络的输入数据,通过深度学习发现其隐含表达,根据隐含表达特征进行商品推荐。
Zheng等[1]提出深度协作神经网络模型,在一定程度上缓解了推荐系统的数据稀疏问题。Chen等[2]在深度学习中将位置感知引入到个性化新闻推荐。Cheng等[3]提出一种深度与广度学习结合的学习模型,利用多源异构数据来提高推荐的记忆能力和泛化能力。He等[4]提出一种神经协同过滤方法,可以对用户与商品的交互函数进行学习。AutoML自动的学习能力也正在被应用到推荐系统。Naumov等[5]在基于推荐的深度模型中加入特殊的并行机制从而减少内存限制和加速训练过程。Guan等[6]设计出一个深度多视模型来处理商品图像、商品描述和评价等多种输入的异构数据。Lee等[7]基于深度神经网络提出一种可伸缩控制的协同滤波算法。
知识图谱与人类认知智能更加接近,这种知识赋能的推荐与深度学习的结合逐步会成为推荐系统的主流。Wang等[8]提出一种基于注意力模型的知识图谱网络,提高了推荐的准确性和可解释性。Wang等[9]设计出一个多任务的深度学习框架,利用知识图谱控制任务之间的知识交叉与迁移。Cao等[10]对推荐模型与知识图谱进行联合学习,突出了在理解用户偏好方面的优势。同时在国内美团等大型餐饮平台也都在积极构建自己的知识图谱体系,用于客户体验更佳的推荐。
对于没有数据积累或业务数据量较少的中小电商企业来说,在冷启动阶段甚至在一个相当长的运营时间内都无法有效地利用内部的用户和商品数据进行分析,也无法形成深度学习的大数据和产生有价值的知识图谱体系,而其他大型平台的选品工具不仅价格昂贵,而且系统很多时候不能真正地适应中小企业本地化的需求,尤其是地方特色很强的社区团购业务。针对这些问题,本文利用网络开放的社区外卖数据,使用一种简单有效的分析策略建立蛋肉、蔬菜和水果等快消品与社区的关联,提供团购选品依据。
2 研究内容
2.1 整体框架与流程
基本模式如图1所示,核心思想是利用外部可以获取到的大数据来初步分析一个社区或地区对于不同食品的喜好程度,比如社区附近的外卖数据、菜场数据、竞品团购数据和超市数据等。把社区作为一个整体,分析社区的行为,获取社区的共性。对于不同的社区推荐不同的菜谱与相关的食材,同时结合竞品数据来分析菜谱主料对应单品的销售和价格情况,从而指导选品。
图1 选品的基本模式
整体业务流程包括线上业务和线下业务两个部分。线下业务如图2所示,主要是先对社区的外卖数据进行分析,从而得到小区喜爱食品的排名,然后将小区喜爱的食品与已有的菜谱数据进行关联,从而得到小区喜爱菜谱的排名,将菜谱及排名信息与社区信息进行关联;然后对竞品数据进行分析,将菜谱中的主料与竞品中的单品进行关联。线下业务会提前处理,并根据需要定期地更新爬虫数据与分析结果。线上业务如图3所示,以菜谱数据为中心,可以根据菜谱的单个属性以及多个属性的组合进行查询和展示,属性主要包括:名称、小区、类别、主题、主料、工艺、口味、难度和时间。为了选品,要分析菜谱中的主料与对应的单品,在选中单品后可以查看到单品在竞品中的多维度的分析结果。
图2 线下业务基本流程 图3 线上业务基本流程
在实际业务中可以根据购物清单进行菜谱的推荐,这里需要推荐两个方面的菜谱,一个是已有的所有单品可以组成的菜谱有哪些,另一个是使用部分购买的单品与系统可以购买的产品组合还可以产生哪些菜谱,这样更有利于推荐用户购买系统的其他商品。
2.2 短文本相似度计算
在本文方法中,菜谱名与外卖名的相关性度量以及菜谱主料与有效商品名的相关性度量都需要使用短文本相似度的计算,主要包括文本直接匹配和特征向量距离计算两种方法。
文本直接匹配的方法主要有最长公共子序列法(LCS)、编辑距离法和相同单词个数法,编辑距离会忽略文字之间的连续性,对整体性差异进行度量。对于中文的处理,相同单词个数法需要对短文本进行分词处理,一方面分词的准确性会直接影响到最终匹配的准确性;另一方面菜谱和食品等有较多的固定词组,往往不太适合进行分词。
使用特征向量匹配的方法首先需要得到每个短文本的特征向量,然后使用欧氏距离或者余弦相似度等方法对向量的相似度进行度量。获取文本的特征向量常见的有统计方法和机器学习训练方法,统计方法主要是基于词袋模型,比如文本的多热向量编码和TF-IDF统计编码等,机器学习方法目前应用比较多的是基于深度学习的Word2Vec和Sentence2Vector方法。不管是统计方法和机器学习方法,都需要大量基于应用场景的语料库,语料库的丰富性和准确性决定了训练出特征向量的价值,同时也有中文分词准确性所带来的问题,以及前文所提的菜谱与食品大量存在的固有词汇,更容易导致分词的错误,如果要避免分词错误需要人工维护固有词汇的字典,会带来额外巨大的工作量,而且在本文方法中,主要是菜谱名和商品名的短文本,没有大量上下文相关应用场景的语料库。也可以考虑第三方训练好可以直接使用的API接口,比如百度人工智能短文本相似度接口,除了收费价格问题以外,由于百度是通过大量的全文本的方式进行训练,未必适用于本文所提的应用环境。
还有一种混合法,不是一种独立的算法,而是使用两种或多种的结果,给予权重后混合度量结果。综上所述可以看出,最长公共子序列法是适合于本文所提应用场景的最佳文本匹配方法,基本定义与算法描述如下。
输入两个要匹配的中文序列X={x1,x2,…,xm}与Y={y1,y2,…,yn},|X|=m,|Y|=n,即长度分别为m与n(m≤n),LCS(X,Y)=lcs={l1,l2,…,lr},最长公共子序列为lcs,|lcs|=r。X1,i表示串x1x2…xi,1≤i≤m,Y1,i表示串y1y2…yj,1≤j≤m,则LCS(X1,i,Y1,j)=lcsi,j。该算法采用动态规划思想,首先构造一个(m+1)×(n+1)矩阵,并进行初始化,如图4(a)所示。
(a) 初始化 (b) 得分过程图4 得分矩阵L描述[11]
然后按照式(1)来计算Li,j。
式中:Li,j表示lcsi,j的长度,即|lcsi,j|=Li,j,Li,0=L0,j=0,0≤i≤m,0≤j≤n,|lcs|=Lm,n就是两个中文序列最长公共子序列的长度。通过对Lm,n进行前向回溯,当回溯到L0,0时候就可以求出lcs。由于中文序列主要是菜名、食物名或食材名,所以不存在过于长的序列,可以使用该构造矩阵的方式进行求解,算法复杂度为o(mn)。图4(b)例子中使用式(1)的计算函数构造出一个得分矩阵,通过自底向上回溯的方法求出两个串的最长公共子串,图4(b)中的箭头表示LCS对应的关键路径,当字符匹配的时候,矩阵中对应的分数会增加。
2.3 数据预处理
爬取的菜谱数据来自美食杰菜谱网站,一共有29 243条菜谱数据,主要字段包括菜谱名、主料、类别、辅料、粉丝数、点赞数、烹饪方法、烹饪时间、烹饪难度、菜谱图片、制作过程、准备时间、特征标签和味道等。预处理过程如下:
1) 菜谱名查重:有4 924个有重复名的菜谱,只是配料和制作过程稍有不同。
2) 重名处理方法:menu=argmax(fans(menu)),其中fans是获取菜谱menu粉丝数的函数,即保留粉丝数最大的菜谱,其他重名菜谱去除。
3) 字符串类型数字化:将字符串类型的烹饪时间与准备时间映射为整数类型,如式(2)所示。
4) 缺失数据处理:有2 005条缺失烹饪时间数据,由于烹饪时间此处是分段的离散属性,按照众数的方法对缺失值进行填充,cooktimemiss=mode(cooktime)。
爬取的外卖数据来自饿了么网站,一共有1 926 096条外卖数据,主要字段包括小区号、店铺号、外卖商品名、价格、点赞、打分、月销量等。预处理过程如下:
1) 缺失数据处理:有5 361条数据存在缺失字段,由于外卖数据比较庞大,采用删除处理的方法,只是保留字段完全的数据。
2) 保留与菜谱关联度高的外卖数据:去除缺失数据后依然有近两百万条数据,不仅包括各种食品,还包括各种各样的日常消费品,比如矿泉水和饮料等。由于本文只是关注基于菜谱推荐的食材商品选品,所以需要去除在外卖品与食品无关的其他商品,在外卖数据的属性中没有对商品类型进行区分的字段,无法直接根据字段进行过滤去除。这里采用一种从菜谱开始的反向匹配策略:
(1) 设置LCS匹配门限threshold=0.75。
(2) 由于菜谱是必需的,从菜谱数据进行查询,使用LCS匹配法计算每个菜谱名与所有外卖名的相似度simi(menu,takeout),如果大于等于threshold则保留。
处理后与已有菜谱紧密相关的外卖品有89 872条。
2.4 社区差异性分析
2) 购买力归一化:为了简化表达,这里把社区的下标去除,sum=(sum-min)/(max-min),此处max和min分别表示所有sum中的最大与最小值。
3) 去除销售量过高的共性外卖:比如像炒土豆丝,炒白菜等由于价格低廉,又适合大众口味,所以在每一个社区的销量都会很高,需要去除。公式∩top20(
4) 点赞数、打分和月销量三个属性归一化:设thumb和score表示点赞与打分,针对每一个社区,将三个属性值标准化到0至1区间,thumb=(thumb-min)/(max-min),score=(score-min)/(max-min),sales=(sales-min)/(max-min)。
5) 设置整体外卖受欢迎程度:popular=0.4×thumb+0.3×score+0.3×sales。
6) 使用LCS匹配查找菜谱匹配的外卖食品:设置LCS匹配相似度门限threshold=0.75,超过门限值则匹配成功。find_takeout={simi(menu,takeout)≥0.75},find_takeout表示匹配成功的外卖食品,由于一个菜谱可能对应多个外卖食品,所以结果是一个集合。
7) 计算单个菜谱受欢迎程度:menu_popular=mean(popular(find_takout)),使用多个匹配成功的外卖食品欢迎度的均值作为菜谱的欢迎度,这样就可以计算出在某个时间段内每个社区整体上对于不同菜谱的喜好程度。
8) 选品与推荐:针对每个社区选择排名靠前的菜谱,菜谱的具体数量可以根据企业的业务能力进行自由调控,分析菜谱的具体食材,在对社区推荐喜爱菜谱的同时对菜谱所包括的食材商品同时进行推荐,通过差异化满足不同社区的需求。
2.5 竞品分析
本文分析的主要竞品渠道来自其他团购平台、电商和市场价平台,具体如表1所示。
表1 竞品渠道
本文在竞品分析部分主要做的工作是找到与社区畅销的菜谱主料所匹配的竞品单品。在获取的竞品数据中,会对所有竞品商品中的单品与小区畅销的菜谱主料进行匹配,在使用最长公共子序列求串的相似度中发现,由于在竞品单品中会出现名字较长的商品名,而与之对应的主料名较短,会导致相似度偏低,事实上该主料名是商品名中的核心词汇,所以此处在匹配过程中增加单品名是否包含主料名的判断,如果包含同样认为是高度匹配。
通过该方法,可以快速发现社区拟推荐的菜谱主料商品是否存在于当前阶段的竞品商品中,如果存在,则可以进一步对竞品的该类商品数据进行统计分析,比如包括销量分析、价格分析、渠道分析、区域分析等,为本团购平台的选品提供决策指导,统计分析部分不是本文涉及内容。
3 实验与讨论
系统使用阿里云服务器ECS,8 vCPU,处理器型号为Intel Xeon(Cascade Lake) Platinum 8269CY,32 GB内存,操作系统为64位CentOS 7.7版本,数据库采用MySQL 6.2版本,数据分析使用Python3.6.5版本。
菜谱与外卖食品部分匹配结果如表2所示,对应关系基本上是一致的。
表2 菜谱与外卖对应示例
菜谱主料名与竞品单品部分匹配结果如表3所示,对应关系基本上也是一致的。
表3 菜谱主料与竞品单品对应示例
宁波市31个不同社区根据饿了么外卖数据分析出的购买力结果对比如表4所示,购买力使用归一化后数值。
表4 社区购买力对比
选择部分不同社区喜好菜谱所对应主料商品如表5所示。
表5 社区商品推荐
本项目所服务的团购平台在试用系统后一个月内社区销售增长率情况如表6所示,这里选择5个增长率较高的社区进行显示,对于31个不同社区的平均销售额增长率为85.71%,平均有效订单数增长率为70.45%,平均总销售件数增长率为39.69%。可以看出在依据外卖数据分析基础上进行选品推荐,可以有效地提高销售额和订单数。
表6 社区销售增长率对比(%)
4 结 语
社区团购是新零售时代下的电商产物,全国性与地方性的团购平台依然在不断地竞争和发展,正确的选品能够帮助社区团购平台提升客户留存,体现社区团购的优势。由于住户数据的安全性与保密性等因素,对社区进行画像和获取丰富的数据特征并非一件易事,尤其是对处于冷启动阶段的小型团购平台企业。本文希望从可以获取的外部开放平台数据中来挖掘社区特征,利用社区的消费特征来引导差异化的选品,提升企业的经济效益。当然本文方法不足以支撑一个完整的选品系统,可以作为选品系统的数据补充与分析参考。