Case Study - 用户复购行为预测
Problem
对于商家来说提前识别回头客是一件集中资源提高新品销售量的头等大事,各大商家为了吸引顾客的二次购买都会实行各种像是促销、优惠券、折扣之类的策略。按理说越了解客户,越知道客户的喜好,越能精准推销,就越能实现券的高使用率,但是在初期预测一个客户的忠诚度其实是一件很困难的事。
本节就是在给定客户历史交易记录的信息预测他是否会再次光顾使用之前提供的券,在机器学习领域里这就是一个很典型的是非二元分类问题。
Data
由于原始数据量很大,有500G, 包含上百万条客户的历史交易记录数据transaction,历史商店回顾情况history以及优惠券的各项基本信息offer,为了更方便进行数据处理,需要将研究人数进行减缩。
Transaction
数据结构很简单,就是描述了某个客户某天某次在某家公司的某个商店的购买量以及购买金额。
Offer
数据集显示了此券的商家、使用条件以及折扣力度。
History
数据集包含客户在某个商圈的某家商店购买过几次,是不是一个回头客以及他收到商家的优惠券的时间
Preprocessing
在给定的特征基础上,我们extract出了几个会影响the chance of repeat purchace的人工变量:
Company
对于某家商场用户历史券使用量、使用额、前30天/60天/90天/180天使用额
CAT
对于某个类别用户历史券使用量、使用额、前30天/60天/90天/180天使用额
Brand
对于某个品牌用户历史券使用量、使用额、前30天/60天/90天/180天使用额
Combination
Offer
优惠券的力度与条件
Shopper
客户历史总消费
最终特征选取如下:
offer_quantity:1
has_bought_company_a:243.63
has_bought_brand_180:7.0
has_bought_brand_a_180:23.13
has_bought_brand_q_180:7.0
offer_value:2
has_bought_brand_a_60:14.95
has_bought_company_q:37.0
has_bought_brand_q_30:1.0
has_bought_brand:8.0
has_bought_company_q_30:6.0
has_bought_brand_30:1.0
has_bought_company_q_60:16.0
has_bought_brand_company:1
has_bought_brand_90:6.0
has_bought_company_q_180:19.0
has_bought_company_30:6.0
has_bought_brand_a:28.71
has_bought_company_a_90:106.13
has_bought_brand_q_90:6.0
never_bought_category:1
has_bought_company_180:19.0
has_bought_brand_q:9.0
has_bought_company_a_30:46.74
has_bought_company_q_90:17.0
has_bought_brand_a_30:4.59
total_spend:4140.41
has_bought_company_a_60:100.44
has_bought_brand_q_60:5.0
has_bought_company_a_180:113.21
has_bought_company_60:16.0
has_bought_brand_60:5.0
has_bought_company_90:17.0
has_bought_brand_a_90:20.64
has_bought_company:36.0
Model
Vowpal_wabbit 是在单机上速度非常快的机器学习库。
本质原因是vowpal_wabbit采用的是在线学习,也即优化方法采用的是随机梯度下降的方法。相比较batch gradient,online-learnging 的速度快,但是效果可能没有batch-learning好。
在线学习收敛速度慢,在小数据集上表现不佳,但由于不需要将所有的数据集全部加载进来,所以,在单机上也是可以处理海量的数据,一条条数据进行处理在训练的过程中观察收敛情况。但它对样本的顺序敏感,比如在预测点击的数据集中,点击的样本集中在前面,未点击的数据集中在后面,那么学习的效果就会不好。
这里使用的Python版的VW,调参情况如下:
-c -k --passes 40 says to use a cache, kill any previous cache and run 40 passes
-l 0.85 sets the learning rate to 0.85
--loss_function quantile says to use quantile regression
--quantile_tau 0.6 is a parameter to tweak when using the quantile loss function.
Evaluation
由于数据集中有200个客户没有任何使用优惠券的产品交易信息,因而预测结果为0. 总体模型预测结果良好,AUC达到0.69左右。
Case Study - 用户复购行为预测的更多相关文章
- Case Study: Random Number Generation(翻译教材)
很荣幸,经过三天的努力.终于把自己翻译的教材做完了,现在把它贴出来,希望能指出其中的不足. Case Study: Random Number Generation Fig. 6.7 C++ 标 ...
- Data Visualization – Banking Case Study Example (Part 1-6)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 【ASE模型组】Hint::neural 模型与case study
模型 基于搜索的提示系统 我们的系统用Pycee针对语法错误给出提示.然而,对于语法正确.结果错误的代码,我们需要另外的解决方式.因此,我们维护一些 (错误代码, 相应提示) 的数据,该数据可以由我们 ...
- Deep Learning-Based Video Coding: A Review and A Case Study
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...
- 课程三(Structuring Machine Learning Projects),第一周(ML strategy(1)) —— 1.Machine learning Flight simulator:Bird recognition in the city of Peacetopia (case study)
[]To help you practice strategies for machine learning, the following exercise will present an in-de ...
- Attacking JavaScript Engines: A case study of JavaScriptCore and CVE-2016-4622(转)
转:http://phrack.org/papers/attacking_javascript_engines.html Title : Attacking JavaScript Engines: A ...
- 关于运维之故障复盘篇-Case Study
关于故障的事后复盘,英文名 Case Study是非常有必要做的,当然是根据故障的级别,不可能做到每个故障都Case Study,除非人员和时间充足: 文档能力也是能力的一种,一般工程师的文档能力比较 ...
- 李宏毅机器学习课程---2、Regression - Case Study
李宏毅机器学习课程---2.Regression - Case Study 一.总结 一句话总结: 分类讨论可能是比较好的找最佳函数的方法:如果 有这样的因素存在的话 模型不够好,可能是因素没有找全 ...
- 你从未见过的Case Study写作指南
Case Study,意为案例分析,Case Study与其它的留学论文作业最大的的差别就在于Case Study在论文开始就需要明确给出论,然后再阐述这个结论的论证依据和理由.留学生们需要知道的是C ...
随机推荐
- webpack入门系列2
前面介绍了使用webpack做最基础的打包,接下来讲讲webpack的进阶. 1.使用 webpack 构建本地服务器: 想不想让你的浏览器监听你的代码的修改,并自动刷新显示修改后的结果,其实Webp ...
- LeetCode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(C++/Java)
题目: Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper ...
- [Python]逻辑运算符 and or
复习老男孩全栈二期视频的时候 圆号老师测试的用例两个集合and 和or操作的时候的问题 >>> a = set("what") >>> b = ...
- 说说GAN(生成式对抗网络)
在Auto-encoder中,input data通过一个encoder神经网络得到一个维度的较低的向量,称这个向量为code,code经过一个decoder神经网络后输出一个output data. ...
- 移动端H5优化
H5前端优化收藏的网址: https://zhuanlan.zhihu.com/p/25176904 http://tgideas.qq.com/webplat/info/news_version3/ ...
- 2.5D(伪3D)站点可视化第一弹
楔子 最近要做一个基站站点的可视化呈现项目. 我们首先尝试的是三维的可视化技术来程序,但是客户反馈的情况是他们的客户端电脑比较差,性能效率都会不好,甚至有的还是云主机. 因此我们先做了一个性能比较极致 ...
- python学习(2)关于字符编码
关于字符编码的学习内容笔记如下: 1.计算机只能用0和1来进行记录和存储.计算机是二进制. 2.ASCII(American Standard Code for Information Interch ...
- HSRP 详解
简介 HSRP(Hot Standby Router Protocol 热备份路由器协议)是Cisco的专有协议.HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器.这个组内只有一个路由器是 ...
- xmake v2.3.1 发布, 无缝对接其他构建系统
最近对xmake内部做了不少的重构来改进,并且新增了不少实用的新特性,欢迎来体验. 项目源码 官方文档 一些新特性: 一键编译其他构建系统维护的项目,实现无缝对接,并且支持交叉编译(比如autotoo ...
- Java笔记---枚举类和注解
Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...