将相互之间具有独立决策能力的分类器联合起来的方式就叫作集成分类器。事实证明通常情况下集成分类器的预测能力要比单个分类器的预测能力好得多。集成分类器就好比百万富翁节目里的“
问现场观众”选项,而单个分类器就是
“打电话问老友”。单个人的判断能力在很多情况下是无法跟集体的智慧抗衡的,所以对于同样一个问题,“问现场观众”会比“打电话问老友”把握性大得多(除非你的这位老友真的是爱因斯坦级别的人了,呵呵)。
假设现在有21个分类器,每个分类器的错误率是0.3,我们通过集成这些分类器能得到更好的结果吗?首先,我们用最简单的方式去集成这些分类器的预测结果-“投票”,比如说我们总是选择超过一半分类器预测的结果作为最终预测结果,在这里就是选出有大于或等于11的预测结果作为最终预测结果。很显然,如果用其中的某个分类器去做预测的话,错误率就是0.3了,如果用集成的方法,那么错误率就是:
![](http://hi.csdn.net/attachment/201107/12/0_1310472828P1AP.gif)
![](http://hi.csdn.net/attachment/201107/12/0_1310472842V6PO.gif)
错误概率密度如上图所示,从上图可得
,(n=21)因此集成分类器的错误率就只有0.026了,这比单个分类器的错误率0.3实在是要好太多了。
![](http://hi.csdn.net/attachment/201107/12/0_1310472853xQHE.gif)
不过话说回来,在实际情况中,弄21个具有独立判断能力的分类器难度比较大,现在分析一个只是集成三个分类器的情况吧:每个分类器的错误率仍然是0.3,同样是超过一半选票的结果才是最终的预测结果。那么集成分类器的错误率就是
,因此集成的结果也提高了一些,比起上面那个21个分类器的结果就差很多了。
![](http://hi.csdn.net/attachment/201107/12/0_1310472867MmKr.gif)
![](http://hi.csdn.net/attachment/201107/12/0_1310472879xUXt.gif)
从上面两个错误率可以看出:假设单个分类器的错误率不变,随着集成的分类器个数越多,集成分类器的错误率越低,如下图所示:
![](http://hi.csdn.net/attachment/201107/12/0_1310472890e5y1.gif)
当然被用来集成的分类器也不是随便选定的,要保证被选定的分类器的正确率大于0.5,当然如果单个分类器的错误率是超过0.5的话,那么集成分类器的错误率也会升高。因此,合成方法的关键是选取那些相互之间不相关的并且错误率低于0.5的分类器。
为什么集成方法会好呢?可以从下面三个方面进行考虑
1.数据量问题(statistical)
学习的过程可以看做是在一个假设空间H中寻找一个最优的假设,如果训练集的数据量特别小的时候,由于训练数据不充分,可以学习到很多不同的假设,而这些假设在训练集上的正确率确是相同的,此时就很难抉择哪个假设在测试集上会得到好的结果了。通过集成这些假设就可以减少选错分类器的风险。
2. 计算问题(computational)
很多学习算法都会遇到局部最优的这种状况,例如,神经网络是通过梯度下降来最小化错误率的,决策树算法是通过贪婪分裂的规则去扩展决策树的,假如训练集是足够充足的,学习算法也很难得到全局最优解的。通过把从不同起始点得到的分类器集成的方法可以更好的靠近全局最优解。
3.假设描述问题(representional)
大部分的应用中,机器学习算法很难用假设空间H中的假设去表达真实函数f,通过对假设空间H中的假设进行加权进而扩展假设空间H的规模或许能够表示真实函数f。
![](http://hi.csdn.net/attachment/201107/12/0_1310472903WWq4.gif)
集成分类器能解决单个分类器的训练数据量小,假设空间小,局部最优的三个问题,所以,集成分类器的预测能力会优于单个分类器的预测能力。(实在预测结果不能提高了,那就用集成的方法将几次预测结果进行合成吧,会有预想不到的收获)。
原文地址:http://blog.csdn.net/lidoublewen/article/details/6601137