一 项目背景
公司大数据平台从无到有,过去一年大部分在做etl和单业务系统的数据分析,现在由于各个业务系统数据都已经统一到了大数据平台,迫切需要将各个业务系统的用户进行打通,然后对用户进行用户画像等分析。ID_MAPPING 也算得上是第一个正式的机器学习工程实践,从业务整理、数据源调研、数据整理和特征工程到建模、模型评估、系统部署这一完整流程都由自己独立设计实现。
二 算法思路
是一家餐饮行业的数据,业务系统主要有第三方平台(o2o,包括在美团上点餐及在到店堂食等),微信小程序(有多个微信小程序),支付宝小程序,自有app。各个业务系统之家用户没有打通,各个业务系统都有各自的id对用户进行标识,如果用户是多个系统的会员并且注册的手机号相同,在会员表中会有一条会员信息可以通过一个第三方账户表和各个业务系统的用户表对应。
如 a用户通过微信小程序wx_1 购买了商品,有一个wx_id a_wx_1;同时又在微信小程序wx_2上购买了商品,有
另一个wx_id a_wx_2 (微信的安全机制让在不同微信小程序上的用户wx_id不同,所以a_wx_1 和 a_wx_2 是不
一样的,但是同一个微信用户会有一个统一的wx_uinon_id,通过这个id可以把不同微信渠道的统一用户识别出
来);同理,a用户在支付宝小程序购买了商品产生Alipay_id a_alipay,在o2o购买产出o2_id a_o2o;在自有app
购买产生的数据和o2o购买产生的数据是一样的,就是这两种交易方式共用的是一套系统。所有这些业务系统
的用户都会在用户第三方账户表产生一条记录(如果之前存在该第三方用户就不变);如果该用户注册为会
员,就会在会员表产生一条记录,会员表通过第三方账户表关联到各个业务系统。业务系统id流向如下图(业务id流向)
算法实现过程详解
字段介绍:
tel:用户电话
wx_common_id:用户在微信上的唯一id
wx_open_id:用户在各个微信小程序上的id,同一个用户多个wx_open_id对应一个wx_common_id
alipay_id:用户在支付宝小程序上的id
member_id:用户在自有app上的id
o2o_id:用户在第三方平台上的id
create_time:用户创建账号或者第一次下单的时间
三 代码实现
3.1.基础数据
基本数据
train_sample.csv
one_id,weight,tel,wx_common_id,wx_open_id,alipay_id,member_id,customer_id,o2o_id,registered_channel,registered_time,create_time,update_time
a_1,95,18221562923,u_1,o_1,a_1,m_1,c_1,e_1,微信小程序,2018-08-20 16:40:49,2019-07-05 11:40:06.95,
a_2,95,18221562924,u_1,o_1,a_1,m_1,c_1,e_1,微信小程序,2018-08-20 16:41:49,2019-07-05 11:41:06.95,
a_3,95,18221562925,u_2,o_2,a_2,m_2,c_2,e_1,微信小程序,2018-08-20 16:42:49,2019-07-05 11:42:06.95,
a_4,95,18221562924,u_3,o_3,a_3,m_2,c_3,e_1,微信小程序,2018-08-20 16:43:49,2019-07-05 11:43:06.95,
a_5,35,,u_1,o_1,,,c_1,e_1,微信小程序,2018-08-20 16:45:49,2019