7 用AdaBoost算法改进分类(Improving classification with the AdaBoost meta-algorithm)
元算法(meta-algorithms)是一种将各种算法组合的方法,用于消除不同机器学习算法求解问题时的差异性。
分类不平衡(classification imbalance):各类别包含样本数量差异极大。
7.1 使用多样本数据集的分类器(Classifiers using multiple samples of the dataset)
AdaBoost
优点:泛化错误低,易于编程,适用于大多数分类器,无需参数调整
缺点:对异常值敏感
适用范围:数值和标称值
**集成方法(ensemble methods):**即元算法(meta-algorithms),组合多个分类器。集成方法可以组合不同算法,组合设置了不同参数的同一算法,或将数据集的不同部分分配给不同的分类器。
7.1.1 数据随机重采样构建分类器:Bagging(Building classifiers from randomly resampled data: bagging)
自助聚集(Bootstrap aggreging),即Bagging
(1)生成 S S S个新数据集:从原始数据集中抽取数据 S S S次,生成 S S S个新数据集。新数据集的大小与原始数据集相同,数据是从原始数据集中随机抽取得到。新数据集允许包含重复数据,或不包含原始数据集中的某些数据。
(2)训练:新建 S S S个数据集后,分别对每个数据集应用一种学习算法,得到 S S S个分类器。
(3)推理: S S S个分类器分别对新数据预测,然后投票多数表决(take a majority vote)。
7.1.2 Boosting
Boosting:各分类器依次串行训练,每个新分类器都专注于处理其之前分类器错分的数据。Boosting的输出是所有分类器输出的加权和,各分类器权重(weights)取决于前次迭代各分类器的表现。
- 采集:
- 预处理:取决于弱分类器类型,通常弱分类器形式简单,如单层决策树(decision stumps)
- 分析:
- 训练:主要时间消耗
- 测试:计算错误率
- 使用:二元分类
7.2 训练:专注处理错分样本改进分类器(Train: improving the classifier by focusing on errors)
“弱”分类器:略优于随机猜测;
“强”分类器:远优于随机猜测。
AdaBoost:自适应提升(adaptive boosting)算法,训练步骤如下:
训练数据集 { x i , y i } \left\{ \mathbf{x}_i, y_i \right\} { xi,yi}, i = 1 , 2 , ⋯   , m i = 1, 2, \cdots, m i=1,2,⋯,m。
为训练集中每条样本 x i \mathbf{x}_i xi分配一个权值 d i d_i di,样本权值向量记为 d = [ d 1 , d 2 , ⋯   , d m ] \mathbf{d} = \left[ d_1, d_2, \cdots, d_m \right] d=[d1,d2,⋯,dm]。
(1)初始化:
弱分类器 t = 1 t = 1 t=1的样本权值向量 d ( 1 ) \mathbf{d}^{(1)} d(1)初始设置为 d 1 = d 2 = ⋯ = d m d_1 = d_2 = \cdots = d_m d1=d2=⋯=dm,在训练数据集上训练弱分类器 t = 1 t = 1 t=1(寻找最佳分类特征、门限及不等式类型等);
(2)迭代:
计算弱分类器 ( t − 1 ) (t - 1) (t−1)的分类错误率
KaTeX parse error: Expected '}', got '#' at position 27: … = \frac{\text{#̲ of incorrectly…
计算弱分类器 ( t − 1 ) (t - 1) (t−1)的权值
α = 1 2 ln ( 1 − ε ε ) \alpha = \frac{1}{2} \ln \left( \frac{1 - \varepsilon}{\varepsilon} \right) α=21ln(ε1−ε)
增加弱分类器 t t t,根据弱分类器 ( t − 1 ) (t - 1) (t−1)的分类错误率计算其样本权值向量 d ( t ) \mathbf{d}^{(t)} d(t),使已被正确分类样本的权值减少,未被正确分类样本的权值增加:
d i ( t + 1 ) = { d i