基于机器学习的用户行为购买预测研究_第1页
基于机器学习的用户行为购买预测研究_第2页
基于机器学习的用户行为购买预测研究_第3页
基于机器学习的用户行为购买预测研究_第4页
基于机器学习的用户行为购买预测研究_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-PAGEI-摘要随着社会的不断发展以及移动设备的日益完善和普及,O2O消费逐渐成为了当今社会消费结构的主体。然而,在O2O消费模式中,优惠券成为了各个平台各个商家营销的主要手段,商家向顾客发放优惠券即为优惠券分发,顾客领取优惠券后用来购买商家的产品,从而使优惠券重新回到了商家手中,即为优惠券核销,所谓的优惠券核销率,则是顾客使用优惠券和商家分发优惠券的数量的比值。传统的“广撒网”式的分发优惠券便是核销率极低的一种模式,不仅仅造成了优惠券的浪费,还降低了品牌在顾客眼里的价值,并且给顾客造成了不必要的麻烦,同时带来了难估算的核销成本。因此,个性化投放是一项促进O2O消费模式发展的重要技术,通过分析交易数据、分析用户行为、提取用户特征、构建和训练算法模型、评估和验证训练后的算法模型、预测顾客的潜在偏好,通过多种算法的模型的预测对顾客的是否会核销优惠券,最后评估出准确率更好的算法模型,从而可以推荐顾客合适的商品,并以此个性化发放优惠券,这样可以使对该产品有需求的消费者享受到最多的优惠,从而赋予商家更强的营销能力。本题便是通过对此二分类问题的数据分析以及筛选出对预测结果有利的各类数据特征,分别通过对朴素贝叶斯、逻辑回归、决策树、随机森林、XGBoost、LightGBM算法模型进行性能对比,经过交叉验证、模型比较、验证结果可视化等方法最终得到最合适的算法模型,从而得到最后的结果。关键词: O2O消费;特征工程;个性化投放;Xgboost;逻辑回归PAGEVI目录636摘要 I7775Abstract III307961引言 1134301.1研究背景 1271561.2研究目的与意义 1294631.3研究内容 225067MACROBUTTONAcceptAllChangesInDocAndStopTracking 285802相关技术研究 33652.1相关模型介绍 3319432.1.1逻辑回归 351012.1.2决策树 3254852.1.3Adboost 3254452.1.4XGBoost 3199412.1.5LightGBM 4280922.2国内外研究现状 4225002.2.1国外研究现状 4177482.2.2国内研究现状 578052.3问题提出 5325172.4本章小结 6266433数据分析处理与特征工程 7248133.1数据来源说明 778123.2数据探索 9247643.2.1初步探查 937883.2.2训练集与测试集相关性 13136693.3数据处理 15170023.3.1数值化处理 1580323.3.2对offline数据集中NULL字段的数据处理 16105313.3.3对online数据集中NULL字段的数据处理 16255603.3.4对测试集中NULL字段的数据处理 16158543.3.5数据的合理性处理 1767843.3.6滑窗方法的使用 17266193.4特征工程 17109843.4.1特征构建 1785023.4.2特征提取 18321263.4.3构建特征 19301423.4.4特征选择 19178313.4.5特征体系构建流程 22194873.5特征构造展示 23137153.5.1线下用户特征群 2492983.5.2线下商家特征群 25127273.5.3优惠券特征 26112183.5.4用户-商家特征群 2623233.5.5其他特征群 27141523.6本章小结 2883674模型的训练与验证 29303604.1模型评价指标 29132984.1.1混淆矩阵 2977664.1.2ROC 3063374.2逻辑回归算法模型的不同特征数量下的预测分析 30230234.2.1模型的数据介绍 30116564.2.2特征集选择 31133194.2.3V1特征集模型训练后的评估 3122024.2.4V2特征集模型训练后的评估 32201894.2.5V3特征集模型训练后的评估 33316334.3XGBoost算法模型的不同特征数量下的预测分析 35216814.3.1模型数据介绍 35211304.3.2特征集选择 3521804.3.3V1特征集模型训练后的评估 35139444.3.4V2特征集模型训练后的评估 36250004.3.5V3特征集模型训练后的评估 3748374.4LightGBM算法模型的不同特征数量下的预测分析 39125354.4.1模型数据介绍 3989174.4.2特征集选择 3912014.4.3V1特征集模型训练后的评估 3996414.4.4V2特征集模型训练后的评估 40267004.4.5V3特征集模型训练后的评估 4110764.5模型验证优化 42183614.5.1确定评估指标 43121284.5.2交叉验证 43148344.5.3模型比较 4533524.5.4验证结果可视化分析 48217034.6结果分析 49115925结论 51318135.1总结 5141595.2展望 5129232参考文献 5220658致谢 53PAGE17引言研究背景O2O(OnlineToOffline)消费模式是指将来自于线下的商企资源同线上的购物平台相互结合的一种新型电商发展方式[1]。为了提高互联网用户对互联网上的信息的兴趣,许多商家将在线平台与线下服务结合起来,以此激励用户,例如发送优惠券、提供客户优惠、服务等。线下商户通过互联网平台开展促销活动,增加线下消费机会,线下门店服务可用于在线服务,确保消费者能够对线上在线平台的线下服务进行筛选和核算,通过线上线下消费相结合的方式促进消费,扩大销售规模,实现消费者和企业的双赢[2]。O2O模式最重要的特点是:推广效果、追溯交易流水和高度的相互满意。

2013以来,O2O产业发展迅速,进入了本地化和移动设备化的融合完善阶段[3]。

此外,线上线下的对接,将打破线上商户与线下商户争相分享的竞争格局,双方成为朋友和敌人,取长补短,相互促进,使整个消费市场进入一个全新的发展局面。

