JDDiscovery比赛小结

最近几天参加了一个京东办的大数据比赛IDDiscovery,比赛地址:JDD比赛官网。作为一个数据挖掘比赛的小白,选择了登录行为识别这个赛题,首先查了查相关比赛的资料,类似的比赛有:拍拍贷风险预测,微额借贷比赛等。花了一些时间阅读了这些比赛的相关源码分享,主要资料来源:https://github.com/wepe,收获不少。


对这种比赛有了初步的了解之后,花了一些时间写了一个baseline,过程中由于对pandas的操作不是熟悉,一边码代码一边查api,效率贼低。后来发现《利用pandas进行数据分析》已经包含了大部分数据处理的操作,还亏得我曾经把这本书刷过一遍,现在都忘光了(哭),又重新学习了一遍。


提取了二十几个特征(删除了很多没用的特征),用xgboost初步算了一个结果,提交上去线上0.71,排名161/806。比赛还有一周多结束,由于加入比赛的时间较晚,好多大神都已经0.9+了,每个赛题 平均只选5个队伍进入决赛,加之最近还有很多其他的事情要忙,所以不打算做这个比赛了,第一次参赛就当凑个热闹了。我的代码及数据整理之后放在:这里


稍微总结一下:

关于特征工程:

1:数据表的关联问题。题目中给出了用户的登录表和交易表,需要我们自己将登陆行为与交易行为进行关联。我的做法是将每个用户的交易记录与该用户登录表中登录成功且登陆时间距离交易时间最近的一次登录记录进行关联


2:关于特征提取,首先针对登陆时间login_time和交易时间trade_time,。发现中交易时间在午夜时间段的风险较大,取trade_time的小时数作为一个特征,然后再取交易时间与登陆时间的差值,每个用户每笔交易时间的差值作为新的特征


3: city,device,ip是否多次变化(针对用户id)作为新特征


4:交易表中的city,device,IP,log_from,type是否为登录表中用户最常用的类型作为新特征


5:对log_from,type进行one-hot处理


以上特征只是最基本的特征提取,可以在这些特征的基础上提取其min,max,std,mean等作为新的特征,以及相关的排序特征,离散特征等,充分挖掘特征的潜在信息。


关于模型求解:

1:选取比赛最常用的xgboost进行求解,划分训练集和验证集时应该考虑时间序列的问题,可以将6月的最后两周作为验证集,为了简便,我是随机划分训练集的,这点可以再花时间去改进一下。


2:评价函数是fbelta-score,xgboost里的内置函数没有这个,需要自定义评价函数。不过当我用自定义的评价函数时,发现xgboost计算速度下降好多,是我的定义方式有问题?


3:xgboost的参数没怎么调,发现参数对模型求解结果还是挺大的,scale_pos_weight这个参数随便一调,分数上下剧烈波动,吓死我了!是我找的特征太少了?


对于模型求解,可以尝试用rf,lr,svm,gbm试试,改变xgboost的随机种子也能得到不同的模型,然后再进行ensemble,可以用voting,bagging,stacking等试试。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值