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 ...
随机推荐
- Hibernate(五)
================================criteria(QBC)查询========================QBC,(容器)又名对象查询:采用对象的方式(主要是cri ...
- Win32实现迷宫
跟着杨立祥老师的课程,为了完成扫雷的作业,打算先用DFS/BFS实现路径搜索的简单Demo. 生成迷宫: /* 扫雷程序生成方砖 */ #include <stdio.h> #includ ...
- Tarjan算法——强连通、双连通、割点、桥
Tarjan算法 概念区分 有向图 强连通:在有向图\(G\)中,如果两个顶点\(u, v\ (u \neq v)\)间有一条从\(u\)到\(v\)的有向路径,同时还有一条从\(v\)到\(u\)的 ...
- PostMan向企业微信机器人传送数据测试
1 在企业微信中创建机器人 获取:webhook 地址 2.在Postman软件中创建Post文件 Post文件请求类型要与机器人所接受的类型一致.Get 或者 Post Url地址为上面webh ...
- Python3(九) 闭包
一. 一切皆对象 函数式编程并没有标准定义,如果代码非常繁琐则考虑使用. 学习闭包的概念,不是python独有的. 其他大多数语言中的函数只是一段可执行的代码,并不是对象. python中的函数是对象 ...
- react-native当使用antd-mobile出现View config not found for name div
1.npm uninstall antd-mobile 2.npm uninstall react 3.npm uninstall react-native 4.npm i xx@指定版本
- 如何用Python实现do...while语句
我在编程的时候可能会遇到如下代码: a = 0 while a != 0: a = input() print a 我所设想的运行过程是这样的: 很显然我是想先运行后判断的模式,即 do...whil ...
- centos6.5下编译安装单实例MySQL5.5
MySQL5.5版本安装3步曲: 1) cmake 2) make 3) make install 查看系统版本号 [root@meinv01 ~]# cat /etc/redhat-release ...
- 2020 年 中国.NET开发者调查报告
微信公众号dotnet跨平台2020年初做的一个关于中国.NET开发者调查收到了开发者近 1400 条回复.这份调查报告涵盖了开发者工具链的所有部分,包括编程语言.应用架构.应用服务器.运行时平台.框 ...
- C#调用Windows API(示例:显示任务管理器里的程序名称)
作为初学者来说,在C#中使用API确是一件令人头疼的问题. 在使用API之前你必须知道如何在C#中使用结构.类型转换.安全/不安全代码,可控/不可控代码等许多知识. 在.Net Framework S ...