随着社会的发展和移动设备的发展和普及,世界进入了“互联网+的高速发展阶段[4]。在国内,由于运输基础设施的快速发展和电商的兴起,O2O消费逐渐成为这一阶段的主流。

据不完全统计,目前国内O2O行业有近100家创业公司,其中市值过亿的至少有10家。

O2O的消费模式和一系列运营环境产生了大量非常有价值的用户数据和市场规律,这些数据和规则正在成为人们科研、市场分析和商业运营(包括消费行为购买预测)的主要战略要地。研究目的与意义机器学习出现在20世纪末,当时科学技术较为落后,由于硬件的等因素影响,数据的存储和收集问题大大的限制了机器学习的发展。但今天,这些所谓的限制已经消失了。机器学习作为以数据为核心的学科。

在实际中,机器学习是一种基于数据集和测试集的训练并验证的算法模型,然后利用算法模型解决生活中问题的方案。通过机器学习,我们可以获得一些现实世界没有的预测数据,并将结果通知相关人员,相关人员可以及时对其业务进行处理,改变方案。机器学习技术相对于大数据时代早期时,现在更加成熟,在很多领域收获广泛的应用和认可,并且成功获得了一定的成果。

机器学习正在改变并提高人们的生活。随着社会的向上发展,各个类别的商品的品牌、特点等都不再单一,呈现着多元多样的特点,因此“价格战”一词依然适用于今天的社会,优惠券的发放便是在O2O模式的环境打价格战的主要手段之一。然而,随着庞大的用户群体涌入,优惠券的滥发也暴露出了许多弊端,例如对多数用户造成无意义的干扰,降低品牌声誉和价值等,不仅难以估算营销成本,而且易造成用户对该品牌的反感,从而起了反作用。因此,个性化投放是提高优惠券核销率的重要技术,根据以往的用户数据进行分析,从而用概率的形式反馈出可能会购买本产品的用户群体,并以此发放优惠券,这样可以让具有一定偏好的消费者得到真正的优惠,从而赋予商家更强的营销能力。本题目就是通过机器学习的相关知识与商业上投放优惠券问题相结合,根据由阿里云天池大赛提供的相关线上线下真实数据来训练数学模型,并对未来的顾客购买行为进行二分类问题的预测,让有需要的顾客能够享受到商家真正的优惠,可以提高顾客的复购率、增大商家的营销利润、让有一定偏向的顾客从中受益,同时也避免给其他顾客带来不必要的干扰、避免带来难以理清的营销成本、避免了品牌声誉的下降[5]。研究内容本文将以往的线上和线下用户交互数据和机器学习相结合,对天池大赛提供的数据集进行了详细的介绍和分析。对数据集进行数据分析与处理和特征工程,并从处理过的特征集随机选择一定数量的数据作为训练集进行训练。运用滑窗方法取多个数据集,利用训练集对逻辑回归、LightGBM算法及XGBoost算法构建算法模型并进行训练,最后对本题的数据集进行处理并预测和评估各个算法模型的效果。MACROBUTTONAcceptAllChangesInDocAndStopTracking相关技术研究相关模型介绍逻辑回归逻辑回归是一个用来解决二分类以及多分类问题的一个分类器模型,名字中虽然有回归二字,但实际上属于分类算法,通过线性函数的结果,转化到Sigmoid函数中,将这个连续值函数转化成了数值范围是0~1的离散值函数,运用概率的方式对目标进行划分,取一数值作为阈值,并以此来进行分类。在二分类问题中,分类线一侧的数据,概率大于0.5,划分为类别A,概率小于0.5,划分为类别B。逻辑回归也可以以一定的方式将多分类问题转化为二分类问题,从而使问题可以被预测。但是,对特征复杂的题目,仅仅只是使用逻辑回归容易欠拟合,影响模型预测结果。所以逻辑回归一般只能应用于比较简单的处理任务,通常是特征比较明确而且数量不多的情况下[6]。决策树决策树算法也是一种基本的分类方法,其名字顾名思义是一个能够做出决策的树,在有作为结点的多种特征组成的树中,每一个叶子结点则是一个事件在选择了不同特征下的决策,每一个非叶子结点都记录着在该特征下的选择。从根节点到每一个叶子结点的路线,代表着该叶子结点决策所对应的各个特征。其计算复杂度不高,输出也易于理解,但没有确定适合的树的深度时,可能会出现过度匹配的问题。Adboost其算法思想则是对同一个训练集通过多个弱分类器(往往是决策树)及合起来进行训练,从而构建成一个准确率更高的强分类器,可以用“三个臭皮匠,顶个诸葛亮”来形容其思想。该模型是通过多个弱分类器乘上一定的权值相加所得到的,它有一个明显的特点就是排除一些不必要的特征值,把模型的训练放在关键特征值数据上。XGBoostXGBoost(XtremeGradientBoosting),是Boosting提升的一个分支,其通过多个弱分类器组成的加法模型,构造出准确率很高的强分类器模型。其主要思想过程一开始函数为0,然后通过往里面加入分类器,相当于加上了一个函数,再加第二个分类器,相当于又多了一个函数…等等,这里需要保证加入新的分类器能够提升整体对表达效果。提升表达效果的意思就是说加上新的分类器之后,目标函数(就是损失)的值会下降,所以在加入分类器的同时还应该还应该给他设置一个权值,来表明此分类器在制定决策中的影响能力高低[7]。LightGBM上述所提到的Boosting分支——XGBoost算法,其已经能够取得不错的成绩,并且具有很高的效率,然而随着时间的发展和人们生活需要的提升,这类传统的Boosting算法已经无法满足当今时代,因此出现了LightGBM算法。LightGBM是一个基于决策树算法的梯度提升框架,其通过对最大收益的节点直接进行展开,从而可以通过更小的计算代价来选择需要的决策树,控制树的深度和每个叶子节点的数据量,使其能减少过拟合的情况。其快速性、高性能、分布式的特点导致其十分的受众人欢迎,相对比于XGBoost算法,该算法再不降低准确率的同时,将运行速度大大的提升,同时也大大降低了占用内存的空间。国内外研究现状国外研究现状2013年12月,Amazon公司成功批准了一项名为“订单前运输”的专利。用户行为购买预测分析可以预测用户的购买意愿,在订购前将商品存储在用户周围的“仓库”中,一旦购买完成,将尽快发货。这成功实现了“先发货后购买”的运营技术,大大缩短了网购的发货时间,从而使用户更倾向选择这种模式,成为了商家的“老用户”,以此来获得竞争优势。这就是用户购买行为预测转化为现实成果的一个例子。Amazon不惜花费如此巨额的资金来实现这个模式,是因为其以往的数据表明,存在一大部分客户因为配送时间太长而在下单后选择了退货,从而造成了大量的人力与物力资源的浪费,除此之外,有一家美国家喻户晓的在线影片租赁商——Netflix公司,也是利用其平台用户上的访问行为进行数据挖掘与分析,从而对用户发放准确的内容订购特权,并已经实现了很多成功的案例。国内研究现状与美国等发达国家相比,国内对此起步较晚,但由于庞大的市场,因此得到了快速的发展,有人基于BG/NBD模型,通过对消费者在其APP上留下的使用痕迹以及访问数据,从而进行细分构建了行为预测模型,以此来研究在线渠道消费者购买率。也有人使用Pareto/NBD模型对用户购买行为预测进行研究,对原模型中加入了一系列购买行为的细节例如评价、总金额等对模型进行准确度的优化[8]。问题提出本文以O2O消费模式进行个性化发放优惠券为例,来反应对用户购买行为的预测研究。该问题是一个二分类问题,需要将商家所设置的优惠券,尽最大可能的发放到有需求的客户手中,从而减少优惠券的滥发,提高优惠券的核销率,同时也减少对客户造成的干扰和不便,避免降低商家自己的品牌价值等。在选择模型的构建中存在着一些问题,需要在本文中解决。(1)特征的构建是否合理特征选择的好坏,直接影响最终算法模型的精度,因此一个好的特征结合是取得最终良好效果的基础也是核心。在本题中,粗略来看共有xxx多个特征。因此,特征的构建是否合理,需要解决并验证该问题。本题的特征工程在特征的构建中,首先,是对数据预处理前的探索,由于数据分成线上数据和线下数据,所以通过对数据集的边缘探索、与测试集的相关性评估、观察数据分布并进行有利于构建模型的处理。其次,则是通过处理好的数据提取有价值的特征,由于本题拥有特征较多,因此需要生成多个版本的特征去比对,以此来发现最优的特征集合。(2)算法模型的预测精度问题在应用特征和模型训练的过程中,需要结合测试精度和评估指标来对该模型进行评估。本题中则是使用的平均AUC作为评估标准。即单独测算每个user_id的AUC值,然后通过对所有优惠券的AUC值取平均从而得到数值,即为评估标准。适合二分类问题的算法模型有很多,常见的有逻辑回归、决策树、XGBoost、LightGBM等算法模型,但是对模型的选择错误,就容易导致模型精度不够或者过拟合等问题,因此需要通过多模型比对与评估,同时放入多种特征集合,得到N(多种模型)×M(多个特征集合)种预测模型,从而选择出最适合本题的结果。所谓的穿越特征,就是训练集上所提取的特征,或者测试集中目标时间段的数据,穿越特征在实际应用中作用不大,因为用的是未来的数据,从而不可能在现实世界得到,但这有助于提高算法模型的精度,经常对分数有很大的提升。本章小结本章节介绍了逻辑回归、决策树、Adboost、XGBoost的算法核心思想和主要原理。其次阐述了国内外对该领域的各种研究以及对预测问题进行模型的应用的实际情况。最后针对存在的xx问题进行说明,并提出解决方案。数据分析处理与特征工程数据来源说明如今,随着互联网的高速发展,国内市场中,支付宝和为微信早已在融入了人们的生活之中,由于生活质量提高,智能手机在人群中的普及率居高不下,同时线上支付交易模式非常方便且简单,从而使消费者十分青睐,更偏向于使用这种足不出户就能购物的线上消费模式[9]。本数据来源于“阿里云天池大赛赛题解析”的数据,其提供了2016-1-1~2016-6-30之间用户在线上与线下消费行为的数据,并进行预测2016-7-1~2016-7-31中,15天以内消费者领取优惠券并对其进行使用的使情况。本题中则是使用的平均AUC作为评估标准。即单独测算每个user_id的AUC值,然后通过对所有优惠券的AUC值取平均从而得到数值,即为评估标准。表3.1、表3.2、表3.3分别对本题数据集的文字说明:表3-1用户线下消费和优惠券领取行为FieldDescriptionUser_id用户IDMerchant_id商户IDCoupon_id优惠券ID:Null表示无优惠券消费,此时Discount_rate和Date_received字段为空。Discount_rate优惠率:x\in[0,1]代表折扣率;x:y表示满x减y。单位是元Distanceuser经常活动的地点离该merchant最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),x\in[0,10];null表示无此信息,0表示低于500米,10表示大于5公里。Date_received领取优惠券日期Date消费日期:如果Date=null&Coupon_id!=null,该记录表示领取优惠券但没有使用,即负样本;如果Date!=null&Coupon_id=null,则表示普通消费日期;如果Date!=null&Coupon_id!=null,则表示用优惠券消费日期,即正样本。表3-2用户线上点击/消费和优惠券领取行为FieldDescriptionUser_id用户IDMerchant_id商户IDAction0点击,1购买,2领取优惠券Coupon_id优惠券ID:null表示无优惠券消费,此时Discount_rate和Date_received字段无意义。“fixed”表示该交易是限时低价活动。Discount_rate优惠率:x\in[0,1]代表折扣率;x:y表示满x减y;“fixed”表示低价限时优惠;Date_received领取优惠券日期Date消费日期:如果Date=null&Coupon_id!=null,该记录表示领取优惠券但没有使用;如果Date!=null&Coupon_id=null,则表示普通消费日期;如果Date!=null&Coupon_id!=null,则表示用优惠券消费日期;表3-3用户O2O线下优惠券使用预测样本FieldDescriptionUser_id用户IDMerchant_id商户IDCoupon_id优惠券IDDiscount_rate优惠率:x\in[0,1]代表折扣率;x:y表示满x减y.Distanceuser经常活动的地点离该merchant的最近门店距离是x*500米(如果是连锁店,则取最近的一家门店),x\in[0,10];null表示无此信息,0表示低于500米,10表示大于5公里;Date_received领取优惠券日期数据探索初步探查如图3-1、图3-2表示着线上和线下的每个用户参与消费的次数,从而可以看出无论是线下还是线上,参与一次消费的用户最多,都是随着次数增加而递减。然而观察图像可以发现,线下用户的函数图像曲线比线上用户的函数图像的曲线要陡,主要不同集中在第二次到第十次,证明用户在线下发生消费行为时往往倾向于少次的反复购买,然而线上相对线下更倾向于复购,所以可以发现线上和线下的消费行为还是有一定的区别的。图3-1线上用户行为发生统计图3-2线下用户行为发生统计图3-3、图3-4所表示的是线上和线下的商家在数据集中发生交易次数的数据统计,其中线上共有8002个商家,线下共有8022个商家。其横轴分别代表着交易次数(大于等于1次~小于等于50次、大于50次~小于等于200次、大于200次~小于等于1500次、大于1500次以上)。由图可得,很显然的发现线上数据图中,大于200次~小于等于1500次占最高次数,大于等于1次~小于等于50次的几乎为0,而线下数据图中大于等于1次~小于等于50次占最高次数,大于1500次以上的几乎为0。因此可以发现线上线下的商家发生交易行为也存在的很多不同,随着科技创新进步和手机普及,用户更倾向于使用线上交易的习惯也十分显然。图3-3线上商家行为发生统计图3-4线下商家行为发生统计图3-5、图3-6中分别表示线下和线上的商家发放优惠券与核销情况分布,图3-5折线图中表示着在2016-01~2016-06中用户领取优惠券的数量(蓝线)和用户核销优惠券的数量(橙线),柱状图中表示着2016-01~2016-06中对优惠券核销情况分布,可以直观发现,用户在一月领取优惠券最多,五月核销优惠券最多,六月的核销率是最高达15%,因此可以大胆猜测,线下用户的交易行为波动与节假日搞促销相联系。图3-6与图3-5图像同理,但可以发现相对于线下,其核销率分布较为稳定,用户在领取以及核销的月份分布状态波动较大,这也许是受3.8女王节、618购物节等线上促销活动的影响。因此在后期的数据特征提取中,着重留意节假日这样的特殊期间。图3-5线下商家优惠券发放与核销情况图3-6线上商家优惠券发放与核销情况图3-7表示着商家在发放优惠券所代表的折扣率的分布图。将优惠券信息数据通过运算将其转换为百分比(原数据集的优惠方式是满XX减YY),然后进一步转化为0~1区间的分布。其中,无优惠券行为的直接为1.0,其他的依次分布,可以发现,大约占45%的数据为1.0,这代表着有大量的用户发生着无折扣的消费,其次打九折和打八三折的消费行为居多,所有折扣均分布在五折到九七折之间,从而反映出商家做出优惠的情况以及分布。图3-7折扣率统计图3-8是线上和线下用户领取并核销优惠券的间隔天数。通过线上数据可得,当天领取并使用优惠券的人数占比最多,并随着天数的增加直线减少。而线下的数据1~3天领取并使用优惠券的人数占比最多,并通过观察数据集[Distance],发现用户到商家距离均比较近,因此也是其中一个特征。最后,通过图示可得,用户核销优惠券的时间间隔、用户领取优惠券的次数也是重要的关键点,因此在特征提取需要注意。图3-8线上线下优惠券间隔天数统计训练集与测试集相关性由于该数据是真实交易数据,必然存在冗余,各个数据的价值也是不一样的,所以并不是所有数据都对模型的训练有帮助。因此,通过对online和offline训练集与测试集分别探看重合情况,对后续的特征工程和模型训练有很大的帮助,通过pandas对数据进行统计与对比,即可清晰的查看到数据分布和重合情况。图3-9offline和online训练集用户数据状况图3-10offline与online训练集商家数据分布图3-11offline与online训练集优惠券数据分布同图3-10、图3-11、图3-12的比对,从中可以得到offline训练集的商家数据与测试集商家数据重复占比高达0.999358631815266,offline训练集的用户数据与测试集用户数据占比也高于0.999,offline训练集的优惠券数据与测试集优惠券数据占比也高于0.54536,均高于online的数据,因此,我认为该online数据的价值较低,在后续的数据处理与可视化分析中,将着重offline训练集为主,同时在特征提取工作中,也以offline训练集的数据为主。数据处理在给定的offline训练集中,除了折扣和距离,其他的数据均为文本,因此需要先对数据进行数值化,然后再进行分析。数值化处理通过pandas的apply函数进行数值化处理,该函数会自动遍历每一行DataFrame的数据,最后返回结果。由于该函数的参数需要,需要建立多个fun()函数来说明文本数值所对应的数值数据,fun()函数包括:是否满减、满减的条件、满减的优惠、月份、日期、日期间隔、label(领取优惠券的日期是否小于15天)。对offline数据集中NULL字段的数据处理观察赛事所给的offline的数据集中的Coupon_id、Discount_rate、Distance、Date_received、Date字段,发现存在很多NULL字段,所以需要对其进行处理。(1)Coupon_id字段需要将内容为NULL的字段用0替换。(2)Discount_rate字段需要将文本段中的XX:YY(代表着满XX减YY)运用pandas处理为1-YY/XX的格式,并将其数值以浮点数形式表示。(3)Distance字段需要将内容为NULL的字段用,直接使用数值-1(该数值无意义)代替。(4)将Date_received字段需要将内容为NULL的字段用“2000-00-00”(该时间字段无意义)进行替换。(5)Data字段与(4)同理。对online数据集中NULL字段的数据处理观察赛事所给的offline的数据集中的Coupon_id、Date_received、Date字段,发现存在很多NULL字段,所以需要对其进行处理。(1)Coupon_id字段需要将内容为NULL的字段用0替换。(2)将Date_received字段需要将内容为NULL的字段用“2000-00-00”(该时间字段无意义)进行替换。(3)Data字段与(2)同理。对测试集中NULL字段的数据处理观察赛事所给的offline的数据集中的Coupon_id、Discount_rate、Distance、Date_received、Date字段,发现存在很多NULL字段,所以需要对其进行处理。(1)Coupon_id字段需要将内容为NULL的字段用0替换。(2)Discount_rate字段需要将文本段中的XX:YY(代表着满XX减YY)运用pandas处理为1-YY/XX的格式,并将其数值以浮点数形式表示。(3)Distance字段需要将内容为NULL的字段用,直接使用数值-1(该数值无意义)代替。(4)将Date_received字段需要将内容为NULL的字段用“2000-00-00”(该时间字段无意义)进行替换。(5)Data字段与(4)同理。数据的合理性处理本题是一个二分类问题,即对数据的预测结果将只有两个答案,在此为了简化,分别标注成0和1,其中1代表着预测用户在未来15天内会使用优惠券进行购物,即为正数据,0则15天内用户未使用优惠券,即为负数据。因此,我们需要对现有的数据进行提取,有利于在训练算法模型的过程中提高后期的监督学习的效率,这样使最终的预测模型效果更优。滑窗方法的使用所谓滑窗方法,就是在训练集中提取出一部分有价值的数据集合,使其充当测试集的数据进行测试,也就是在数据集中的部分数据在不同时间段中既从当训练数据又充当测试数据。本题需要预测2016年7月1日至2016年7月15日优惠券的核销情况,由于我们的训练数据时间长度较宽,从2016年1月1日到2016年6月30日,因此可以通过滑动窗口法来进行模型的训练。将训练集共分成三份,并从其中划分出测试集。具体则是划分成2016年1月1日至2016年4月15日、2016年2月1日至2016年5月15日、2016年3月16日至2016年6月30日,所对应的测试集则是2016年4月16日至2016年5月15日、2016年5月16日至2016年6月15日、2016年7月1日至2016年7月15日。表3-4为滑窗方法数据划分表。表3-4滑窗方法数据划分表训练集12016年1月1日~2016年4月15日2016年4月16日至2016年5月15日训练集22016年2月1日至2016年5月15日2016年5月16日至2016年6月15日训练集32016年3月16日至2016年6月30日2016年7月1日至2016年7月15日特征工程特征构建特征工程主要是由特征构建、特征提取、特征选择三个部分,而特征构建则是特征工程的基础。特征构建的含义则是从原始的数据中通过自己的判断和思考,从中发现一些具有一定意义、对模型训练起作用的特征。在进行特征工程时,应该花费充分的时间进行特征的构建,尽最大可能的发现基本特征之间互相联系的隐藏特征,以及各个特征之间的联系。对数据进行两两结合,从而得到新的特征,甚至可以得到价值更高的特征。比如将用户核销优惠券时间剪掉用户领取优惠券时间,即可得到用户持有优惠券的时间;整理并统计用户列,可以得到用户对同一店铺领取券的次数;对核销优惠券的用户的距商家距离取平均值,便得到线下用户与核销过优惠券的商家之间的平均距离等。特征构建是一个需要反复推敲的部分,因此需要十分注重[10]。特征提取处理数据上文提到,数据中包含许多空字段,需要对空字段进行特殊的处理,且数据类型有文本类型和数值类型等,需要统一数据类型,这些问题在特征提取时会出现特征无法处理的问题,且由于特征缺失或乱码,往往会导致训练后的模型出现异常,从而造成严重的后果。因此,在对特征提取前,需要对数据进行处理清洗,达到合适于放入算法模型中的要求。这是必不可少的一步。数据分析在进行特征提取前,需要对数据进行分析,一方面检查自己的数据处理结果是否达到理想效果。另一方面,可以将多个数据、不同特征的数据,多个维度的数据相结合来分析,从中得到结合后的特征,这种方法往往能够得到更有价值的特征。除此之外,还可以初步分析数据集与测试集的覆盖率,分布状况等参数。提取特征将处理过的原始数据整理成多个维度组成的多个特征集,本题中共有五大特征集,其分别是用户(User)、商家(Merchan)、优惠券(Coupon)、用户与商家(User_Merchan)、其他特征(Other)。我们可以首先通过将其中一个维度设为主键,然后观察其与其他维度之间的关系,在这里我采用降维的处理方法。所谓降维的方法主要是通过特征之间的关系,如组合不同维度特征得到新的特征,这样就改变了原来的特征空间,将会更有助于后期的模型训练效果。构建特征不同的特征可以组合成新的特征,这些特征大多是隐性的,这样可以得到更具有代表性的特征。本题中对特征的分析,采用了比值法和交叉法。比值法:新的特征是通过两种基本特征之间的比值来实现的。比如,用户领取优惠券的次数和用户核销的次数。你可以根据该比值,以此来判断用户是否更偏向于核销优惠券。交叉法:根据不同的被特征覆盖的数据进行一系列的对比和取交集后的统计。比如我想知道那些优惠券更容易被核销掉,想要得到此交集特征,就需要计算出被核销的优惠券数量和在领取的优惠券中那种优惠券会被核销。通过这两个基本特征,便可得到一个具有两个基本特征的交集特征。特征选择正如前文所说,机器学习是一个不断更新迭代的过程,数据决定了机器学习的上限,而算法只是尽可能逼近这个上限。通过阅读文献,特征的选择往往通过数据集本身含义、模型的自身特点等方面来进行特征的选择,通常是根据特征的有用性、根据特征的复杂程度、特征的计算得分、根据模型的验证效果。生成的特征群进行组装可以生成不同版本的特征,前文已分析了要提取的特征,在此基础上,参考大量文献以及上述方法,按照由低级到高级的顺序提取了三个版本的特征。特征V1:直接在原始的训练集和测试集上提取特征,将数据按要求进行数值化后的结果,便是该特征。表3-5特征V1示意图序号特征名称特征说明1discount_rate优惠率2distance距离3if_fd获取是否满减4full_value获取满减的条件5reduction_value获取满减的优惠特征V2:通过滑动窗口进行统计特征,在特征V1的基础上,进行特征提取。本题中包含:用户统计特征、优惠券统计特征、商家统计特征、其他统计特征等。表3-6特征V2示意图序号特征名称特征说明1discount_rate优惠率2distance距离3if_fd获取是否满减4full_value获取满减的条件5reduction_value获取满减的优惠6total_sales使用优惠券的消费占比7sales_use_coupon使用优惠券的消费次数8total_coupon每个商户发放的优惠券总数9merchant_distance_min商家距离最小值10merchant_distance_max商家距离最大值11merchant_distance_mean商家距离平均值12merchant_distance_median商家距离中间值13merchant_coupon_transfer_rate用户对商家发放的优惠券的使用率14coupon_rate优惠券消费占比15count_merchant商家的总数16user_distance_min用户消费距离最小值17user_distance_max用户消费距离最大值18user_distance_mean用户消费距离平均值19user_distance_median用户消费距离中间值20buy_use_coupon用户使用优惠券消费次数21buy_total每个用户消费的总次数22coupon_received优惠券收到日期23user_day_gap_min用户间隔天数最小值24user_day_gap_max用户间隔天数最大值25user_day_gap_mean用户间隔天数平均值26user_day_gap_median用户间隔天数中间值27buy_use_coupon_rate使用优惠券消费占总消费的比例28user_coupon_transfer_rate用户收到消费券的使用率29user_merchant_buy_total一个用户在一个商家交易的总次数30user_merchant_received一个用户在一个商家一共收到的优惠券数量31user_merchant_buy_use_coupon一个用户在一个商家使用优惠券消费的次数32user_merchant_any一个用户在一个商家的到店次数33user_merchant_buy_common一个用户在一个商家没有使用优惠券消费的次数34user_merchant_coupon_transfer_rate一个用户对一个商家发放的优惠券的使用率35user_merchant_coupon_buy_rate一个用户在一个商家总的消费次数中,用优惠券的消费次数占比36user_merchant_rate一个用户到店后消费的可能性统计37user_merchant_common_buy_rate一个用户在一个商家总的消费次数中,不用优惠券的消费次数占比特征V3:合理运用穿越特征,基于特征V2,构造特征V3。表3-7特征V3示意图序号特征名称特征说明1discount_rate优惠率2distance距离3if_fd获取是否满减4full_value获取满减的条件5reduction_value获取满减的优惠6total_sales使用优惠券的消费占比7sales_use_coupon使用优惠券的消费次数8total_coupon每个商户发放的优惠券总数9merchant_distance_min商家距离最小值10merchant_distance_max商家距离最大值11merchant_distance_mean商家距离平均值12merchant_distance_median商家距离中间值13merchant_coupon_transfer_rate用户对商家发放的优惠券的使用率14coupon_rate优惠券消费占比15count_merchant商家的总数16user_distance_min用户消费距离最小值17user_distance_max用户消费距离最大值18user_distance_mean用户消费距离平均值19user_distance_median用户消费距离中间值20buy_use_coupon用户使用优惠券消费次数21buy_total每个用户消费的总次数22coupon_received优惠券收到日期23user_day_gap_min用户间隔天数最小值24user_day_gap_max用户间隔天数最大值25user_day_gap_mean用户间隔天数平均值26user_day_gap_median用户间隔天数中间值27buy_use_coupon_rate使用优惠券消费占总消费的比例28user_coupon_transfer_rate用户收到消费券的使用率29user_merchant_buy_total一个用户在一个商家交易的总次数30user_merchant_received一个用户在一个商家一共收到的优惠券数量31user_merchant_buy_use_coupon一个用户在一个商家使用优惠券消费的次数32user_merchant_any一个用户在一个商家的到店次数33user_merchant_buy_common一个用户在一个商家没有使用优惠券消费的次数34user_merchant_coupon_transfer_rate一个用户对一个商家发放的优惠券的使用率35user_merchant_coupon_buy_rate一个用户在一个商家总的消费次数中,用优惠券的消费次数占比36user_merchant_rate一个用户到店后消费的可能性统计37user_merchant_common_buy_rate一个用户在一个商家总的消费次数中,不用优惠券的消费次数占比38this_month_user_receive_same_coupn_count用户领取的所有优惠券数目39this_month_user_receive_all_coupon_count

