一、数据预处理
由于所给数据“脏”数据比较多,所以首先需要做大量的预处理,包括:
1.处理类型错误的数据。如‘A25’列中数据应该为数值型却混入了一个‘1900/3/10 0:00’时间数据。
2.处理时间数据的异常。
3.处理明显的数值异常。
4.使用中位数填充缺失值
二、特征工程
特征工程是决定一个比赛的关键,因此在特征上我们做了大量处理,包括:
1.对连续型特征进行离散化编码。由于数据集中的数据包含大量异常值,对连续的特征进行离散化编码可以一定程度上降低异常值带来的影响。离散化的方法包括:
(1)对于正态性的特征,根据分位数离散化。
(2)对于有大量偏离中心的数据(异常值),使用众数进行离散化编码,即等于众数,大于众数,小于众数。
(3)对于时间数据根据时段编码,即分成早上、下午、晚间
(4)根据数据的分布进行离散化,如对id的离散化。
2.构造组合特征。将基础数据通过加减乘除进行两两组合,从中选择重要性比较高或者有意义的特征加入模型训练。
3.离散特征对target(‘收率’)聚合求统计值。使用离散化后的特征(‘B14、B12’等)对收率进行聚合操作,然后求均值、最大值、最小值和数量。
4.rank排序特征。对连续的特征进行排序可以得到排序特征,排序特征对于异常数据具有较强的鲁棒性,使得模型更加稳定,降低过拟合的风险。
5.DBSCAN聚类特征。DBSCAN聚类的主要作用也是可以标识离群点。
6.业务相关特征。主要是仿照收率的定义,使用b14去除以其他原料的和。
三、特征选择
1.删除常量特征
2.删除缺失值多,变化小的特征
3.根据模型筛选
四、模型与模型融合
模型主要使用了lightgbm和xgboost,使用了stacking的融合方式。