/MerTech-Challenge-Track2

百度AI比赛:点击反欺诈预测(进行中),排名7/424

Primary LanguageJupyter Notebook

README

MarTech Challenge Track 2 点击反欺诈预测

https://aistudio.baidu.com/aistudio/competition/detail/22

提供约50万次点击数据,请预测用户的点击行为是否为正常点击,还是作弊行为。

标签:反欺诈预测比赛时间:2020/05/10 - 2020/07/05

结果:

排名:7/424(2020-07-15)已结束

模型:catboost单模10折交叉验证

正确率:89.253%

代码:

process.py:

对原始数据进行预处理得到输入分类器的feature

  • object:选取topk,进行label_encoder

  • osv:正则表达式匹配出正确的x.x.x版本

  • ppi:用rf预测了ppi的缺失信息

  • 其他细节……

classify2.py:(用的A榜的模型,用的特征太多不太好,后来删了点)

对简单的类别信息,catboost的处理更好。如果加上很多复杂特征,lightgbm会好一点。

使用catboost进行10折交叉验证,取加权预测平均,搜索阈值,得到预测模型。

然后利用leak信息,使用android和ntt信息找test和train中的相似信息,直接transform一部分label,对于结果有一定的提升(+0.03)。

graft_classify2.py:(最后提交的文件)

运用嫁接学习的方法,将A榜数据大于0.9令为1,小于0.1的令为0,接到B榜训练集后面,数据集的改变能提升很多(+0.1)

notebook实验:

主要是探索性的

process&EDA.ipynb

process:

  • 对数据类型进行合理的转换,由于数据占内存不大,所以没有做内存优化(uint的转换)

EDA:

  • 缺失值的展示(lan)
  • 在后面的EDA中得知,package=0,android=0,dev_xx=0的值都是缺失,用rf做了缺失值的预测。
  • 描述统计的展示:.
    • object:count,unique,top,freq。
    • numerical:min,mean,max,25%,50%,75%
  • 分布展示:media_id,location,label,fea_hash,fea1_hash
  • 箱线图:
  • 相关及其显著性检验,包括相关矩阵
  • 各列与label关系的数据透析

final_feature.ipynb

对原始数据进行预处理:

  • object:选取topk,label_encoder
  • 特殊:osv→正则表达式匹配出正确的x.x.x版本

构造统计特征(groupby):

  • count,top,freq

classfication:

  • lightgmb,10折fold

对于特征工程和预处理做了不一样的改进

用rf预测了ppi,package等缺失信息,对于dev的信息做了两个新的特征工程

对类别特征进行了交叉特征信息,使用catboost进行预测,对类别信息,catboost的处理更好。

使用android和ntt信息找test和train中的相似信息,直接transform一部分label,相当于使用leak的信息,对于结果有不错的提升。

特征:

最后还是抛弃了比较多的统计特征,catboost对于简单类别特征的提升非常不错,选择了较好的几个特征(几乎都是类别特征)进行catboost预测,主要还是单模,模型融合下次比赛再玩把。

展望:

对于leak,找到更多train和test相近的信息,对于答案直接transform,对于预测剔除这些数据后重新做训练集