用户领取的特定优惠券数目40this_month_user_receive_same_coupon_lastone特定优惠券是否是用户这个月最新领取的时间41this_month_user_receive_same_coupon_firstone特定优惠券是否是用户这个月最早领取的时间42this_day_receive_all_coupon_count用户当天领取的优惠券数目43this_day_user_receive_same_coupon_count用户当天领取的特定优惠券数目44day_gap_before用户上一次领取的时间间隔45day_gap_after用户下一次领取的时间间隔特征体系构建流程将各个特征提取的逻辑组合成特征群是一个好的方法,这样非常便于对各个特征群进行组装不同集的特征,也方便于对代码的理解,对其中关系的思路,检查特征是否正确等。每一个特征群生成函数,都可以看似成一个特征工程,包括数据分析、数据处理、特征提取等内容。本题的特征群包括了五大部分:商户相关特征群、用户相关特征群、优惠券相关特征群、用户和商户关系相关特征群、其他特征群。特征构造展示前文说明过线下特征群共分为五大类,用户(User)、商家(Merchan)、优惠券(Coupon)、用户+商家(User+Merchan)、其他特征(Other),线上特征群有用户(User)这一大类,接下来就分别列举出线上线下的所有特征群。线下用户特征群图3-13线下用户特征群详细参数线下商家特征群图3-14线下商家特征群详细参数优惠券特征图3-15优惠券特征群详细参数用户-商家特征群图3-16用户-商家特征群详细参数其他特征群图3-17其他特征群详细参数图3-18线上特征群详细参数本章小结本章开始介绍了数据的来源并进行探索,在探索中发现数据上的问题并对其进行修改,例如存在大量空数值,数值的数据类型不统一等问题。通过比对发现线下数据集比线上数据集与测试集更匹配,更加适合做模型的训练,并在线上数据集中提取了13个特征,在线下数据集中提取了96个特征,总共有109个特征值。模型的训练与验证模型评价指标混淆矩阵混淆矩阵(confusion

matrix)常用于二分类或者多分类问题,是用来衡量分类器分类的准确成度。在混淆矩阵中,每一列表示的真实归属类别(二分类中分为1和0),每一列的数据总数代表的该类别的数据实例的数目;每一行表示着数据的预测类别(二分类中分为1和0),其总数代表的预测为此类别的数据的数目。在混淆矩阵中有四个重要概念,其分别是:真阳(TruePositive,TP)、真阴(TrueNegative,TN)、假阳(FalsePositive,FP)、假阴(FalseNegative,FN)[11]。表4-1混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)TruePositiveFalsePositive0(Negative)TrueNegativeFalseNegative通过上图两两结合,即可得到混淆矩阵,从而可以计算出各种所需要的数值。(4-1(4-1)正确率(4-2(4-2)错误率(4-3)真阳率:代表着在分类器中对数据预测为(4-3)真阳率假阳率:代表着在分类器中对数据预测为0占真实类别中错误值的比例。假阳率(4-5)(4-4(4-5)(4-4)准确率ROCROC(ReceiverOperatingCharacteristic)曲线的意义可以结合着混淆矩阵来理解,其中曲线横轴为假阳性率(FPR),FPR与预测正类中实际负类成正比,纵轴为真阳性率(TPR),TPR与预测正类中实际正类成正比。往往理想的目标则是TPR=1,FPR=0,通过图ROC示意图显示,曲线越靠近左上角(也就是坐标(0,1)位置),模型的效率和精度越高。图中ROC曲线阴影的面积即为AUC面积,显而易见,当AUC面积越接近与1,模型的分类准确度也就越高。图4-1ROC示意图下面将使用经过处理的三个特征集分别放入逻辑回归、XGBoost、LightGBM中进行训练,并且通过混淆矩阵和ROC分别进行模型评估,最后将得分最高的模型上传天池大赛平台进行评分。逻辑回归算法模型的不同特征数量下的预测分析模型的数据介绍分别使用前期处理后的V1、V2、V3特征集,来分别评估基本特征和加入滑窗方法以及穿越特征后的模型。由于数据集十分庞大,总共有380000多条数据的特征集,训练起来会造成各种不必要的冗余,因此,需要随机抽取里面150000条数据,其中训练集在总数据集的39%,其中进行优惠券核销的数据有13076条,未核销的数据有136924条数据,正负数据的比例是1:10.3。其中随机抽取里面257126条数据,其中测试集在总数据集的25%,其中进行优惠券核销的数据有13076条,未核销的数据有86924条数据,正负数据的比例是1:7.9。特征集选择前文特征工程部分共提及分装了三个特征集V1、V2、V3,其特点是逐级的加上滑窗方法和穿越特征,并通过训练和AUC评估,可以得到图4-2逻辑回归成绩,可以通过模型的训练结果的对比,可以发现在逻辑回归模型下,采用sf2特征集比采用f1特征集的结果成绩高很多,这主要原因则是在sf2特征集在f1特征集的基础上加入滑窗方案;采用sf3特征集比采用sf2特征集的结果成绩高很多,这主要原因则是在sf3特征集在sf2特征集的基础上又加入穿越特征。图4-2逻辑回归三个特征版本的AUC成绩图V1特征集模型训练后的评估混淆矩阵接下来需要对前面章节提取的V1特征集训练后的LR模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-2混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1902341070(Negative据上述表中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为19023,预测未核销优惠券的人数并且真正未核销的人数为99111,可以得到该模型对线下数据集的预测正确率为45.944%((99111+19023)/257126),准确率为82.243%(19023/(19023+4107))。ROC图4-3ROC曲线图将仅提取的V1特征集的数据通过逻辑回归训练并通过测试,然后使用Matlab绘图绘制出图4-3ROC曲线可以得到AUC面积为0.6229。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.6132。V2特征集模型训练后的评估(1)混淆矩阵然后对V2特征集训练后的LR模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-3混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1645066800(Negative)76124157872根据上述表中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为16450,预测未核销优惠券的人数并且真正未核销的人数为157872,可以得到该模型对线下数据集的预测正确率为67.796%((157872+16450)/257126),准确率为71.119%(16450/(16450+6680))。ROC图4-4ROC曲线图将仅提取的V2特征集的数据通过逻辑回归训练并通过测试,然后使用Matlab绘图绘制出图4-4ROC曲线可以得到AUC面积为0.6929。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.7140。V3特征集模型训练后的评估(1)混淆矩阵最后对V3特征集训练后的LR模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-4混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1713259980(Negative)66982167014根据上述表中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为17132,预测未核销优惠券的人数并且真正未核销的人数为167014,可以得到该模型对线下数据集的预测正确率为71.617%((167014+17132)/257126),准确率为74.068%(17132/(17132+5998))。ROC图4-5ROC曲线图将仅提取的V3特征集的数据通过逻辑回归训练并通过测试,然后使用Matlab绘图绘制出图4-5ROC曲线可以得到AUC面积为0.7272。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.7386。XGBoost算法模型的不同特征数量下的预测分析模型数据介绍使用数据集和测试集以及特征集合和上文逻辑回归模型一致。特征集选择图4-6XGBoost三个特征版本的AUC成绩图如图4-6XGBoost三个特征版本的AUC成绩图所示使用特征集和逻辑回归模型一致。V1特征集模型训练后的评估(一)混淆矩阵接下来需要对V1特征集训练后的XGBoost模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-5混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1734057900(Negative)110327123669根据上述表中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为17340,预测未核销优惠券的人数并且真正未核销的人数为123669,可以得到该模型对线下数据集的预测正确率为54.840%((17340+123669)/257126),准确率为74.967%(17340/(17340+5790))。(二)ROC图4-7ROC曲线图将提取的V1特征集的数据通过XGBoost训练并通过测试,然后使用Matlab绘图绘制出图4-7ROC曲线可以得到AUC面积为0.639。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.655。V2特征集模型训练后的评估(1)混淆矩阵接下来需要对V2特征集训练后的XGBoost模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-6混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1418489460(Negative)49773184223根据上述表4-6中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为14184,预测未核销优惠券的人数并且真正未核销的人数为184223,可以得到该模型对线下数据集的预测正确率为77.163%((184223+14184)/257126),准确率为61.322%(14184/(14184+8946))。ROC图4-8ROC曲线图将提取的V2特征集的数据通过XGBoost训练并通过测试,然后使用Matlab绘图绘制出图4-8ROC曲线可以得到AUC面积为0.700。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.710。V3特征集模型训练后的评估(1)混淆矩阵接下来需要对V3特征集训练后的XGBoost模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-7混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1552476060(Negative)39372194624根据上述表4-7中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为15524,预测未核销优惠券的人数并且真正未核销的人数为194624,可以得到该模型对线下数据集的预测正确率为81.729%((194624+15524)/257126),准确率为67.116%(15524/(15524+7606))。ROC图4-9ROC曲线图将提取的V3特征集的数据通过XGBoost训练并通过测试,然后使用Matlab绘图绘制出图4-9ROC曲线可以得到AUC面积为0.751。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.766。LightGBM算法模型的不同特征数量下的预测分析模型数据介绍使用数据集和测试集以及特征集合和上文逻辑回归模型一致。特征集选择图4-10逻辑回归三个特征版本的AUC成绩图如图4-8所示使用特征集和逻辑回归模型一致。V1特征集模型训练后的评估(一)混淆矩阵接下来需要对v1特征集训练后的LightGBM模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-8混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1776153690(Negative)118077115919根据上述表4-8中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为17761,预测未核销优惠券的人数并且真正未核销的人数为115919,可以得到该模型对线下数据集的预测正确率为51.990%((17761+115919)/257126),准确率为76.787%(17761/(5369+17761))。(二)ROC图4-11ROC曲线图将提取的V1特征集的数据通过LightGBM训练并通过测试,然后使用Matlab绘图绘制出图4-11ROC曲线可以得到AUC面积为0.631。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.647。V2特征集模型训练后的评估(1)混淆矩阵接下来需要对V2特征集训练后的LightGBM模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-9混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1533078000(Negative)58958175038根据上述表4-9中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为15330,预测未核销优惠券的人数并且真正未核销的人数为175038,可以得到该模型对线下数据集的预测正确率为74.036%((175038+15330)/257126),准确率为66.277%(15330/(15330+7800))。(2)ROC图4-12ROC曲线图将提取的V2特征集的数据通过LightGBM训练并通过测试,然后使用Matlab绘图绘制出图4-12ROC曲线可以得到AUC面积为0.705。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.741。V3特征集模型训练后的评估(1)混淆矩阵接下来需要对V3特征集训练后的LightGBM模型,用混淆矩阵的方法进行评估,具体步骤如下:表4-10混淆矩阵结构真实类别1(True)0(False)预测类别1(Positive)1595671740(Negative)39560194436根据上述表4-10中可以得到,测试集的数据一共有257126条数据,其中预测核销优惠券的人数并且真正核销的人数为15956,预测未核销优惠券的人数并且真正未核销的人数为194436,可以得到该模型对线下数据集的预测正确率为81.824%((194436+15956)/257126),准确率为68.984%(15956/(15956+7174))。(2)ROC图4-13ROC曲线图将提取的V3特征集的数据通过LightGBM训练并通过测试,然后使用Matlab绘图绘制出图4-13ROC曲线可以得到AUC面积为0.760。提交到天池大数据平台后通过预测2016年7月1日至2016年7月31日的数据中用户对优惠券在15天内核销的概率,反馈的平均结果为0.774。模型验证优化模型验证优化主要包括确定评估指标、交叉验证、模型比较、验证结果可视化分析、结果分析等步骤。确定评估指标上文所述,本题通过ROC、混淆矩阵、AUC面积的评估方式进行模型评估,具体评估的计算方式不再赘述。交叉验证简单交叉验证所谓简单交叉验证则是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论