以下笔记来自于学堂在线上清华大学的视频网课《80240372X 数据挖掘:理论与算法》,本笔记仅用于个人学习。如有错误,感谢指正。
一、集成学习(ensemble learning)
- 理解:将训练集传到多个分类器,再有策略地将结果结合在一起,结果综合考虑了各个分类器的分类结果。
- 动机:单个分类器的性能不高,多个分类器能提高分类的性能;降低坏结果的可能性(如:不好的初始化结果导致的单个分类器出现的局部最优)。
- 集成学习是一大门类算法,分为Bagging和Boosting两大类算法。
- 过程:
- 解决的问题:
1.模型选择问题:综合考虑了多个分类器的结果,不需要从中进行挑选。
2.讲问题分解:不去生成一个复杂的分界面,而是组合多个简单的分界面。
二、算法核心
- 分类器的选择:
1.选择不同算法的分类器。
2.选择相同算法,不同训练的分类器(包括不同的参数、训练样本)。
另外:弱分类器的效果更好(比如决策树树桩,不需要分类效果很强)。 - 投票机制:
1.少数服从多数(每个分类器的权重相同)。
2.加权投票。
三、Bagging:基于Bootstrap Aggregating的分类器
- 思想:有放回采样的思想,用这种办法采样训练集,使得不同分类器的训练样本不同。
- 过程:对训练样本采样K次,传入对应的分类器中,训练后得到K个分类器;测试数据传入K个分类器,得到K个结果,这K个训练结果进行投票,得到最终输出。
- 实例:随机森林RF
1.随机森林与决策树:随机森林由多个决策树构成(通常至少500棵),即这种继承算法的内部分类器为决策树。
2.训练集与测试集:对训练集随机采样,从而使不同的决策树拥有不同的训练数据。并且从数学极限的角度来说,大约有2/3的数据将被选中做训练,余下从未被选中的数据集将作为测试集使用。
3.使决策树结果多样的方法:每个决策树的训练集不同;每个决策树的属性需要不同,每个树仅需要用部分属性。
4.RF的优势:不需要人工分训练集、测试集;精确度非常高,且调的参数很少;决策树会有过学习的问题(所以需要剪枝),但在RF里不需要处理过学习的问题。
三点五、Stacking
- 思想:在Bagging的基础上,不给所有分类器的输出结果相同权重,这个权重需要被训练。
- 实现:把分类器的输出作为输入,输进一个新的分类器,该新的分类器也将被训练,训练的是前分类器输出结果的权重。
四、Boosting
- Boosting与Bagging:Bagging的内部分类器之间无关,并行处理,而且Bagging的内部分类器数量巨大;Bagging的分类器之间是有顺序的,且一共只有三个分类器。
- 分类器的顺序生成:
1.第一个分类器C1:挑出一部分数据作为训练集,训练C1。
2.第二个分类器C2:将全部训练集输入C1,得到输出结果,输出结果将有对有错,分别挑出部分输出正确和输出错误的结果,形成新的数据集,该数据集作为C2的训练集输入,其中,C1分错的数据集是C2要特别学习的。
3.第三个分类器C3:将全部训练集输入到C1和C2,挑出输出结果中C1和C2不同的数据集,作为训练集输入到C3中训练。
总结:
C1是初始分类器,
C2主要解决C1跑错的数据,
C3主要解决C1和C2结果不同的数据。
所以当测试数据输入后,若C1和C2结果相同,那么直接输出结果,若C1和C2结果不同,那么由C3输出结果 - 优势:
1.后面的分类器是针对前面分类器错误的结果,使分类器尽快获得较高的性能。
2.基础分类器可以不用很强大,非常弱也可以(比如二分类问题,只要比随机猜的50%强一点就行)。 - 实例:AdaBoost(数据挖掘十大算法之一)、RegionBoost。
其中,AdaBoost训练集收敛效果很好很快,RegionBoost会慢很多,且不会有很好的收敛性。
然而从测试集来看,RegionBoost会好很多,所以RegionBoost对未知样本的测试能力要更强,训练样本的准确率才是我们要关注的问题。