一、集成学习浅谈
集成算法利用统计学中的采样原理训练出数量庞大的模型再利用投票原则进行预测,正所谓三个臭皮匠顶的上一个诸葛亮,许多弱学习器集成起来可以达到很好的效果。
集成学习算法主要分为Bagging, Boosting, Stacking这几种, 在Kaggle竞赛中使用的十分广泛.
Bagging
随机有放回采样, 可以并行训练多个模型, 常用的随机森林属于Bagging的进化版
Boosting
Boogting与Bagging的区别主要在于boosting采用的是加大预测错误样本的权重的方法对于模型进行不断的修正, 所以模型之间会产生影响, 只能够串行执行. Xgboost和我下面要介绍的Catboost就属于这一种.
其中Gradient Boosting属于Boosting中的一大类算法, 其基本思想是依据当前模型损失函数的负梯度信息来训练新加如的弱分类器, 然后将其以累加的方式加入现有模型中. LightGBM也在Kaggle竞赛中应用极广, 效果很好.
二、CatBoost
在这个比赛中我主要用的是Yandex公司开源的CatBoost库, 这个库在Kaggle中的热度没有Xgboost和LightGBM高, 但是经我尝试CatBoost的效果还是非常令人满意的.
发现这个库也有一段曲折的经历, 在闲鱼上面花了几块钱买下来Coursera上机器学习专题的所有课程后, 毛子做的一个课程吸引了我的注意力."How to Win a Data Science Competition: Learn from Top Kagglers", 这里面一个毛妹介绍了一下这个库, 搜了一下它跟Xgboost和lightGBM的比较, 发现这个库也是相当不错.
CatBoost与Xgboost有点不同, CatBoost采用的是平衡树, 运算的速度比Xgboost快了不少, Xgboost巨慢的速度也是影响我们调参的一个障碍. CatBoost还可以直接对于Category进行处理, 这也是它得名的原因, 这就免去了我们在特征工程中对于种类数据的独热处理.
在Kaggle的leadboard上面我们经常会看见很多大神的名字以洛夫, 斯基, 娃等俄语专有的词缀结尾, 中美虽然几乎各自占据了AI产业界的半壁江山, 但是俄罗斯的人才实力也是绝对不容忽视的, 从ACM-ICPC的榜单上我们就可以窥知一二, 苏联解体已经近三十年了, 但是苏式这种极为扎实的理科教育还是为一大批独联体国家及苏联曾经的卫星国培养出了许许多多相当优秀的人才.
三、Kaggle实战代码
总得而言,Catboost的效果比决策树的效果好了很多,0.79425分,能够排到2270/10162
https://colab.research.google.com/drive/10-KvwlPOzJcj0r7Xis95JIza0mYOsyYH