首页 / 专利库 / 赌博 / 交易记录 / 一种基于大数据分析的O2O优惠券分发方法及系统

一种基于大数据分析的O2O优惠券分发方法及系统

阅读:105发布:2023-01-10

专利汇可以提供一种基于大数据分析的O2O优惠券分发方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 属于智能分发技术领域,涉及一种基于 大数据 分析的O2O优惠券分发方法及系统,先对获取的一定时间段内的数据进行分割,分别建立对应时间段的验证集数据;再根据已经 声明 或定义的特征,对数据进行特征的抽象和提取;然后进行特征合并,去除完全相同的数据,对数据进行规范化处理;再给除了测试集对应的特征集之外的其他特征集加上标签,将提取的特征集连接形成一个总的特征集合,构建符合XGBoost模型要求的特征矩阵;然后使用XGBoost模型进行预测,最后预测结果设定临界值,根据设定的临界值进行分发提示,实现优惠券的分发;其数据涵盖范围更广,降低了商户的营销成本,优化了用户的消费体验,使得交易最优化。,下面是一种基于大数据分析的O2O优惠券分发方法及系统专利的具体信息内容。

1.一种基于大数据分析的O2O优惠券分发系统,其特征在于包括数据收集模服务器后台管理模块和前端用户使用模块,其中数据收集模块用于收集并管理线上用户商家和优惠券数据、线下用户商家和优惠券数据以及待预测的数据三种数据文件,数据收集模块和服务器后台管理模块通过网络进行连接,前端用户使用模块与服务器后台管理模块的数据库连接,服务器后台管理模块保存用户上传的数据文件,并将数据提交到数据处理模块进行数据分析后返至数据库,将数据库数据进行可视化呈现;前端用户使用模块显示数据库数据的各项属性并提供数据分析的结果,对优惠券使用概率进行分类,给出分发建议,提供一键分发按钮,通过各大购物平台和商家提供的接口实现优惠券的分发。
2.根据权利要求1所述基于大数据分析的O2O优惠券分发系统,其特征在于所述线下用户商家和优惠券数据包括用户名称、商户名称、优惠券名称、优惠券优惠率、用户经常活动地点距线下店的距离、领取优惠券日期、消费日期,线上用户商家和优惠券数据包括用户名称、商户名称、线上购买行为、优惠券名称、优惠券优惠率、领券日期、消费日期,待预测的数据包括用户名称、商户名称、优惠券名称、优惠券优惠率、用户经常活动地点距线下门店的距离、领取优惠券日期。
3.根据权利要求2所述基于大数据分析的O2O优惠券分发系统,其特征在于所述服务器后台管理模块中使用了大数据分析的机器学习算法,对于上传的线下用户商家和优惠券数据以及线上用户商家和优惠券数据进行特征的抽象和提取,并将两大数据使用线性累和模型进行融合计算,即将线上和线下的消费行为进行分析和融合,从而适应O2O环境下的消费行为分析,其中大数据分析的机器学习算法为陈天奇博士在KDD会议上提出的报告名称为XGBoost:A Scalable Tree Boosting System的改进算法,KDD’16,August 13-17,2016,San Francisco,CA,USA;线性累和模型是将相同的数据进行加减或比较替换。
4.根据权利要求3所述基于大数据分析的O2O优惠券分发系统,其特征在于所述前端用户使用模块中的分发建议是根据大数据分析的机器学习算法预测的使用概率并由开发者设定的临界值确定的,能设置不同文字或者不同颜色给用户提示和辅助参考,下发按钮接入购物平台接口,实现优惠券的直接分发。
5.根据权利要求4所述基于大数据分析的O2O优惠券分发系统,其特征在于所述平台接口为电子商务交易平台提供的平台优惠券分发接口,或个人商户购物网站提供的优惠券分发接口。
6.一种采用如权利要求5所述系统实现优惠券分发的方法,其特征在于具体过程包括以下步骤:
步骤一:对于获取的一定时间段内的线上用户商家和优惠券数据、线下用户商家和优惠券数据利用滑窗算法进行数据集的分割,得到分割的时间段;
步骤二:对于分隔的多个时间段,分别建立对应时间段的验证集数据,并把验证集数据读取进XGBoost算法程序;
步骤三:根据已经声明或定义的特征,进行优惠券相关特征、商户相关特征、用户相关特征、用户——商户交互特征的抽象和提取;
步骤四:将分别提取的特征合并为一个数据,然后将一个数据帧中的各类特征合并,然后去除完全相同的数据并进行数据的规范化处理,将空值设置为程序可读的空值表示;
步骤五:给除了测试集对应的特征集之外的其他特征集加上标签,其中标签的含义是该券是否在规定时间内被核销;
步骤六:将步骤五中提取出来的特征集连接,形成一个总的特征集合,构建符合XGBoost模型要求的特征矩阵,然后使用XGBoost模型进行预测;其中特征矩阵形式符合XGBoost的规范传入形式,内容为训练集合提取的特征集;
步骤七:对于步骤六的预测结果设定临界值,根据设定的临界值进行分发提示,实现优惠券的分发。
7.根据权利要求6所述优惠券分发的方法,其特征在于步骤三所述特征提取包括文件的读取和数据集的划分、优惠券相关特征的提取、商户相关特征的提取、用户相关特征的提取、用户——商户相关特征的提取以及生成训练集和测试集,具体为:
(一)文件的读取和数据集的划分:先从用户线下消费和优惠券领取行为文件、用户线上点击/消费和优惠券领取行为文件以及用户O2O线下优惠券使用预测样本文件中读取数据,三个文件分别记为原始文件一、原始文件二以及原始文件三;原始文件一、二中的记录从直观上分为三类,包括用户领取优惠券的记录、用户不用券消费的记录、用户使用优惠券消费的记录,每条记录有优惠券领取日期、消费日期以及相关的其他信息,用户不用券消费的记录中优惠券领取日期一项为空,用户领取优惠券的记录中消费日期一项为空,而用户用券消费的记录中两者都不为空;原始文件三只有用户领取优惠券的记录,为要求预测的数据;
将从三个原始文件中读取出来的数据集合分别命名为off_train、on_train和off_test,其中off_train为线下数据集合,on_train为线上数据集合,off_test为需要预测的数据集合,然后将off_train和off_test中的数据按照时间划分为两类集合,包括dataset和feature,其中dataset为要求预测的记录和调参训练时用的记录,feature为用于提取特征的集合,这两类都有k个集合,k为整数;
dataset类的集合中有一个集合直接等于off_test中的全部数据,其他的dataset类集合是off_train中的优惠券领取日期不为空的记录,不同的dataset集合是优惠券领取日期在不同日期区间内的记录,由于程序只检查领券日期是否在要求的日期区间内,并没有过滤消费日期和领券日期两项都不空的记录,因此dataset中包括用户领券记录和用户用券消费记录;
feature是off_train中用户的消费日期或优惠券领取日期在不同日期区间内的数据;
在为feature挑取数据时先检查消费日期是否在某个feature要求的日期区间内,如果消费日期为空,就检查优惠券领取日期是否在要求的日期区间,feature类的集合中均含有用券消费记录、不用券消费记录、领券记录三类数据;
(二)其他类特征的提取:这部分特征从dataset中提取,对于不同的dataset分别提取,提取完后得到k个DataFrame,其他类特征包括:
(1)用户在该dataset的日期区间内收到券的总数
(2)用户在该日期区间内收到的某种优惠券的总数
(3)用户在某一天内收到的券的数量
(4)用户在某一天内收到某种优惠券的数量
(5)这条记录是不是这个时间区间内收到相同优惠券的第一张、
(6)这条记录是不是这个时间区间内收到相同优惠券的最后一张、
(7)收到上一张相同的券距此条记录的间隔
(8)收到下一张相同的券距此条记录的间隔
前四个特征都是数量类的特征,提取的思路相同,先把要用到的若干列数据提取出来,用另外的DataFrame存放,再在每条记录后都加上一项,所有记录的这一项都是1,并将这列命名为该特征的名字,然后根据某一列用Python编程语言中pandas函数库中的groupby()函数分组;再统计每组中“1”的个数,即得到关于数量的特征;提取特征(5)(6)时,先提取用户ID、优惠券ID和领券日期三项,再根据用户ID和优惠券ID分组,即用户ID和优惠券ID都相同的记录分为一组,并求出每组中的最大领券日期和最小领券日期,然后把每条记录的领取日期和最大或最小日期比较,即得出这条记录是不是该日期区间内同种优惠券的的第一张或最后一张,即特征(5)、(6);提取特征(7)、(8)时使用提取特征(5)、(6)时得到的分组后的领取日期,然后将每条记录的领取日期和除了自己以外的其他日期做日期之间的相减,得到若干个天数差,取最小的差,得到的上一张或下一张领取相同的券的天数间隔;以上每项特征分别提取,提取完所有其他特征后,将所有其他特征合并为一个DataFrame;
(三)优惠券相关特征的提取:优惠券相关特征是在dataset中提取的,优惠券相关特征包括:
(1)领取日期是在一周内的第几天
(2)领取日期是在一月内的第几天
(3)该券消费日期是在该时间区间内的第几天
(4)该券是否是满减型优惠券
(5)该券是满多少才给优惠
(6)该券消费满了之后优惠多少
(7)该券的折扣率
(8)和该券有相同ID的券在该日期区间内共有多少张
前三个特征用Python中和日期相关的函数提取,原始数据中有一列用来表示优惠券的满减情况或者折扣率,如果一条记录中此项是x:y的形式就表示满x减y,如果只有一个数,则表示这个券是直接折扣券,这个数就是折扣率,根据“:”对这项进行切片操作,即用“:”分隔的数据分别存储,然后判断得到的数的个数就可分出该券是否是满减型优惠券,得到1个数就是直接折扣型的,并且这个数就是该券的折扣率;得到两个数就是满减型的优惠券,并且第一个数是特征(5),第二个数是特征(6),并可以由此得出该券的折扣率,如此可以得到特征(4)-(7);特征(8)的提取和(二)中其他类特征(1)-(4)的提取方法相同;提取优惠券相关特征时,直接在dataset中操作,省去了合并的步骤;
(四)商户相关特征的提取:商户相关特征是从feature中提取的,商户相关特征包括:
(1)该时间区间内用户到该商户消费的次数
(2)该时间区间内用户到该商户用券消费次数
(3)商户在该时间区间内被用户领取的优惠券的总数
(4)所有用户中,经常活动的地点离商户的门店距离最近的距离
(5)所有用户中,经常活动的地点离商户的门店距离最远的距离
(6)所有用户经常活动的地点离商户的门店的距离的平均值
(7)所有用户经常活动的地点离商户的门店的距离的中位数
(8)被用户领取并核销的优惠券占被用户领取的优惠券总数的比例
(9)该商家所有消费中,用户用券消费的次数占总消费次数的比例
前三个特征使用分组并统计个数的方法;特征(4)-(7)提取时,先提取出所有的用券消费的记录中商户ID和消费时的距离两项,然后根据商户ID分组,再应用Python编程语言中Numpy函数库中的min、max、mean和median函数得到不同的特征;特征(8)由特征(2)除以特征(3)得到,特征(9)由特征(2)除以特征(1)得到,最后需要合并特征,将分别提取到的特征合并到一个DataFrame中,命名为merchant_feature(商户特征),其中每个商户的特征占一行,即商户ID这一列中每个商户ID都是唯一的;
(五)用户相关特征的提取:用户相关特征从feature提取,用户相关特征包括:
(1)用户在在该时间区间内消费过的商家的数量
(2)用户用券消费记录中,距到过最近的商家的距离
(3)用户用券消费记录中,距到过最远的商家的距离
(4)用户用券消费记录中,到过所有商家的距离的平均值
(5)用户用券消费记录中,到过所有商家的距离的中位数
(6)用户用券消费的次数
(7)用户领取券的数量
(8)用户消费的总次数
(9)用户用券消费时,领取日期与消费日期的平均间隔
(10)用户用券消费时,领取日期与消费日期的最小间隔
(11)用户用券消费时,领取日期与消费日期的最大间隔
(12)用户用券消费的次数占用户总消费次数的比例
(13)用户领取后核销的券的数量占用户领取过的券的总数的比例
提取特征(1)时,先把feature中的用户ID和商户ID这两列提取出来,将两项都相同的记录只保留一个,再将用户ID相同的记录放在一组进行分组,然后统计商户的个数得到该特征;提取特征(2)-(5)时,先把用户用券消费记录中的用户ID和用户消费时距商家的距离两项提取出来,将用户ID相同的记录放在一组中,再分别使用Python编程语言中Numpy函数库中的min、max、mean和median函数,得到这四个特征;提取特征(6)-(8)时先分组后求和,这三个特征筛选记录的条件不同;提取特征(6)时,筛选出用户用券消费的记录,即feature中消费日期和优惠券ID两项都不为空的记录;提取特征(7)时,是用户所有领券的记录,即优惠券ID不为空的记录;提取特征(8)时,是用户消费的次数,即消费日期意一项不为空的记录;提取特征(9-(11)时,先提取出用户用券消费的记录中用户ID、领券日期和消费日期三项,用日期的减法得出领取日期和消费日期的间隔,再将用户ID相同的分为一组,然后应用Python编程语言中Numpy函数库中min、max和mean函数,得出这三个特征;特征(12)采用特征(6)除以特征(8)得到,特征(13)用特征(6)除以特征(7)得到;最后将所有特征合并到一个DataFrame中,合并之后每两行的用户ID均不相同,后面是关于该用户的所有特征;
(六)用户——商户相关特征:用户——商户相关特征从feature中提取,这类特征包括:
(1)某用户到某商家消费的次数
(2)某用户领取某商家的券的数量
(3)某用户在某商家用券消费的次数
(4)某用户与某商家领券和消费的总数
(5)某用户在某商家消费未用券的次数
(6)某用户在某商家用券消费的次数占领取该商家的券的次数的比例
(7)某用户在某商家用券消费的次数占用户在该商家总消费次数的比例
(8)某用户在某商家消费的总次数占用户与商家领券和消费总次数的比例
(9)某用户在某商家不用券消费的次数占在该商家总消费次数的比例
提取特征(1)-(5)使用先分组再求和的方法,但是提取每个特征时筛选数据的方法稍有不同,特征(1)是用户所有消费记录中的用户ID和商户ID这两项,即消费日期这一项不为空的记录,特征(2)是用户领券的记录,即优惠券ID一项不为空,特征(3)是用户用券消费的记录,即优惠券ID和消费日期均不为空的记录,特征(4)是全部的记录,不进行筛选,特征(5)是用户不用券消费的记录,即消费日期不为空而优惠券ID为空的记录,按照不同的条件筛选完数据后,这五个特征都是先扩充一列全为1的数,将用户ID和商户ID两项都相同的记录分为一组进行求和;特征(6)-(9)均由(1)-(5)计算得到,特征(6)为特征(3)除以特征(2),特征(7)为特征(3)除以特征(1),特征(8)为特征(1)除以特征(4),特征(9)为特征(5)除以特征(1),最后将分别提取的特征合并为一个DataFrame,命名为user_merchant,每两列的用户ID和商户ID不全相同;
(七)生成训练集和测试集:将一个数据集中的五类特征合并,然后去除完全相同的数据,有一些特征在每一类特征合并时或者这部分的合并中可能会变为NaN类型,即Python语言中的空类型,将这些NaN替换为0,以下为含有NaN类型的三个特征以及他们含有NaN类型的原因分别是:
某用户在某商户消费总次数,这是由于有的用户在某商户未进行过用券或不用券的消费,但是领取过该商户的券;
某用户领取某商户的券在在该商户消费的总次数,这是由于有的用户只在与feature对应的dataset的时间区间内领过某商户的券,而在feature中没领过该商户的券也没在该商户进行消费;
某用户在某商户领券的次数,原因是有的用户在某商户消费时时从来不用券,也从来没领过该商户的券;
合并后增加了六个特征项来描述领取优惠券的时间是不是周末,或者是不是周一到周五中的某天;
最后给除了off_test对应的特征集之外的其他特征集加上label生成训练集合测试集,label指该券是否在15天之内被核销,即领券未消费的记录,不用券消费的记录和用券消费中领取日期与核销日期间隔大于15天的记录label为0,只有用券消费记录中消费日期和核销日期间隔小于15天的label才为1。
8.根据权利要求6所述优惠券分发的方法,其特征在于步骤四中的空值处理,部分用NULL代替,部分用0表示数值无效。
9.根据权利要求6所述优惠券分发的方法,其特征在于步骤七中的临界值分别设置为:
[0,0.5)为使用概率较低,[0.5,0.6)为使用概率不高,[0.6,0.7)为使用概率中等,[0.7,
0.8)为使用概率较高,[0.8,1]为使用概率极高。

说明书全文

一种基于大数据分析的O2O优惠券分发方法及系统

技术领域:

[0001] 本发明属于智能分发技术领域,涉及一种优惠券的分发方法及系统,特别涉及一种基于大数据分析的O2O优惠券分发方法及系统。背景技术:
[0002] O2O(Online To Offline)是指商家兼备网上商城及线下实体店,将线下的商务机会与在线网络营销相结合,实现线上线下一体化的会员营销系统。以优惠券盘活老用户、吸引新客户是O2O系统及互联网经济的一种重要营销方式。将“对的券”分发给“对的人”,即实现基于用户个性化需求的精准分发,是提高优惠券核销率的重要技术。开发这样一个优惠券个性化分发辅助系统,可以让具有一定偏好的消费者得到真正的实惠,同时赋予商家更强的营销能。为了实现优惠券的精准分发,发明人分别对国内外优惠券的分发情况、核销情况、已有优惠券的分发辅助工具进行了充分的调研。
[0003] 根据Statista的统计数据,2011年至2016年在美国地区每年的优惠券的投放量均超过3000亿,但是2011至2016的优惠券核销率分别是1.12%、0.92%、0.85%、0.84%、0.72%、0.72%。国内部分采用范本调查,以有调旗舰店(天猫男店铺)为例,2018年5月份被领取优惠券2636张,其中被消费499张,核销率18.93%,在2018年5月31日当日被领取优惠券58张,其中被使用5张,核销率8.62%。大量调查数据显示尽管近年来国内电商蓬勃发展,交易量节节攀高,但是优惠券的分发策略并没有多大进步,平均核销率不足10%。商家优惠券的投放基本是一厢情愿,要么在店铺页面广发,要么通过短信狂轰滥炸,一方面用户收到很多不需要的投放,另一方面真正需要的优惠券又不能及时获取。
[0004] 目前国内典型的电商平台淘宝、京东商城、美团等,为商家提供了优惠券辅助分发程序,但这些优惠券的分发助手或称优惠券的营销平台的主要功能是给商家提供消费统计数据,供商家查看统计数据、自行分析处理这些数据后自行设计优惠券的内容和发放方法。也就是说,目前的分发工具主要帮商家实现分发操作,并没有加入精准分发的辅助决策功能,即只管“发”,不管“发得是否合理”。目前的工具只采集简单的消费数据特征,然后将庞大的数据量交给商家人力处理,显然,无法依据如此庞大的数据量给出最优的解决方案。
[0005] CN201610373693.8涉及一种基于线下用户消费行为的可配置优惠券分发方法,包括步骤:S1:在服务端制定优惠券,并配置符合该优惠券发券条件的商品流销售信息;S2:店POS收机在完成交易时,向服务端发送商品销售流水信息;S3:服务端在判断接收到的商品销售流水信息符合优惠券的发券条件时,向该商品销售流水信息对应的用户发送优惠券。与现有技术相比,本发明通过线下消费记录信息来精准地分发优惠券,可配置的发券策略,可以使优惠券的分发更有意义,同时减少不必要的优惠分发,便于提高利润,同时门店POS收银机在完成交易时,才向服务端发送商品流水销售信息,所有的分发都建立在真实消费的基础上,营销更加精准;CN201810153983.0涉及基于链的优惠券信息系统及处理方法,应用接口,与外部应用交互的渠道;优惠券分发模块,优惠券发行方或者分发方通过优惠券分发模块将优惠券的信息做数字签名后,保存发布于区块链网络中;优惠券消费记录模块,根据消费者所处的位置信息以及推荐算法,展示相关的优惠券给消费者,当消费者在商家实地展示使用优惠券时,信息被记录并保存到区块链网络中;优惠券佣金结算模块,优惠券的分发参与方和商家,通过优惠券佣金结算模块并结合区块链网络上的消费数据;区块链网络模块,使用可信授权接入的联盟链或公有链系统,用于保存优惠券的信息、消费记录;数据库模块,信息保存于数据库中,基于区块链技术实现优惠券信息的处理。
[0006] 根据统计数据,越晚年代出生的消费者,其消费观念越超前,对优惠券的依赖程度也越高。在蓬勃发展的O2O行业中,随着大数据处理技术的发展,目前可获得的线上用户消费行为数据越来越多,人们对于线上宣传的线下品牌门店的认可度也越来越高。但是目前的优惠券发放系统和辅助工具(这里指市场上被大量应用的,且在应用市场可以搜索应用的),只能提供用户的消费数据、优惠券的面额、发放数量等统计数据,仅仅起到了统计的作用,不具有智能分析、大数据处理、机器学习和预测的功能。因此,设计一种基于大数据分析的O2O优惠券分发方法及系统,将大量用户的线上历史行为数据和线下的消费习惯数据相结合,通过机器学习算法可以对用户将来的消费概率给予精准的预测,并将预测结果用于指导优惠券的精准发放。发明内容:
[0007] 本发明的目的在于克服现有技术存在的缺点,解决在线上到线下消费领域中,优惠券随机分发造成的目标不精准、商户营销成本大、对用户造成干扰的问题,利用线上线下消费数据和优惠券本身的属性数据,设计提供一种基于大数据分析的O2O优惠券分发方法及系统。
[0008] 为了实现上述目的,本发明所述的基于大数据分析的O2O优惠券分发系统包括数据收集模块、服务器后台管理模块和前端用户使用模块,其中数据收集模块用于收集并管理线上用户商家和优惠券数据、线下用户商家和优惠券数据以及待预测的数据三种数据文件,数据收集模块和服务器后台管理模块通过网络进行连接,前端用户使用模块与服务器后台管理模块的数据库连接,服务器后台管理模块保存用户上传的数据文件,并将数据提交到数据处理模块进行数据分析后返至数据库,将数据库数据进行可视化呈现;前端用户使用模块显示数据库数据的各项属性并提供数据分析的结果,对优惠券使用概率进行分类,给出分发建议,提供一键分发按钮,通过各大购物平台和商家提供的接口实现优惠券的分发。
[0009] 本发明所述线下用户商家和优惠券数据包括用户名称、商户名称、优惠券名称、优惠券优惠率、用户经常活动地点距线下门店的距离、领取优惠券日期、消费日期,线上用户商家和优惠券数据包括用户名称、商户名称、线上购买行为、优惠券名称、优惠券优惠率、领券日期、消费日期,待预测的数据包括用户名称、商户名称、优惠券名称、优惠券优惠率、用户经常活动地点距线下门店的距离、领取优惠券日期。
[0010] 本发明所述服务器后台管理模块中使用了大数据分析的机器学习算法,对于上传的线下用户商家和优惠券数据以及线上用户商家和优惠券数据进行特征的抽象和提取,并将两大数据使用线性累和模型进行融合计算,即将线上和线下的消费行为进行分析和融合,从而适应O2O环境下的消费行为分析,其中大数据分析的机器学习算法为陈天奇博士在KDD会议上提出的报告名称为XGBoost:A Scalable Tree Boosting System的改进算法,KDD’16,August 13-17,2016,San Francisco,CA,USA;线性累和模型是将相同的数据进行加减或比较替换(若线上线下都有同一个用户的同一项数据则采用线下数据,若线上线下中有一项没有这类数据,那么合并时添加上这一类数据)。
[0011] 本发明所述前端用户使用模块中的分发建议是根据大数据分析的机器学习算法预测的使用概率并由开发者设定的临界值确定的,能设置不同文字或者不同颜色给用户提示和辅助参考,下发按钮接入购物平台接口,实现优惠券的直接分发。
[0012] 本发明所述所述购物平台接口可以是电子商务交易平台提供的平台优惠券分发接口,也可以是个人商户购物网站提供的优惠券分发接口。
[0013] 本发明实现优惠券分发的过程包括以下步骤:
[0014] 步骤一:对于获取的一定时间段内的线上用户商家和优惠券数据、线下用户商家和优惠券数据利用滑窗算法进行数据集的分割,得到分割的时间段;
[0015] 步骤二:对于分隔的多个时间段,分别建立对应时间段的验证集数据,并把验证集数据读取进Xgboost算法程序;
[0016] 步骤三:根据已经声明或定义的特征,进行优惠券相关特征、商户相关特征、用户相关特征、用户——商户交互特征的抽象和提取;
[0017] 步骤四:将分别提取的特征合并为一个DataFrame(数据),然后将一个数据帧中的各类特征合并,然后去除完全相同的数据并进行数据的规范化处理,将空值设置为程序可读的空值表示;
[0018] 步骤五:给除了测试集对应的特征集之外的其他特征集加上标签,其中标签的含义是该券是否在规定时间内被核销;
[0019] 步骤六:将步骤五中提取出来的特征集连接,形成一个总的特征集合,构建符合XGBoost模型要求的特征矩阵,然后使用XGBoost模型进行预测;其中特征矩阵形式符合XGBoost的规范传入形式,内容为训练集合提取的特征集;
[0020] 步骤七:对于步骤六的预测结果设定临界值,根据设定的临界值进行分发提示,实现优惠券的分发。
[0021] 本发明步骤三所述特征提取包括文件的读取和数据集的划分、优惠券相关特征的提取、商户相关特征的提取、用户相关特征的提取、用户——商户相关特征的提取以及生成训练集和测试集,具体为:
[0022] 1.文件的读取和数据集的划分:先从用户线下消费和优惠券领取行为文件(记为原始文件一)、用户线上点击/消费和优惠券领取行为文件(记为原始文件二)和用户O2O线下优惠券使用预测样本文件(记为原始文件三)中读取数据,原始文件一、二中的记录从直观上分为三类,包括用户领取优惠券的记录、用户不用券消费的记录、用户使用优惠券消费的记录,每条记录有优惠券领取日期、消费日期以及相关的其他信息,用户不用券消费的记录中优惠券领取日期一项为空,用户领取优惠券的记录中消费日期一项为空,而用户用券消费的记录中两者都不为空;原始文件三只有用户领取优惠券的记录,为要求预测的数据;
[0023] 将从三个原始文件中读取出来的数据集合分别命名为off_train、on_train和off_test,其中off_train为线下数据集合,on_train为线上数据集合,off_test为需要预测的数据集合,然后将off_train和off_test中的数据按照时间划分为两类集合,包括dataset和feature,其中dataset为要求预测的记录和调参训练时用的记录,feature为用于提取特征的集合,这两类都有k个集合,k为整数;
[0024] dataset类的集合中有一个集合(不妨称为dataset1)直接等于off_test中的全部数据,其他的dataset类集合是off_train中的优惠券领取日期不为空的记录,不同的dataset集合是优惠券领取日期在不同日期区间内的记录,由于程序只检查领券日期是否在要求的日期区间内,并没有过滤消费日期和领券日期两项都不空的记录,因此dataset中包括用户领券记录和用户用券消费记录;
[0025] feature是off_train中用户的消费日期或优惠券领取日期在不同日期区间内的数据;在为feature挑取数据时先检查消费日期是否在某个feature要求的日期区间内,如果消费日期为空,就检查优惠券领取日期是否在要求的日期区间,feature类的集合中均含有用券消费记录、不用券消费记录、领券记录三类数据;
[0026] 2.其他类特征(other_feature,此处的其他类特征指除下文中将会提到的3~7的特征之外的不便于归类的特征)的提取:这部分特征从dataset中提取,对于不同的dataset分别提取,提取完后得到k个DataFrame(数据帧),其他类特征包括:
[0027] (1)用户在该dataset的日期区间内收到券的总数
[0028] (2)用户在该日期区间内收到的某种优惠券的总数
[0029] (3)用户在某一天内收到的券的数量
[0030] (4)用户在某一天内收到某种优惠券的数量
[0031] (5)这条记录是不是这个时间区间内收到相同优惠券的第一张
[0032] (6)这条记录是不是这个时间区间内收到相同优惠券的最后一张
[0033] (7)收到上一张相同的券距此条记录的间隔
[0034] (8)收到下一张相同的券距此条记录的间隔
[0035] 前四个特征都是数量类的特征,提取的思路相同,先把要用到的若干列数据提取出来,用另外的DataFrame存放,再在每条记录后都加上一项,所有记录的这一项都是1,并将这列命名为该特征的名字,然后根据某一列用Python编程语言中pandas函数库中的groupby()函数分组;再统计每组中“1”的个数,即得到关于数量的特征;例如统计用户在dataset1(第一个日期区间)所在日期区间内收到的券的总数时,先把dataset1中的user_ID(用户名称)这列存放放在t中,然后扩充一列名为this_month_user_receive_all_coupon_count并且全为1的数据,然后根据user_ID分组,即user_ID相同的记录分为同一组(下文中提到的分组均为类似操作),然后应用sum函数对这一组总的所有“1”求和,就得到第一个特征;
[0036] 提取特征(5)(6)时,先提取用户ID、优惠券ID和领券日期三项,再根据用户ID和优惠券ID分组,即用户ID和优惠券ID都相同的记录分为一组,并求出每组中的最大领券日期和最小领券日期,然后把每条记录的领取日期和最大或最小日期比较,即得出这条记录是不是该日期区间内同种优惠券的的第一张或最后一张,即特征(5)、(6);提取特征(7)、(8)时使用提取特征(5)、(6)时得到的分组后的领取日期,然后将每条记录的领取日期和除了自己以外的其他日期做日期之间的相减,得到若干个天数差,取最小的差,得到的上一张或下一张领取相同的券的天数间隔;以上每项特征分别提取,提取完所有其他特征后,将所有其他特征合并为一个DataFrame;
[0037] 3.优惠券相关特征的提取:优惠券相关特征是在dataset中提取的,优惠券相关特征包括:
[0038] (1)领取日期是在一周内的第几天
[0039] (2)领取日期是在一月内的第几天
[0040] (3)该券消费日期是在该时间区间内的第几天
[0041] (4)该券是否是满减型优惠券(还有一类券是不论消费多少直接给折扣的券)[0042] (5)该券是满多少才给优惠(只针对满减型优惠券)
[0043] (6)该券消费满了之后优惠多少(只针对满减型优惠券)
[0044] (7)该券的折扣率
[0045] (8)和该券有相同ID的券在该日期区间内共有多少张
[0046] 前三个特征用Python中和日期相关的函数提取,原始数据中有一列用来表示优惠券的满减情况或者折扣率,如果一条记录中此项是x:y的形式就表示满x减y,如果只有一个数,则表示这个券是直接折扣券,这个数就是折扣率,根据“:”对这项进行切片操作,即用“:”分隔的数据分别存储,然后判断得到的数的个数就可分出该券是否是满减型优惠券,得到1个数就是直接折扣型的,并且这个数就是该券的折扣率;得到两个数就是满减型的优惠券,并且第一个数是特征(5),第二个数是特征(6),并可以由此得出该券的折扣率,如此可以得到特征(4)-(7);
[0047] 特征(8)的提取和2中其他类特征(1)-(4)的提取方法相同;
[0048] 提取优惠券相关特征时,直接在dataset中操作,省去了合并的步骤;
[0049] 4.商户相关特征的提取:商户相关特征是从feature中提取的,商户相关特征包括:
[0050] (1)该时间区间内用户到该商户消费(包括用券消费和不用券消费)的次数[0051] (2)该时间区间内用户到该商户用券消费次数
[0052] (3)商户在该时间区间内被用户领取的优惠券的总数
[0053] (4)所有用户中,经常活动的地点离商户的门店距离最近的距离
[0054] (5)所有用户中,经常活动的地点离商户的门店距离最远的距离
[0055] (6)所有用户经常活动的地点离商户的门店的距离的平均值
[0056] (7)所有用户经常活动的地点离商户的门店的距离的中位数
[0057] (8)被用户领取并核销的优惠券占被用户领取的优惠券总数的比例
[0058] (9)该商家所有消费中,用户用券消费的次数占总消费次数的比例
[0059] 前三个特征使用分组并统计个数的方法;特征(4)-(7)提取时,先提取出所有的用券消费的记录中商户ID和消费时的距离两项,然后根据商户ID分组,再应用Python编程语言中Numpy函数库中的min(求最小值)、max(求最大值)、mean(求平均值)和median(求中位数)函数得到不同的特征;特征(8)由特征(2)除以特征(3)得到,特征(9)由特征(2)除以特征(1)得到,最后需要合并特征,将分别提取到的特征合并到一个DataFrame中,命名为merchant_feature(商户特征),其中每个商户的特征占一行,即商户ID这一列中每个商户ID都是唯一的;
[0060] 5.用户相关特征的提取:用户相关特征从feature提取,用户相关特征包括:
[0061] (1)用户在在该时间区间内消费过的商家的数量
[0062] (2)用户用券消费记录中,距到过最近的商家的距离
[0063] (3)用户用券消费记录中,距到过最远的商家的距离
[0064] (4)用户用券消费记录中,到过所有商家的距离的平均值
[0065] (5)用户用券消费记录中,到过所有商家的距离的中位数
[0066] (6)用户用券消费的次数
[0067] (7)用户领取券的数量
[0068] (8)用户消费(包括用券消费和不用券消费)的总次数
[0069] (9)用户用券消费时,领取日期与消费日期的平均间隔
[0070] (10)用户用券消费时,领取日期与消费日期的最小间隔
[0071] (11)用户用券消费时,领取日期与消费日期的最大间隔
[0072] (12)用户用券消费的次数占用户总消费次数的比例
[0073] (13)用户领取后核销的券的数量占用户领取过的券的总数的比例
[0074] 提取特征(1)时,先把feature中的用户ID和商户ID这两列提取出来,将两项都相同的记录只保留一个,再将用户ID相同的记录放在一组进行分组,然后统计商户的个数得到该特征;提取特征(2)-(5)时,先把用户用券消费记录中的用户ID和用户消费时距商家的距离两项提取出来,将用户ID相同的记录放在一组中,再分别使用Python编程语言中Numpy函数库中的min、max、mean和median函数,得到这四个特征;提取特征(6)-(8)时先分组后求和,这三个特征筛选记录的条件不同;提取特征(6)时,筛选出用户用券消费的记录,即feature中消费日期和优惠券ID两项都不为空的记录;提取特征(7)时,是用户所有领券的记录,即优惠券ID不为空的记录;提取特征(8)时,是用户消费的次数,即消费日期意一项不为空的记录;提取特征(9-(11)时,先提取出用户用券消费的记录中用户ID、领券日期和消费日期三项,用日期的减法得出领取日期和消费日期的间隔,再将用户ID相同的分为一组,然后应用Python编程语言中Numpy函数库中min、max和mean函数,得出这三个特征;特征(12)采用特征(6)除以特征(8)得到,特征(13)用特征(6)除以特征(7)得到;最后将所有特征合并到一个DataFrame中,合并之后每两行的用户ID均不相同,后面是关于该用户的所有特征;
[0075] 6.用户——商户相关特征:用户——商户相关特征从feature中提取,这类特征包括:
[0076] (1)某用户到某商家消费的次数
[0077] (2)某用户领取某商家的券的数量
[0078] (3)某用户在某商家用券消费的次数
[0079] (4)某用户与某商家领券和消费的总数
[0080] (5)某用户在某商家消费未用券的次数
[0081] (6)某用户在某商家用券消费的次数占领取该商家的券的次数的比例[0082] (7)某用户在某商家用券消费的次数占用户在该商家总消费次数的比例[0083] (8)某用户在某商家消费的总次数占用户与商家领券和消费总次数的比例[0084] (9)某用户在某商家不用券消费的次数占在该商家总消费次数的比例[0085] 提取特征(1)-(5)使用先分组再求和的方法,但是提取每个特征时筛选数据的方法稍有不同,特征(1)是用户所有消费记录中的用户ID和商户ID这两项,即消费日期这一项不为空的记录,特征(2)是用户领券的记录,即优惠券ID一项不为空,特征(3)是用户用券消费的记录,即优惠券ID和消费日期均不为空的记录,特征(4)是全部的记录,不进行筛选,特征(5)是用户不用券消费的记录,即消费日期不为空而优惠券ID为空的记录,按照不同的条件筛选完数据后,这五个特征都是先扩充一列全为1的数,将用户ID和商户ID两项都相同的记录分为一组进行求和;特征(6)-(9)均由(1)-(5)计算得到,特征(6)为特征(3)除以特征(2),特征(7)为特征(3)除以特征(1),特征(8)为特征(1)除以特征(4),特征(9)为特征(5)除以特征(1),最后将分别提取的特征合并为一个DataFrame,命名为user_merchant(用户商户相关特征),每两列的用户ID和商户ID不全相同;
[0086] 7.生成训练集和测试集:将一个数据集中的五类特征合并,然后去除完全相同的数据,有一些特征在每一类特征合并时或者这部分的合并中可能会变为NaN类型(Python语言中的空类型),将这些NaN替换为0,以下为含有NaN类型的三个特征以及他们含有NaN类型的原因分别是:
[0087] 某用户在某商户消费总次数(见6中特征(1)),原因是有的用户在某商户未进行过用券或不用券的消费,但是领取过该商户的券;
[0088] 某用户领取某商户的券在在该商户消费的总次数(见6中特征(4)),原因是有的用户只在与feature对应的dataset的时间区间内领过某商户的券,而在feature中没领过该商户的券也没在该商户进行消费;
[0089] 某用户在某商户领券的次数(见6中特征(2)),原因是有的用户在某商户消费时时从来不用券,也从来没领过该商户的券;
[0090] 合并后增加了六个特征项来描述领取优惠券的时间是不是周末,或者是不是周一到周五中的某天;
[0091] 最后给除了off_test对应的特征集之外的其他特征集加上label生成训练集合测试集,label指该券是否在15天之内被核销,即领券未消费的记录,不用券消费的记录和用券消费中领取日期与核销日期间隔大于15天的记录label为0,只有用券消费记录中消费日期和核销日期间隔小于15天的label才为1。
[0092] 本发明步骤四中的空值处理,部分用NULL代替,部分用0表示数值无效。
[0093] 本发明步骤七中的临界值分别设置为:[0,0.5)为使用概率较低,[0.5,0.6)为使用概率不高,[0.6,0.7)为使用概率中等,[0.7,0.8)为使用概率较高,[0.8,1]为使用概率极高。
[0094] 本发明与现有技术相比,能处理大量数据,将线上消费数据和线下消费数据以及优惠券本身的数据相结合,将数据量再次扩大,数据涵盖范围更广,并利用大数据分析的机器学习算法对数据进行有效分析,提供的系统可以让用户更加直观简明的得到分发建议,将优惠券精准地分发给即将有消费行为的用户,降低了商户的营销成本,优化了用户的消费体验,使得交易最优化。附图说明:
[0095] 图1为本发明所述基于大数据分析的O2O优惠券分发方法工作流程框图
[0096] 图2为本发明所述基于大数据分析的O2O优惠券分发系统结构原理示意框图。具体实施方式:
[0097] 以下通过具体实施方式并且结合附图1对本发明提供的优惠券分发方法作具体说明。
[0098] 实施例1:
[0099] 本实施例以阿里巴巴平台提供的用户在2016年1月1日至2016年6月30日之间真实线上线下消费行为数据,预测用户在2016年7月领取优惠券后15天以内的使用情况并给出分发建议进行说明:
[0100] 步骤一:根据图1的方法步骤,首先划分训练集合1,训练区间从2016年1月1日至2016年4月13日,验证区间从2016年4月14日至2016年5月14日;训练集合2,训练区间从2016年2月1日至2016年5月14日,验证区间从2016年5月15日至2016年6月15日;预测区间从2016年3月15日至2016年6月30日,预测结果区间从2016年7月1日至2016年7月31日;
[0101] 步骤二:从线上用户商家和优惠券数据文件、线下用户商家和优惠券数据文件以及待预测的线下用户消费数据文件中读取数据;
[0102] 步骤三:对所读取的数据进行特征的提取得到特征集,共分四类:
[0103] 优惠券相关特征包括:
[0104] (1)领取日期是在一周内的第几天
[0105] (2)领取日期是在一月内的第几天
[0106] (3)该券消费日期是在该时间区间内的第几天
[0107] (4)该券是否是满减型优惠券(还有一类券是不论消费多少直接给折扣的券)[0108] (5)该券是满多少才给优惠
[0109] (6)该券消费满了之后优惠多少
[0110] (7)该券的折扣率
[0111] (8)这种券在该日期区间内共有多少张
[0112] 商户相关特征包括:
[0113] (1)该时间区间内用户到该商户消费(包括用券消费和不用券消费)的次数[0114] (2)该时间区间内用户到该商户用券消费次数
[0115] (3)商户在该时间区间内被用户领取的优惠券的总数
[0116] (4)所有用户中,经常活动的地点离商户的门店距离最近的距离
[0117] (5)所有用户中,经常活动的地点离商户的门店距离最远的距离
[0118] (6)所有用户经常活动的地点离商户的门店的距离的平均值
[0119] (7)所有用户经常活动的地点离商户的门店的距离的中位数
[0120] (8)被用户领取并核销的优惠券占被用户领取的优惠券总数的比例
[0121] (9)该商家所有消费中,用户用券消费的次数占总消费次数的比例
[0122] 用户相关特征包括:
[0123] (1)用户在在该时间区间内消费过的商家的数量
[0124] (2)用户用券消费记录中,距到过最近的商家的距离
[0125] (3)用户用券消费记录中,距到过最远的商家的距离
[0126] (4)用户用券消费记录中,到过所有商家的距离的平均值
[0127] (5)用户用券消费记录中,到过所有商家的距离的中位数
[0128] (6)用户用券消费的次数
[0129] (7)用户领取券的数量
[0130] (8)用户消费(包括用券消费和不用券消费)的总次数
[0131] (9)用户用券消费时,领取日期与消费日期的平均间隔
[0132] (10)用户用券消费时,领取日期与消费日期的最小间隔
[0133] (11)用户用券消费时,领取日期与消费日期的最大间隔
[0134] (12)用户用券消费的次数占用户总消费次数的比例
[0135] (13)用户领取后核销的券的数量占用户领取过的券的总数的比例用户——商户相关特征包括:
[0136] (1)某用户到某商家消费的次数
[0137] (2)某用户领取某商家的券的数量
[0138] (3)某用户在某商家用券消费的次数
[0139] (4)某用户与某商家领券和消费的总数
[0140] (5)某用户在某商家消费未用券的次数
[0141] (6)某用户在某商家用券消费的次数占领取该商家的券的次数的比例[0142] (7)某用户在某商家用券消费的次数占用户在该商家总消费次数的比例[0143] (8)某用户在某商家消费的总次数占用户与商家领券和消费总次数的比例[0144] (9)某用户在某商家不用券消费的次数占在该商家总消费次数的比例[0145] 步骤四:将分别提取的特征合并为一个数据帧,去除完全相同的数据,再将数据规范化处理,例如有一些特征在每一类特征合并时或者这部分的合并中可能会变为空类型,将这些空类型替换为0;
[0146] 步骤五:给除了预测区间对应生成的特征集之外的其他被生成的特征集加上标签,在此标签的含义是该券是否在15天之内被核销,即领券未消费的记录,不用券消费的记录和用券消费中领取日期与核销日期间隔大于15天的记录标签记为0,只有用券消费记录中消费日期和核销日期间隔小于15天的标签才记为1;
[0147] 步骤六:将所有的按时间段划分的训练集生成的特征集拼接成一个集合,转换为特征矩阵,传入机器学习的算法模型,解决模型,得出使用概率预测结果;
[0148] 步骤七:设定临界值对于使用概率的预测结果进行分类,[0,0.5)设置为:使用概率较低,[0.5,0.6)设置为:使用概率不高,[0.6,0.7)设置为:使用概率中等,[0.7,0.8)设置为:使用概率较高,[0.8,1]设置为:使用概率极高;至此,该方法对于指定用户使用指定优惠券的分发建议已经生成,该方法有效的利用了线上和线下消费数据,并结合了优惠券本身的属性数据,做到了精准地分发优惠券,降低了商家营销成本,优化了用户体验。
[0149] 实施例2:
[0150] 本实施例结合附图2对优惠券分发系统作具体说明,优惠券分发系统的数据共分为线上用户商家和优惠券数据、线下用户商家和优惠券数据以及待预测的数据,由数据收集模块收集,使用者通过上传操作进行数据文件的上传;通过网络服务将数据收集模块收集到的数据由本地上传到服务器后台管理模块,由服务器后台管理模块将三类数据的绝对路径传入算法模型,然后由服务后台管理模块中的算法部分读取数据并对数据进行处理,再将处理结果送到数据库中,数据库将数据统计后传送到前端用户使用模块;前端用户使用模块通过将预测结果分类给出分发建议,同时通过购物平台或者商户的购物网站提供的接口实现优惠券的一键分发,其中,数据收集模块和服务器后台管理模块通过网络进行连接,算法和数据库之间用返回值传输,数据库语言为SQL,前端用户使用模块为网页框架;预测结果分类标准:[0,0.5)设置为:使用概率较低,[0.5,0.6)设置为:使用概率不高,[0.6,0.7)设置为:使用概率中等,[0.7,0.8)设置为:使用概率较高,[0.8,1]设置为:使用概率极高。
[0151] 本实施例所述平台接口可以是电子商务交易平台提供的平台优惠券分发接口,也可以是个人商户购物网站提供的优惠券分发接口。
[0152] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