Python3入门机器学习之11.5 Ada Boosting 和 Gradient Boosting
Python3入门机器学习
11.5 Ada Boosting 和 Gradient Boosting
Boosting概述:
集成多个模型,每个模型都在尝试增强(Boosting)整体的效果。
1.Ada Boosting:
Ada Boosting是这样的一个思路,以简单的回归问题为例:
首先我们有原始的数据集,我们可以用某一种学习方法对原始的数据集进行学习,学习完成之后,显然所有的算法都会犯错误,相应的我们得到将数据点分成深色、浅色的结果。其中浅色的点就是被我们的模型近乎毫无差别的预测成功的点,而深色的点和我们得到的模型差距比较远。所以,我们形成的新的样本点中数据和数据之间产生了权重的差别。我们让在上一个模型中没有被很好学习的点的权值增大一些,而在上一个模型中已经被很好学习的点的权值减小一些,这样形成的新的样本数据我们再使用某一种学习算法进行学习。由于有权值上的差距,所以我们第二次的学习结果也变了。过程如上图,以此类推…在这个过程中,我们每一次生成的子模型都是想办法弥补上一次模型没有被成功预测的那些样本点,换句话说就是每一个子模型都在推动(Boost)上一个模型所犯的错误。经过这个过程,Ada Boosting也可以生成很多子模型,最终用这些子模型综合投票,作为Ada Boosting这个模型整体最终的学习结果。
2.Gradient Boosting:
如:
训练一个模型m1,产生错误e1,针对e1训练第二个模型m2,产生错误e2。
换句话说m2的作用就是能够预测出我们的模型m1犯的错误是什么,也就是说对于m2来说它的样本相应的输出值是m1所犯的这些错误,这样我们训练出的m2拟合e1数据。
针对e2训练第二个模型m3,产生错误e3…
最终预测结果是:m1+m2+m3+…