-
概览
- 由于数据量太少,异常值的波动影响较大
- 连换下特征顺序,线下几乎没变,但是线上差异很大,感觉很容易过拟合测试集
- automl,tree_stacking,selector和blending之间的各种组合没有细测(因为评分次数过少)
- 各种参数没有调优
-
整体项目框架
- processing: 特征预处理,主要参考鱼佬的baseline,在那基础上加了自己的理解,并做了代码的整理封装
- tree_models:通过stacking方式进行模型融合,主要参考鱼佬的baseline,同样做了代码的整理封装
- selector:通过蛇佬的思路,用贪婪算法的方式求得局部最优的特征组合,做了代码的封装整理,并修改了一些部分
- automl:h20的automl,主要参考蛇佬的baseline,发现模型数量越多并不一定效果更好(反正我测了320个模型分数低于20个模型的分数)
- blending:tree_models+automl的简单加权融合,其实blending是用boostrap方法的,此处没用boostrap。ps. tree_models之前测试过boostrap,线下效果很好,线上就是渣渣,所以没用
- main:整个项目的整合
-
题外话
- 题目真的不太好做,数据量少特征逻辑性差
- 很多神仙特征搞不明白,但是就是能上分,特征解释性太差了
- 真的佩服前排的那些大佬的
-
扩展
- 之前打算用构造好的特征做cnn或者用AutoEncoder进行特征的抽取的,但是后面实现了selector和automl,感觉应该是差不多的作用
- 本来想打算将stacking封装一下的,写到一半没有继续写下去了,还有带配置的fit、predict和非sklearn的模型怎么集成进去还需要扩展,现在只实现了sklearn的api的集成
- 因为有解释性的特征比较难找,所以可以尝试暴力生成特征,然后通过大量模型自己实现模型的赛选学习,从而达到上分