/KDD-CUP-2019

Context-Aware Multi-Modal Transportation Recommendation

Primary LanguageJupyter Notebook

KDD CUP 2019

Rank 12

F1 0.701

原始数据能用到的特征分为三块。

  1. pid的属性(三分之一缺失)

  2. OD延伸出来的距离,角度和本身的经纬度数值信息

  3. plan里的信息

根据ijcai-2018 植物大佬的经验,我们希望能用OD的信息来表征pid,用pid的信息表征OD,而且上面的数据探索也证明了交叉特征对于模型会有帮助, 实际在后续的验证过程中,直接乘除或者利用逻辑符变成二值特征(比如距离是否大于5公里和时间是否大于晚上九点,是的话为1,不是为0)并没有什么作用, 所以用xlearn里的FFM进行二分类预测,并把输出概率作为特征加入到LightGBM多分类模型里。

除了以上提到的原始信息之外,还加入了以下特征,在特征重要性分析时,还挺重要的。

  1. OD的功能区表达embedding(百度这次比赛源于论文“Joint Representation Learning for Multi-Modal Transportation Recommendation”,比赛 里的话都是从论文里摘抄的,不过论文更像是推荐的召回阶段,即matching,我们做的是rank,所以我读了几篇论文后面的引文,找到了这个获取OD表达 的方法,感觉这样就不用依赖于外部数据,通过用户出行规律来划分OD的功能区,比如办公区,娱乐区,住宅区等);

  2. OD的frequency encoding,比直接类别编码好用;

  3. pid上一下请求时间差,下一次请求时间差,从同样起点请求时间差,从同样终点请求时间差;

  4. 同类用户出行距离的方差、均值、最大值和最小值;

  5. 同类用户从同一起点,百度地图推荐交通方式的频率,比如A用户从a点搜了10次,在这10次里,交通方式2推荐了5次,那么频率就是0.5,所以这一个 特征实际上有11列;

  6. 还有杂七杂八的一些特征;

code里baseline_phase_2是主文件,先运行其它文件生成特征存在output文件夹里,再运行主文件。