提升(boosting)方法是一种常用的统计学习方法,在分类问题中,通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。
AdaBoost算法
1.基本思想:
Kearns和Valiant提出了“强可学习”(strongly learnable)和“弱可学习”(weakly learnable):在概率近似正确(probably approximately correct,PAC)学习框架下,一个概念如果存在多项式的学习算法学习它,并且正确率很高,那么这个概念就被称为强可学习的;一个概念,如果存在多项式的学习算法学习它,并且正确率只比随机猜测好一点,那么这个概念称为弱可学习的。后来Scphaire证明,强可学习和若可学习是等价的。
而对于分类问题而言,给定一个训练样本,求比较粗糙的分类规则比求精确的分类规则要容易得多。而Scphaire证明,强可学习和若可学习是等价的,故我们是否可以通过先找到一些弱分类器,然后寻求将这些弱分类器提升为强分类器的方法,这便是boosting的由来。
大多数的提升方法都是通过改变数据的概率分布(训练数据的权值分布),针对不同的训练数据调用弱学习算法学习一系列弱分类器,这样针对boosting需要解决两个问题:
1.如何改变训练数据的权值或概率分布
2.如何将弱分类器组合为一个强分类器
2.AdaBoost算法:
输入:训练数据集
T={(x1,y1),(x2,y2),...(xN,yN)}
,其中
xi∈Rn
,
yi∈{−1,+1}
;某个弱学习算法
g(x)
输出:最终的分类器
G(x)
1.初始化训练数据的权值
D1={w11,...,w1i,...w1N}
,
w1i=1N
2.
a)使用具有权值分布
Dm
的训练数据集学习,得到基本分类器
gm(x)
;
b)计算
gm(x)
在训练数据上的分类误差率,
em=P(gm(xi)≠yi)=∑Ni=1wmiI(gm(xi)≠yi)
;
c)计算
gm(x)
的系数,
αm=12log1−emem
;(
αm
随着
em的减小而增大,说明分类误差率小的分类器在最终的分类器占据的权重较大
)
d)更新训练数据的权值分布,
w(m+1)i=wmiZmexp(−αyigm(xi)))
,其中
Zm=∑Ni=1wmiexp(−αyigm(xi))
,是规范化因子,目的是使得
Dm+1
成为一个概率分布;(当分类错误时,
−αyigm(xi)=α
;当分类争正确时,
−αyigm(xi)=−α
,故错误的分类样本权值将增大,正确分类样本的权值将减小)
3.通过基本分类器的线性组合获得最终的分类器,
G(x)=sign(∑Ni=1αmGm(x))
随机森林
随机森林(random forest)是通过随机的方式,产生一系列的决策树(森林),然后利用投票机制进行分类或者回归。主要由四部分组成:
- 样本的随机选择
- 特征的随机选择
- 决策树的生成
- 随机森林投票决策
1.样本的随机选择
给定一个样本集,包含
N
个训练样本,我们又放回的选取
2.特征的随机选择
针对上面的
N
个样本,假设每个样本是一个长度为
3.决策树的生成
根据之前介绍的决策树的生成方式进行决策树的生成;比如信息增益(ID3 tree),信息增益比(C4.5 tree)或者Gini基数(CART)
4.随机森林投票决策
通过上面的三步走,我们可以得到一棵决策树,我们可以重复这样的过程H次,就得到了H棵决策树。然后来了一个测试样本,我们就可以用每一棵决策树都对它分类一遍,得到了H个分类结果。这时,我们可以使用简单的投票机制,或者该测试样本的最终分类结果。
优点:
- 它能够处理很高维度(feature很多)的数据,并且不用做特征选择;
- 由于随机选择样本导致的每次学习决策树使用不同训练集,所以可以一定程度上避免过拟合;
缺点:
- 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合;
- 对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的