前言:
说来惭愧,本人在两个月之前还是什么都不懂的菜鸟,属于真正的小白一枚,只会对大佬喊666,但是这有什么用。我当现在也忘记了我为什么当时会去参加这个比赛,可能是冥冥之中的缘分吧,哈哈,好了,不说废话,开始进(jie)行(shou)表(pi)演(ping)。
大赛简单介绍:
先给个比赛的链接吧:大数据挑战赛
题意简述:赛方给出用户的四个表,包含了用户在快手APP上1-30日的历史行为,本次比赛的目标就是预测接下来7天(31-37)的活跃用户。定义活跃为任意一张表出现过,就为活跃用户。
采用的框架:
由于赛方提供的数据没有label标签,所以需要用滑窗法对数据进行划分,我这边的划分方式具体如下:
train1 1-16 test1 17-23 register 1-16
train2 8-23 test2 24-30 register 1-23
train3 15-30 register 1-30
可以用train1训练train2进行线下验证,后面train1和train2合并进行预测未来七天的活跃用户的概率。
EDA分析:
说实在,这个EDA分析我到现在还是很懵逼,但是因为有大佬进行了分享,我知道了一些异常数据在注册日期为24号、注册类型为3,设备类型为1或83或223,这部分异常数据大概有一万四千个,后面我把这几个用户的概率都置为0,大概能涨十万分之七。这也算的上是一个蛇皮操作了,但这是不是我想出来的,是一个热心的大佬告诉我的,非常感谢他٩(๑>◡<๑)۶ 。
特征工程:
特征工程我也不是很会,我都是一些基本的统计,mean,max,count,min,std,kurt,skew,还有一些比率这些特征,这应该就是我分数一直不高的原因。
这个题目我个人觉得一些比率特征比较好,比如我把device_type/register_type,这一个特征就给我涨了挺多的分。
至于群里一些大佬对device_type说的分箱操作,我试了没用,可能是我的姿势不对吧,我只是简单的if--else,大佬应该是用到了k-mean聚类算法之类的,这些我也不是很会。当然群里大佬还说了对数据进行加权,但是我这个我没有试过,因为我根本不会啊(╥╯^╰╥)。
这个比赛还有很多东西我没有想到,当然有的想到我也无法实现,快手的视频肯定会存在一些僵尸粉,这些怎么判断出来我是不会的,还有怎么去判断一个用户是否一直关注某个高级用户之类的。
模型选择:
接下来就是模型选择的,我从最开始就一直用的是lgb,打算一个模型用到老(⊙_⊙),后面我的单模型实在是干不上去了,具体原因我认为有两个,一个是我特征的问题,特征没有提取到位,还有没有筛选出更好的特征组合,二是就是我目前对树模型还是一知半解,只是个调包侠,对其原理不了解,所以参数的设置也是有问题的。
后面我就又组了一套新的特征也用lgb进行训练,稍微变化了一些参数,然后进行加权融合,终于让我线上涨了十万分之6左右,然后后面就又卡住了。
后面我又试了xgb、catboost、xgb+lr、mlp,结果都是不那么理想,但是融合总是有点收益的,还是涨了一点分。
关于融合的方面,我还是很欠缺的,大佬们用的是Blending,stacking之类的,我只是简单的加权而已。这方面还是要继续加强的。
一点感想:
第一次参加比赛,从一个小白到次小白,心里还是有点高兴的,相比之前每一天看电影吃鸡是不那么爽,但是比赛让我又了提升。科赛这个平台也挺好的,有问题都会及时的帮你解决的,很棒。
群里的气氛很好,大佬们都很活跃,很乐意分享,特别是每周的周周星,能学到很多东西,在此非常感谢他们。最后,我要非常感谢畅哥,是我在比赛认识的一个特别好的博士,他一直帮助我,对我不厌其烦的讲解,愿善良的人儿都会快乐每一天哈。
最后,说下我最终的名次吧,44名:
最后两次还交炸了。。。
我终究还是个菜鸟,但是我接下来会继续努力的,也欢迎一些愿意跟我一起交流组队的找我哈。。。
我的代码还没整理,写的乱七八糟的,等有时间整理的上传上去,望大佬们轻喷!!!!