以下内容笔记出自‘跟着迪哥学python数据分析与机器学习实战’,外加个人整理添加,仅供个人复习使用。
把算法和各种策略集中在一起,即可用于分类问题,也可用于回归问题。有3个核心思想,bagging、boosting和stacking。
boostrap aggregating,其中boostrap是一种有放回简单随机抽样,把多个基础模型放到一起,最后再求平均值。 如以决策树作为基础模型,首先对数据集进行随机采样,分别训练多个树模型,最终将结果整合在一起.
(1)并联形式,快速得到各基础模型,不相互干扰,但也存在问题,不能确保加进来的每一个基础模型都对结果产生促进作用,可能有个别模型反而拉后腿; (2)可以进行可视化展示,树模型本身具有这个优势; (3)相当于半自动特征选择,总是先用最好特征,在特征工程中一定程度上省时省力,适用于高维度数据,并且可以进行特征重要性评估。
核心思想是使得整体的效果最好,一般效果的树模型想加入是不行的。如何实现呢? 将Fm-1(x)作为前一轮得到的整体,这个整体中可能已经包含多个树模型,当再往这个整体中加一个树模型时,需要满足一个条件——新加入的h(xi)与前一轮的整体组合完之后,效果要比之前好。如何评价这个好坏?就看整体模型的损失是不是有所下降。 看图说话,假设数据真实值为1000,首先对树A进行预测,得到值950,残差为50。接下来为B模型,此时B模型不是去预测真实值1000,而是想办法弥补数A还有多少没做好(50),去预测50这个结果,假设树B的预测值为30,残差为20,此时树C开始预测剩下的残差20,最终结果是树A、B、C各自的结果加在一起950+30+18=998。
(这里举的例子是一个回归问题的例子)
stacking模型是使用多个不同算法模型一起完成一个任务。例如树模型、逻辑回归、支持向量机、神经网络等,将各算法的结果当做数据特征传入第二阶段的总分类器中,此处只需要选择一个分类器即可,得到最终结果。 计算细节如下,第一阶段借助于交叉验证思想,避免重复使用训练集,第二阶段只需简单完成一次建模任务就好:
