长话短说stacking集成学习算法,保证你能看得懂(1)

Stacking是集成学习算法中一朵奇葩,只所以这样说,是因为它没有走Majority投票法和均值法的寻常路,但是集成学习的效果却非常优异,以致于成为各类机器学习竞赛中主流的技术。

目前网上充斥着各种学习心得和使用方法,不能说它们写得不好,只是大多数不太好懂。我也是看着别人的文章学会stacking的。现在我想努力把stacking说得更明白些,让喜欢尝试它的人更容易上手。

要想学会stacking,必须要了解它的思路。其实stacking的思路很简单,就是用多个基学习器的输出(初级学习的预测值)和真实值组合在一起,进行再学习,从而建立多组预测值与真实值更为准确的映射关系(次级学习的成果),这正是stacking比Majority投票法和均值法更准确的原因。

具体证明过程从略,我们从一个小例子中就能体会到这一点(如下图):

长话短说stacking集成学习算法,保证你能看得懂(1)_第1张图片

这是6个基学习器(更确切地说是6种学习器)在同一训练集上的预测结果,以及Majority投票法和均值法进行集成的结果,我们可以清楚地看到,无论是Majority投票法还是均值法,对于标红的部分都出现了集成错误,错误出现的原因是Majority投票法和均值法本身的缺陷造成的,这是算法基因的问题,没得救。

但是如果我们将6个模型的输出/预测值作为X_train,将真实值作为y_train,那么我们就可以组合各个模型预测结果,通过机器学习建立多个基模型的输出与真实值y_train的映射关系,注意这个映射关系是由(X_train,y_train)在整体上决定的,而不像Majority投票法和均值法那样在单个组合上进行决策,因此stacking这种集成操作确保了多个模型在意见不统一时,更容易选择正确的答案。这就是stacking准确性的主要原因。

搞清楚了stacking的思路,我们就可以进行具体的操作了。详见博文第二部分

推荐自编课程《零基础学python数据分析》
推荐自编简明预测分析教程(Python版)​​​​​​​

你可能感兴趣的:(机器学习)