1st Competition of Datawhale: the car price prediction 2nd part
参赛第三部分。这部分也超出我的知识体系范畴之外。所以主要是了解,并试图理解背景知识。
Task5 模型融合
模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式。
简单加权融合:
- 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
- 分类:投票(Voting)
- 综合:排序融合(Rank averaging),log融合
stacking/blending:(引用自连接)
- 构建多层模型,并利用预测结果再拟合预测。
Stacking特点
使用stacking,组合1000多个模型,有时甚至要计算几十个小时。但是,这些怪物般的集成方法同样有着它的用处:
(1)它可以帮你打败当前学术界性能最好的算法 (真的是这样吧,不明觉厉的激动感~~!)
(2)我们有可能将集成的知识迁移到到简单的分类器上
(3)自动化的大型集成策略可以通过添加正则项有效的对抗过拟合,而且并不需要太多的调参和特征选择。所以从原则上讲,stacking非常适合于那些“懒人”
(4)这是目前提升机器学习效果最好的方法,或者说是最效率的方法human ensemble learning
Stacking和Blending对比
1.Blending方式和Stacking方式很类似,相比Stacking更简单点,两者区别是:blending是直接准备好一部分10%留出集只在留出集上继续预测,用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。
2.blending 的优点是:比stacking简单,不会造成数据穿越(所谓数据创越,就比如训练部分数据时候用了全局的统计特征,导致模型效果过分的好),generalizers和stackers使用不同的数据,可以随时添加其他模型到blender中。
3.缺点在于:blending只使用了一部分数据集作为留出集进行验证,而stacking使用多折交叉验证,比使用单一留出集更加稳健
4.两个方法都挺好,看偏好了,可以一部分做Blending、一部分做Stacking。
boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
提升方法与AdaBoost算法见:https://blog.csdn.net/weixin_39910711/article/details/104005270
https://zhuanlan.zhihu.com/p/79861749
https://blog.csdn.net/hguo11/article/details/70495671
https://baijiahao.baidu.com/s?id=1633580172255481867&wfr=spider&for=pc
比赛总结
说是比赛,我觉得更像是一个观众。就像一个小孩子第一次看篮球赛一样,搞不清时间规则,分不清三分线三秒区和走步一样。更多的是知道了关于回归类预测模型的框架,比赛的流程。总的来说是一个开眼界的过程。
也跟群里的,同小组的大神们交流了,发现了很多的不足,但是也知道了想到达到下一个层次的路径。
总结下来,比赛过后我要这样做才能更上一层楼:
逃不开的数学,算法(math & algorithm,m先生和a先生)
- 补课第一门,计算机程序基础,只会python一些语法还是不够的。
- 补课第二门,离散数学和概率统计,很多特征值的理解,其实就是数学概念上的理解。
- 补课第三门,算法导论,只是导论就够深了。。。
必要的熟练度
- 练习编程,码代码的能力,熟练了才能更好的练习,验证算法。
- 有些前沿的文章都是英语的,英语也得熟络,这个还好
- 模型建立和工具包的套路。其实这次比赛发现了很多工具包,简直就是另一个世界的大门敞开了。很多工具对数据的处理都有独到的地方。利用好它们的独门绝技,多多翻看工具包的手册。