前言
这是 datawhale 数据挖掘学习的最后一次打卡——模型融合,内容很好理解,就是将训练出来的多个模型融合在一起,集成,形成一个效果更好的模型。
这次的任务基本上是比较独立的,既没有用到 task3 的特征工程内容,也没有用到 task4 中创建的模型,相对比较独立。不过这次打卡不打算粘贴什么代码了,代码全都在教程里,这里只记录一下我的理解。
简而言之,模型的融合方法大致有以下三种:
- 加权融合
- stacking/blending
- boosting/bagging (树模型的集成方法)
stacking/blending 都属于两层模型结构,因此归为一类;boosting/bagging 都是针对树模型做的,因此也同样归为一类。下面一一做一个简单的介绍
加权融合
加权融合的思路很好理解,就是将各个分类/回归器的预测结果进行不同方式的融合。根据模型是回归模型还是分类模型,融合的方式有所不同。
分类模型通常是以投票的方式进行。即多个模型预测同一个数据,选取预测结果中类别多的作为该样本的输出。
回归模型主要是加权融合的方式。典型的有算数平均融合(所有回归结果取平均值)、几何平均融合(所有回归结果相乘后开 n 次根号,n 为回归结果数)和加权平均(根据分配给分类器不同的权值对结果加权求和然后除以 n 取均值)。
stacking/blending
stacking/blending 都属于两层模型结构。
二者都是先训练出多个模型(分类模型或是回归模型都可),然后针对每个模型对训练样本的输出再进行训练。具体的,将每个模型的输出再次当做下一层模型的输入,继续训练,最后训练出一个可以整合所有模型输出的模型。
二者最大的区别是在于训练集的划分问题。stacking 做的过程中把训练集当成一个整体,输入到下一层模型的输出数据已经被用来训练第一层模型;而 blending 做的时候,把训练集划继续分为第一层模型训练集和第二层模型训练集,这样就避免了两层模型训练时使用相同的数据。
需要注意的一点是,为了避免过拟合,无论使用两个方法中的哪一个,都需要让第二层模型尽可能地简单。
blending 相对于 stacking 的优缺点对比:
优点:
- 相比于 stacking 简单(划分数据集简单粗暴,不需要使用交叉验证)。
- 两层模型使用了不一样的数据进行训练,避免了信息泄露。
缺点:
- 由于划分数据界限清晰,导致的就是两层模型训练的数据都比较少。
- 由于没有使用交叉验证,可能会导致过拟合,使模型泛化能力降低。
boosting/bagging
boosting 和 bagging 都是树模型集成学习的方法。两者在上一节介绍树模型时都有介绍。不同的树模型内部已经使用了不同的树模型集成方法。根据使用的集成方法不同,分为不同的算法。例如,XGBoost 就属于典型的 boosting 方法;而随机森林就是典型的 bagging 方法。
由于在训练模型时,内部已经集成了这两种方法,因此后续自己再做模型融合时,就不再需要使用这两种方法了。
最后
还是得为这些天看数据挖掘的教程做个总结。教程很好,能学到不少东西,尤其是配合这个很典型的比赛,边学边练。不过遗憾的是,由于各种原因,我并没有花很长时间在这里,比赛也没打,所以进步有限。在这个过程里体验了一下数据挖掘比赛的整个流程,也体验了很多机器学习库的使用,还是有一定收获的。
最后,希望自己以后也能独自来打天池的比赛,如果能体验到上榜的感觉就更帅了!现在吧,就只是想想,哈哈。