bagging 是个啥?
bagging 是集成策略的一种,通过 人多力量大的道理(哦 ,不。)。
通过 各个基学习器的误差相互独立的假设 ,我们知道,基学习器越多,我们集成后的算法能力就越强大。
bagging的差异性是个啥?
(所以啊,我们看看和boost 不同的、获得其 基学习器 差异性的方法吧:)
训练集一个m个样本,我们?放回的取m个样本
bagging 是 对一个 训练集进行有放回的采样, 意思就是,我总共要取m个样本,第一次,我抓到了其中一个样本,把它copy到我的篮子里,然后把这个样本放回去,然后又在训练集中取一个样本放自己篮子;里,然后又放回去,这样,我们的篮子里有了m个样本,
然后,我们用这m个样本来生成学习器
用这种方式, 来获得多个学习器之间的差异性。
补: 通过计算极限(对,数学上的那个),我们可以知道 基学习器只使用了训练集中63.2%的样本,剩下的36.8%取不到。
有了训练集,怎么得到最终的预测结果?
我们可能会得到K个训练集, 这个K是我们自己选的,
嗯嗯,我们有了K个训练集, 通过这K个训练集我们可以训练得到 K个基分类器(同质或异质的)
最终决策时, 可以简单的用投票规则。
如果出现票数相同:1。可以随机选一个, 2.可以考察学习器的置信度,哪个厉害选哪个。
随机森林是个啥?
随机森林是bagging的一个使用方式,其基学习器是用的决策树。
但有不同的地方哦。
不同: 我们随机森林会有很多的基学习器,每个学习器是决策树。
以前,我们给决策树选择分裂属性时,总是要考察所有属性,然后选择其中最棒的那个属性来分类节点(就像二叉树一样,如果该属性只有两个取值,那么按照该属性的每个取值,把所有样本分成两类,所以啊,这时就像二叉树一样)
那么,现在呢?
我们每次打算要 分裂节点时,我们 随机的从所有属性中 抽 K个属性(K,自定),然后在这个K中选最优的属性
所以啊,随机森林比一般的bagging棒啊!
为什么呢?
我们之前说过那个假设,学习器之间差异性越大时,当学习器数量越多时,性能越好。
以前,bagging只有通过 训练集 的 有放回抽取样本 制造了 分类器间的多样性,
但随机森林也有,并且,随机森林还通过 随机属性子集的选取,又比bagging多了个 差异性来源,岂不是更棒了~~~~~~
88