阿里天池全国社保比赛心得

       最近时间都忙于参加阿里天池的全国社会保险大数据应用创新大赛,终于结束,最终全国排名第7,总共是1336只队伍参加,仍是很激动进了前10,今天想把一些体悟写一下,但愿对后来参加的人有用。这个比赛是完成数据算法模型的开发设计,实现对各种医疗保险基金欺诈违规行为的准确识别,根据给出的数据状况,最开始有两个思路,1.从就诊记录入手,找到可疑的就诊记录,而后拼接到人上 2.直接构造人的可疑程度的行为特征。二者都试过,最终选择了后者,由于题目给出的欺诈标签主要是人的欺诈标签,并无给出某次就诊行为的欺诈标签。另外,这次的评测指标是F1值,这个很是重要,你要知道你最终排名都是看的这个值。下面我从三个方面讲一下此次比赛的心得。python

1、特征算法

可能没参加比赛前很难理解特征决定上限的这个真理,特征特征才是最重要的!app

必定要看特征重要度,要不断尝试,有些组合到一块儿反而下降,有些特征看着不重要,你把他去了 但是结果却会出现降低的状况,由于特征和特征之间是有关系的。函数

在重要特征作深刻处理的收益远大于在次要特征中继续作。测试

汇总信息有些时候会丢失信息,好比咱们最开始将医院数据进行了汇总,计算每一个人去一级医院,二级医院,三级医院的个数,反而没有把全部医院的维度扩充好。大数据

观察和了解你的数据很重要。观察数据发现患者同一天在同一个医院有药费,有治疗费分别出现不一样的就诊id,包括挂号的费用也是不一样的id,咱们认为实际上是一次就诊,因此进行相应汇总。设计

要保证测试集和训练集一块儿处理,不然会出现二者特征不匹配htm

2、模型开发

后期为了提升泛化能力,基本都会进行模型的融合,最后咱们是用了三个GBDT的模型进行的融合。而这三个模型的选取,其中一个就是咱们每次提交用到的那些特征(有些下降了排名的就舍弃的特征,只有200多维),另外两个使咱们把咱们历史用到的全部的特征(600多维),进行特征重要度的选择(选了一个100维、一个120维),神奇的发现以前一些舍弃的特征之间竟然可能发生了相互做用,因此模型效果还能够。因此一些最开始的一些加进去使得排名降低的特征不要直接丢弃,最后特征融合的时候可能反而用上了。文档

3、评测指标F1和调参

过拟合问题必定要很是当心,初赛的时候咱们就彻底犯了错误,直接根据排行榜的成绩来调咱们的模型和特征。尤为是由于最终评价指标是F1值,01阈值的选取对F1影响比较大,而咱们就一直根据排名调咱们的阈值,最后调到A榜排名前,可是实际上是过拟合,B榜排名降了几十名,还好仍是进复赛了。

最后复赛吸收教训,仍是调参仍是要相信CV的结果,训练数据分红5份,前面4份做为训练集,在第5份上验证,而后再次训练,在1235上训练,第4份上验证,而后对不一样份进行循环,这么作你会对哪组超参数表现更加稳定更肯定,最后你能够用这组超参数对整个训练集训练。随机数的种子对结果可能也有影响,有些时候种子的结果好,但实际的结果不必定是这样的,因此仍是相信cross_validation的结果吧

最后咱们阈值的选取是根据CV大概负样本的比例来决定的,而不是直接用模型默认的0.5做为分割

4、阿里平台

复赛必须使用阿里的平台,主要是根据帮助文档来学的,将以前用python构造的特征从新用SQL构造,虽然以为不方便,也是至关于解决相同问题的不一样途径,也学了好多之前不会的函数,好比percent_rank()函数的使用等等。时间窗口用SQL作折磨死咱们了,包括一我的连续住院的最大天数,最后找到一个奇妙的解决方案,生成一个序列号,而后将日期转化为天数,而后作差,再Groupby 。阿里PAI平台上没有xgboost模型,可是IDE(大数据开发套件)上可使用。

DROP OFFLINEMODEL IF EXISTS testXgboost_cv_2_388;

PAI

-name xgboost

-project algo_public

-Dobjective="binary:logistic"

-Deval_metric="auc"

-Deta="0.1"

-Dseed="0"

-Dnum_round="128"

-Dmax_depth="6"

-Dmin_child_weight="4"

-Dgamma="0"

-Dsubsample="0.8"

-Dcolsample_bytree="0.8"

-DmodelName="testXgboost_cv_2_388"

-DinputTableName="pai_temp_60326_831172_1"

-DlabelColName="label"

-Dmax_delta_step="1"

-DfeatureColNames="approve,max_month_count,self_pay_sum_add。。。";

 

drop table if exists xgb_825_cv2_388;

pai -name prediction

-DmodelName="testXgboost_cv_2_388"

-DinputTableName="pai_temp_60326_831173_1"

-DoutputTableName="xgb_825_cv2_388"

-DappendColNames="pid,label"

-DfeatureColNames="approve,max_month_count,self_pay_sum_add。。。;

 

最后 团队的力量真的很重要,能取得那么前的排名,主要是个人领导带着我一块儿作的,头脑风暴,开脑洞想特征真的很重要!

比赛连接以下

 https://tianchi.aliyun.com/competition/introduction.htm?spm=5176.100068.5678.1.FPmdTB&raceId=231607

相关文章
相关标签/搜索