Coder Social home page Coder Social logo

ddf-'s Introduction

DDF

DDF招商赛A榜top9特征分析 比赛记录:这个是我第三次数据挖掘类型的比赛,最终成绩为A榜top9。这个repository用于记录这次模型所做的模型。 赛题:消费金融场景下的用户购买预测 赛题介绍:利用招商银行客户的属性特征、信用卡消费数据(匿名特征),以及部分客户app操作行为日志,预测用户购买优惠券概率。

最终的模型为 lightgbm 、xgboost、lr的融合,融合方式为stacking

#原始数据特征

原始特征分布在train_agg、test_agg、train_log、test_log这几个表中,其中agg表为30维度左右的匿名特征,log表有3个字段:EVT_LBL、 OCC_TIM 、TCH_TYP。其中EVT_LBL为点击模块的三级字段,详情看比赛介绍,OCC_TIM字段为操作时间记录、TCH_TYP为点击类型。

###赛题难点地方

这个赛题,我觉得有3个难点需要面对:

1、样本正负严重不平衡,据统计,正:负约为 1:25

2、特征严重缺失。训练样本有8万用户,但log记录的用户只有4万左右,就是说,有一般左右的人缺少这部分的特征。而这部分特征恰好是训练的关键特征

3、agg表都是匿名特征,无法从业务的角度来分析,只能从统计方面入手

###特征分析

#基本特征

首先是一些显而易想到的特征,如:用户对所有模块的点击次数和、用户对各个模块相应的点击次数统计、浏览类型统计、观察窗口各用户最后一次点击记录、观察窗口各用户第一次点击记录、用户最后一天点击次数、用户点击一阶时间差、在一个月中每天的点击次数、 最后7天点击次数、最后7天用户点击次数平均值、一个月中用户点击次数最小值最大值 、一个月中用户点击次数标准差 对三级模块拆分后进行上述相关操作。

#特征扩展

接着从业务的角度,尝试逻辑上比较好的特征

1、上面提到点击间隔一阶时间差,那么点击间隔的间隔(也就是二阶间隔),甚至3阶等也可能是有效的特征。还可以分析整段时间的点击次数变化斜率

2、分析flag为1的用户。比如说,在这些正例用户中,他们有什么行为特征。包括:他们点击的最多的top n 模块分别是什么(拆分三级模块后也可以做同样分析),然后统计所有用户相应的点击情况作为新特征。然后,这些正例用户各种行为,比如:点击时间的分布(早点?饭点?宵夜?周几?)、点击频率、最近一次点击时间等,然后也统计所有用户在这些指标上的特征情况。

3、因为要预测统计窗口后一段时间的购买优惠券的概率。所以可以这样想,各个用户最后几天点击的次数有没相对之前的多一点(比如最后两天的平均次数和一个月的平均次数,最后3天的平均次数与整个月的平均次数比较等)。如果前一部分点击很少,在最后一段时间却多了很多点击行为,很有可能他会购买。相反,如果一些用户即使这一个月的点击总量不少,但基本都是在前部分时间点击,而后一部分时间却没怎么点击了,很有可能购买的概率不高。

4、统计各个用户相应自己而言,点击得最多的那个模块,点击了多少次。

5、是否有点击行为也是一个比较重要的特征

6、对模块进行分级处理后,再进行分箱统计处理

7、其实根据以上这些基本特征和拓展特征,可以相互组合,从而增加一些有用的特征,这里就不细提。

###说说上面赛题难点的应对方法 1、样本正负不平衡:由于极度不平衡,采取分层采样的方式(这是最常用的了吧)。其次,可以这样尝试:先用一个模型进行训练,接着,将有log字段的用户提取出来,重新训练一个模型,得到这部分用户的概率,然后替换掉那部分用户原先的预测概率。这对难点二也会有一定帮助

2、如1中所说,是一个办法。同时,在分层抽样时,除了对样本标签进行分层抽样,对是否有log字段的用户进行分层抽样。

3、对于难点3,由于agg表中的特征都是匿名特征,无法从业务的角度来分析,只能从统计方面来分析处理,比如说常规的异常值处理,onehot处理。

###最后是stacking等模型融合操作

stacking就是把第一层模型对验证集的预测概率结果作为第二层模型的特征输入,用新模型进行新一轮的训练,有点类似神经网络的做法 第一层用了lightgbm 、xgboost、svm等 第二层用了lr 和lasso

#里面有两份文件,一份为特征清洗、特征构造的py,另一份为模型文件(里面有lightgbm和xgboost模型),svm和lr是队友所写,因而没放上来。

ddf-'s People

Contributors

weizhiyangq avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.