这个比赛算是我第一个做的数值类特征的比赛,主要以学习为主。学习的内容包括:
- 数值特征数据的特征工程,从数据中构建算法需要的特征
- 模型使用以及调参(包括 Lightgb, Xgboost 等等)
比赛内容和数据分析
这部分主要搞清楚几个问题:
- 比赛内容是什么,以及给了哪些数据
- 是分类问题还是回归问题
首先看赛题:
本赛题基于位置数据对海上目标进行智能识别和作业行为分析,要求选手通过分析渔船北斗设备位置数据,得出该船的生产作业行为,具体判断出是拖网作业、围网作业还是流刺网作业。初赛将提供 11000 条 (其中 7000 条训练数据、2000 条 testA、2000 条 testB) 渔船轨迹北斗数据。数据包含脱敏后的渔船 ID、经纬度坐标、上报时间、速度、航向信息,由于真实场景下海上环境复杂,经常出现信号丢失,设备故障等原因导致的上报坐标错误、上报数据丢失、甚至有些设备疯狂上报等。
数据示例:
- 渔船 ID:渔船的唯一识别,结果文件以此 ID 为标示
- x: 渔船在平面坐标系的 x 轴坐标
- y: 渔船在平面坐标系的 y 轴坐标
- 速度:渔船当前时刻航速,单位节
- 方向:渔船当前时刻航首向,单位度
- time:数据上报时刻,单位月日 时:分
- type:渔船 label,作业类型
可以看出这是一个分类问题,所给数据是数值型特征。再来看一下结果的评价指标:
数据预处理
因为数据给的是一些 csv 文件,所以首先需要对所有的文件进行合并,生成一个训练文件和一个测试文件。这里是我参考的 baseline。
baseline 采用的文件合并代码如下:
1 | import pandas as pd |
这个代码没什么问题,但是实际跑起来却很慢,代码的瓶颈在于读取的数据是串行的,因此我们可以改造一个并行的加速版本。