一、集成学习介绍

其中的个体学习器就是之前学习的算法:

  • 1.决策树算法
  • 2.BP神经网络
  • § 第八章  集成学习 - 图6

1、”…集成”表示集成器中只有同种类型的个体学习器。例如,”决策树集成”中全是决策树,”神经网络决策树”中全是神经网络,这时的集成是同质的(homogenous)。同质集成中的个体学习器为”基学习器”,相应的学习算法称为”基学习算法”。(base algorithm)
不同类型的学习器是异质的(heterogenous),这时的个体学习器称为”组件学习器”(component lerner)。
2、弱学习器(weak learner)相对比与单一的学习器而言有优越的泛化能力
3、集成学习是通过投票方式进行解决的,例子如下

分类器\数据 测试例1 测试例2 测试例3
h1 ×
h2 ×
h3 ×
集成学习 √(两对一错算对)

假设集成通过简单投票法结合§ 第八章  集成学习 - 图7个基分类器,若有超过半数的基分类器正确,则集成分类就正确:
§ 第八章  集成学习 - 图8
其中的§ 第八章  集成学习 - 图9函数,将整数变为1,负数变为-1,0仍然为0
4、单个分类器的错误率
§ 第八章  集成学习 - 图10
假设分类的错误率相互独立,集成学习的错误率为:
§ 第八章  集成学习 - 图11
推导过程:由基分类器相互独立,假设随机变量§ 第八章  集成学习 - 图12§ 第八章  集成学习 - 图13个基分类器分类正确的次数,那么§ 第八章  集成学习 - 图14,设§ 第八章  集成学习 - 图15为每一个分类器分类正确的次数,则§ 第八章  集成学习 - 图16,那么有
§ 第八章  集成学习 - 图17
证明过程:
§ 第八章  集成学习 - 图18
根据Hoeffding不等式得知
§ 第八章  集成学习 - 图19
§ 第八章  集成学习 - 图20
§ 第八章  集成学习 - 图21
由式子1可以得到,当集成学习中的个体分类器数目§ 第八章  集成学习 - 图22增大时,集成的错误率呈指数级下降,最终趋于0.
但是,基学习器的误差不可能相互独立,因为个体学习器是为了解决同一个问题而训练的,它们之间不可能相互独立。个体学习器的”准确性”和”多样性”时相互冲突的
根据个体学习器的生成方式,目前集成学习的方法大致分为两大类:

  • 1.个体学习器间存在强依赖关系、必须串行生成的并行化方法,代表是Boosting
  • 2.个体学习器之间不存在强依赖关系,可同时生成的并行化方法,代表是Bagging和随机森林(Random Forest)

    二、Boosting算法

    、 Boosting算法用于弱学习器(weak learner)提升为强学习器。
    最终的集成学习器是§ 第八章  集成学习 - 图23个基学习器的加权结合§ 第八章  集成学习 - 图24

    Boosting算法中的AdaBoost算法

    2.1模型

    § 第八章  集成学习 - 图25
    这个式子是集成学习的加性模型,加性模型不采用梯度下降的思想,而是
    § 第八章  集成学习 - 图26
    每次更新求解一个理论上的最优§ 第八章  集成学习 - 图27§ 第八章  集成学习 - 图28

    2.2最小化指数损失函数(exponential loss function)

    § 第八章  集成学习 - 图29
    根据后面推导出的结论,每次更新的§ 第八章  集成学习 - 图30
    对这个损失函数的解读

  • 1.指数损失函数§ 第八章  集成学习 - 图31的含义:§ 第八章  集成学习 - 图32为真实的函数,对于分类任务来说,§ 第八章  集成学习 - 图33§ 第八章  集成学习 - 图34是预测的数据,当§ 第八章  集成学习 - 图35§ 第八章  集成学习 - 图36符号一致的时候,§ 第八章  集成学习 - 图37。我们成这个§ 第八章  集成学习 - 图38为预测的信心,当信心越大时,损失函数越小。

  • 2.符号§ 第八章  集成学习 - 图39的含义:§ 第八章  集成学习 - 图40为概率分布,可简单理解为在数据集§ 第八章  集成学习 - 图41中进行一次随机抽样,每个样本被取到的概率;§ 第八章  集成学习 - 图42为经典的期望,则综合起来§ 第八章  集成学习 - 图43表示在概率分布§ 第八章  集成学习 - 图44上的期望,可简单理解为对数据集§ 第八章  集成学习 - 图45以概率§ 第八章  集成学习 - 图46进行加权后的期望。即:

§ 第八章  集成学习 - 图47
上述式子说明损失函数是每个损失函数按照概率分布进行加权后得到的。

2.3 目标是使损失函数最小化

这时要考虑对§ 第八章  集成学习 - 图48的导数,由上式(3)求解
§ 第八章  集成学习 - 图49
求导
§ 第八章  集成学习 - 图50
之后令导数为0,求得§ 第八章  集成学习 - 图51的解
§ 第八章  集成学习 - 图52
因为我们是通过投票法来决定的,带入最开始投票法的公式:
§ 第八章  集成学习 - 图53

2.4 AbaBoost算法的训练过程

2.4.1 根据指数损失函数找到第一个基分类器

§ 第八章  集成学习 - 图54

2.4.2 根据指数函数最小化求得权重§ 第八章  集成学习 - 图55的更新

对式子(5)求导:
§ 第八章  集成学习 - 图56

2.4.3 下一个基学习器§ 第八章  集成学习 - 图57纠正前面的学习器§ 第八章  集成学习 - 图58的错误

§ 第八章  集成学习 - 图59
对这个损失函数进行处理,使用泰勒展开式
§ 第八章  集成学习 - 图60

2.4.4 所以达到§ 第八章  集成学习 - 图61最小化的学习器

§ 第八章  集成学习 - 图62
、 此时引进的§ 第八章  集成学习 - 图63是一个常数,令§ 第八章  集成学习 - 图64表示一个分布
§ 第八章  集成学习 - 图65
所以式子(6)称为
§ 第八章  集成学习 - 图66
现在我们用另一个特殊的判断的表达式
§ 第八章  集成学习 - 图67
其中的§ 第八章  集成学习 - 图68表示判断§ 第八章  集成学习 - 图69是否成立。

  • 如果成立,§ 第八章  集成学习 - 图70,§ 第八章  集成学习 - 图71
  • 否则,§ 第八章  集成学习 - 图72
  • § 第八章  集成学习 - 图73

最终得到理想的基学习器
§ 第八章  集成学习 - 图74
由此可见,理想§ 第八章  集成学习 - 图75将在分布§ 第八章  集成学习 - 图76下最小化分类误差。因此弱分类器将基于分布§ 第八章  集成学习 - 图77来进行训练,且针对§ 第八章  集成学习 - 图78的分类误差将小于0.5,类似残差逼近思想。
且由式子(7)所假设的分布,我们可以得到分类器的分布迭代
§ 第八章  集成学习 - 图79

2.4.5 迭代公式

由上面的推到我们得出了迭代过程中的两个更新公式:1.样本分布调整 2.基学习器的调整
§ 第八章  集成学习 - 图80
Boosting算法要求基学习器对特定的数据分布进行学习,者可通过”重赋权法”(re-weighting)实施,即在训练的过程中,根据样本分布为每个训练样本重新赋予一个权重,对无法接受带权样本的基学习器算法,通过”重采样法”(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本对基学习器训练。

2.4.6 代码

从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化相当弱的学习器建出很强的集成。对西瓜数据集以决策树桩为基学习器运行AdaBoost算法。
例子链接

  1. function [error_final,D,dataset_final,coefficient] = adoboost(dataset_initial,T)
  2. dataset_initial = [0,1,2,3,4,5,6,7,8,9;1,1,1,-1,-1,-1,1,1,1,-1];
  3. dataset = dataset_initial;
  4. dataset_update = [0,1,2,3,4,5,6,7,8,9];
  5. %以决策树桩,找到误差率最小的阈值
  6. %step1 给权值赋予初值
  7. D(1:size(dataset_initial,2)) = 1/(size(dataset_initial,2));
  8. %找到第一个基分类器,通过暴力循环,找到误差率最小的阈值
  9. dataset_final=0;
  10. for t = 1:T%基分类器个数为T
  11. number = 1;%每个阈值对应的误差率矩阵的增加标志
  12. %根据每个阈值找到误差率最小
  13. for threshold = 0:0.01:9%对每个阈值赋值
  14. error = 0;
  15. error1 = 0;
  16. %需要比较判断然后赋值,需要进行符号的判断
  17. for i = 1:size(dataset_initial,2)
  18. if dataset_initial(1,i) <threshold
  19. dataset_update(2,i) = 1;
  20. else
  21. if dataset_initial(1,i)>threshold
  22. dataset_update(2,i) = -1;
  23. end
  24. end
  25. end
  26. for i = 1:size(dataset_initial,2)
  27. if dataset_initial(1,i) <threshold
  28. dataset_update1(2,i) = -1;
  29. else
  30. if dataset_initial(1,i)>threshold
  31. dataset_update1(2,i) = 1;
  32. end
  33. end
  34. end
  35. for i = 1:size(dataset_initial,2)%计算出误差率
  36. if dataset_initial(2,i) ~= dataset_update(2,i)
  37. error = D(i)+error;
  38. else
  39. error = error + 0;
  40. end
  41. if dataset_initial(2,i) ~= dataset_update1(2,i)
  42. error1 = D(i)+error1;
  43. else
  44. error1 = error1 + 0;
  45. end
  46. end
  47. error_matrix1(number) = error;
  48. error_matrix2(number) = error1;
  49. number = number+1;
  50. end
  51. % if t==1
  52. % plot(0:0.01:9,error_matrix);
  53. % end
  54. %判别找到更新的分类数据集和原数据集,找到分类误差率
  55. %找到最小的误差率和误差率所在位置,从而找到阈值,并且得到根据阈值做出的判断
  56. [error_minmum1,position1] = min(error_matrix1);
  57. [error_minmum2,position2] = min(error_matrix2);
  58. if error_minmum1<error_minmum2
  59. error_minmum = error_minmum1;
  60. position = position1;
  61. flag = 1;
  62. threshold_flag = 1;
  63. else
  64. error_minmum = error_minmum2;
  65. position = position2;
  66. flag = 2;
  67. threshold_flag = -1;
  68. end
  69. for i =1:size(dataset_initial,2)
  70. if dataset(1,i)< (position/100)
  71. if flag == 1
  72. dataset(2,i) =1;
  73. else
  74. dataset(2,i) = -1;
  75. end
  76. else
  77. if flag == 1
  78. dataset(2,i) = -1;
  79. else
  80. dataset(2,i) =1;
  81. end
  82. end
  83. end
  84. %通过误差率计算出系数
  85. coefficient = 0.5*log((1-error_minmum)/error_minmum);
  86. %更新权值
  87. Z=0;
  88. for i = 1:size(dataset_initial,2)
  89. Z = Z+D(i) *exp(-coefficient*dataset_initial(2,i)*dataset(2,i));%先计算出Z
  90. end
  91. for i = 1:size(dataset_initial,2)
  92. D(i) = D(i)*exp(-coefficient*dataset_initial(2,i)*dataset(2,i));
  93. end
  94. D = D/Z;%得到更新的权值
  95. %使用matlab表示分段函数
  96. x = dataset(2,:);
  97. dataset_final=coefficient*x+dataset_final;
  98. end
  99. %使用这个计算最终的数据集
  100. %大于0的为1,小于0的为-1
  101. for i=1:length(dataset_final)
  102. if dataset_final(i) >0
  103. dataset_final(i) =1;
  104. else
  105. if dataset_final(i) ==0
  106. dataset_final(i)=0;
  107. else
  108. dataset_final(i) =-1;
  109. end
  110. end
  111. end
  112. %比较数据的异同
  113. number1=0;
  114. for i=1:length(dataset_final)
  115. if dataset_final(i) ~= dataset_initial(2,i)
  116. number1 =number1+1;
  117. end
  118. end
  119. error_final = number1/length(dataset_final)
  120. end

三、Bagging与随机森林

想要使得集成学习有很强的泛化性能集成学习器之间应该尽可能要相互独立。在现实生活中”独立”是做不到的,因为都是为了解决同一件事情而提出的。为了想办法使得学习器之间相互独立,在给定一个训练数据集的情况下,一种做法是:
image.png
由于训练数据不同,我们获得的基学习器具有比较大的差异。然而,为获得好的集成,我们希望个体学习器不能太差。如果采样出的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,甚至不能有效学习,这显然无法确保出好的基学习器,所以,我们考虑使用相互有交集的采样子集。

评估方法-自助法:

我们希望评估的使用§ 第八章  集成学习 - 图82训练出的模型,但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估中的模型所使用的训练集比§ 第八章  集成学习 - 图83小,必然会引入一些因训练样本规模不同而导致的估计偏差。
留一法受训练规模变化的影响较小,但计算复杂度又太高了。所以要找一种方法:既可以减少训练样本规模不同造成的影响,同时能比较高效地进行实验估计。
显然,在§ 第八章  集成学习 - 图84中有一部分样本会在§ 第八章  集成学习 - 图85中多次出现,而另一部分样本不出现。可以做一个简单的估计,样本在§ 第八章  集成学习 - 图86次采样中始终不被采到的概率是§ 第八章  集成学习 - 图87,取极限得到
§ 第八章  集成学习 - 图88
即通过自助采样,初始数据集§ 第八章  集成学习 - 图89中约有§ 第八章  集成学习 - 图90的样本未出现在采样数据集中§ 第八章  集成学习 - 图91中。于是,我们可以将§ 第八章  集成学习 - 图92用作训练集,§ 第八章  集成学习 - 图93用作测试集。这样,实际评估的模型与期望评估的模型都是用§ 第八章  集成学习 - 图94个训练样本,而我们仍有数据总量约§ 第八章  集成学习 - 图95的、没在训练集中出现的样本用于测试,这样的测试结果,亦称为”包外估计”(out-of-bag-estimate)。
自助法在数据集较小、难以有效划分训练/测试集时分有用。此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。但是,自助法的数据集改变了初始数据集的分布,这会引入估计偏差。因此,当数据集较大时,留出法和交叉验证法更好。

3.1 Bagging

Bagging算法是使用的是上述的评估方法-自助法,由上面的结论初始数据集§ 第八章  集成学习 - 图96中约有§ 第八章  集成学习 - 图97的样本未出现在采样数据集中§ 第八章  集成学习 - 图98中,可以得到初始训练集中约有§ 第八章  集成学习 - 图99的样本出现在采样集中。
所以我们可以采样出§ 第八章  集成学习 - 图100个包含§ 第八章  集成学习 - 图101个训练样本的采样集,然后训练出一个基学习器,再将基学习器结合。
image.png
对预测输出时,

  • Bagging通常对分类任务使用简单投票法,如果出现票数相同的情况,最简单的做法是随机选择一个,或者进一步考察学习器投票的置信度来确定最终的胜利者
  • Bagging对回归任务使用简单平均法

    3.1.1复杂度

    如果基学习器的计算复杂度未§ 第八章  集成学习 - 图103,则Bagging算法的复杂度大致为§ 第八章  集成学习 - 图104,考虑到采样与投票/平均过程的复杂度§ 第八章  集成学习 - 图105很小,而§ 第八章  集成学习 - 图106通常是一个不太大的常数,因此,训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同届,这说明Bagging是一个很高效的集成学习算法,Bagging算法还可以用于多分类、回归任务

    3.1.2 公式推导

    由上面的公式得到结论:每个基学习器只使用了初始训练集中§ 第八章  集成学习 - 图107的样本,剩下约§ 第八章  集成学习 - 图108的样本可用作验证集对泛化性能进行”包外估计”(out-of-bag estimate)。
    因此,我们可以:令§ 第八章  集成学习 - 图109表示§ 第八章  集成学习 - 图110实际使用的训练样本集,令§ 第八章  集成学习 - 图111对样本§ 第八章  集成学习 - 图112的包外预测,即仅考虑那些未使用§ 第八章  集成学习 - 图113训练的基学习在§ 第八章  集成学习 - 图114上的预测,有
    § 第八章  集成学习 - 图115
    公式(1)解析:§ 第八章  集成学习 - 图116表示对§ 第八章  集成学习 - 图117个基学习器,判断结果是否与真是结果§ 第八章  集成学习 - 图118一致,§ 第八章  集成学习 - 图119的结果一般是§ 第八章  集成学习 - 图120,如果基学习器结果与§ 第八章  集成学习 - 图121一致,则§ 第八章  集成学习 - 图122§ 第八章  集成学习 - 图123,如果样本不在训练集内,则§ 第八章  集成学习 - 图124,综合起来看,对包外的数据,用投票法选择包外估计的结果,即1或-1.
    则Bagging泛化误差的包外估计为:
    § 第八章  集成学习 - 图125
    公式(2)解析:§ 第八章  集成学习 - 图126是对包外的估计,该式表示§ 第八章  集成学习 - 图127,得到泛化误差的包外估计。
    包外样本还有其他的一些用途:

  • 1.当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理

  • 2.当基学习器是神经网络时,可使用包外样本来辅助早期停止以减小过拟合风险。

    3.1.3 Bagging 算法的数据

    Bagging算法主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。我们以基于信息增益划分的决策树为基学习器,在表4.5的西瓜数据集3.0上运行Bagging算法,不同规模的集成及其基学习器所对应的分类边界如图所示:
    image.png

    3.2随机森林

    image.png
    传统的决策树在做选择划分的属性时时在当前结点的属性结合(假设有§ 第八章  集成学习 - 图130个属性)中选择一个最优属性(例如:西瓜的声音、密度、尾巴的长短中选择一个属性来划分);
    在RF(random forest)中,对基决策树的每个结点,先从该结点的属性集合中随机选择包含§ 第八章  集成学习 - 图131个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数§ 第八章  集成学习 - 图132控制了随机性的引入程度:若令§ 第八章  集成学习 - 图133,则基决策树的构建与传统决策树相同;若令§ 第八章  集成学习 - 图134,则是随机选择一个属性用于划分;一般情况下,推荐值§ 第八章  集成学习 - 图135
    image.png
    随机森林对Bagging只做了一个小改动,但是与Bagging中基学习器的”多样性”仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动(因为随机选择§ 第八章  集成学习 - 图137个属性),这使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。
    image.png
    随机森林的收敛性与Bagging算法比较

  • 1.随机森林的收敛性与Bagging相似

  • 2.随机森林的起始性能相对较差,特别是在集成中只包含一个基学习器时,这是因为引入属性扰动,使得随机森林中个体学习器的性能往往有所降低。
  • 3.随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差,随机森林的训练效率通常优于Baaging。§ 第八章  集成学习 - 图139Bagging使用的是”确定型”随机数,在选择属性划分时对§ 第八章  集成学习 - 图140个属性进行了考察,而随机森林的”随机型”决策树只需要考察一个属性子集。

    四、结合策略

    使用学习器结合相对于单个学习器的优点在于:

  • 1.学习任务假设空间很大,如果有多个假设在训练集上达到了同等的性能,此时使用单学习器可能会因误选导致泛化性能不佳,多个学习器可减小这一风险

  • 2.单个学习器往往会陷入局部极小,通过多次运行,降低陷入局部极小的风险
  • 3.学习任务的真实假设可能不在当前学习算法考虑的假设空间中,通过结合多个学习器,相应的假设空间有所扩大

image.png
image.png § 第八章  集成学习 - 图143

4.1 平均法

对数值型输出§ 第八章  集成学习 - 图144,最常见的策略是使用平均法(averaging)

  • 简单平均法(simple averaging)

§ 第八章  集成学习 - 图145

  • 加权平均法(weighted averaging)

§ 第八章  集成学习 - 图146
加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或者存在噪声,这将使得学出的权重不完全可靠,尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合。§ 第八章  集成学习 - 图147加权平均法未必优于简单平均法。一般而言,在个体学习器性能相差较大时适合使用加权平均法,在个体学习器性能相近时适合使用简单平均法。

4.2 投票法

对分类任务,学习器§ 第八章  集成学习 - 图148从类别标记集合§ 第八章  集成学习 - 图149,将§ 第八章  集成学习 - 图150在样本§ 第八章  集成学习 - 图151上的预测输出表示为一个§ 第八章  集成学习 - 图152维向量§ 第八章  集成学习 - 图153,其中§ 第八章  集成学习 - 图154§ 第八章  集成学习 - 图155在类别标记§ 第八章  集成学习 - 图156上的输出。

学习器\分类标记 c_1 c_2 …c_j c_N
h_1
h_2
…h_i h_i^j(x)
h_T

4.2.1绝对多数投票法(majority voting)

§ 第八章  集成学习 - 图157
即若某标记得票过半数,则预测为该标记;否则拒绝预测。

4.2.2 加权投票法(weighted voting)

§ 第八章  集成学习 - 图158
与加权平均法类似,§ 第八章  集成学习 - 图159§ 第八章  集成学习 - 图160的权重,通常§ 第八章  集成学习 - 图161
如果学习任务要求必须提供预测结果,则绝对多数投票法将退化为相对多数投票法。在现实任务中,不同类型个体学习器可能产生不同类型的§ 第八章  集成学习 - 图162值,常见的有:

  • 类标记:§ 第八章  集成学习 - 图163,若§ 第八章  集成学习 - 图164将样本§ 第八章  集成学习 - 图165预测为类别§ 第八章  集成学习 - 图166则取值为1,否则取值为0,使用类标记的投票也称”硬投票”(hard voting)。
  • 类概率:§ 第八章  集成学习 - 图167,相当于对后验概率§ 第八章  集成学习 - 图168的一个估计。使用类概率的投票也称”软投票”(soft voting.

image.png

4.3 学习法

image.png

4.3.1 Stacking算法

学习法中的代表Stacking算法的描述如下图所示,我们假设初级学习器使用不同学习算法产生,即初级集成是异质的。
image.png
在训练阶段,次级训练集是利用初级学习器产生的,若直接使用初级学习器的训练集来产生次级训练集,则过拟合风险大;一般是通过交叉验证法或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。以§ 第八章  集成学习 - 图172折交叉验证为例
§ 第八章  集成学习 - 图173
有研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,简称MLR)作为次级学习算法效果较好,在MLR中使用不同的属性集更佳。

4.3.2 BMA算法

贝叶斯模型平均(Bayes Model Averaging,简称BMA)基于后验概率来为不同模型赋予权重,可视为加权平均法的一种特殊实现。
在对Stacking和BMA算法进行比较的基础上,得到:若数据生成模型恰在当前考虑的模型中,且数据噪声很少,则BMA不差于Stacking;然而,在现实生活中无法确保数据生成模型一定在当前考虑的模型中,甚至可能难以用当前考虑的模型来进行近似,因此,Stacking通常优于BMA,因为其鲁棒性比BMA更好,而且BMA对模型近似误差非常敏感。

8.5 多样性

8.5.1 误差-分歧分解

想要构建泛化能力强的集成学习,个体学习器应当好而不同。我们现在开始理论分析。
假定我们用个体学习器§ 第八章  集成学习 - 图174通过加权 平均法结合产生的集成来完成回归学习任务§ 第八章  集成学习 - 图175。对示例§ 第八章  集成学习 - 图176,定义学习器§ 第八章  集成学习 - 图177的”分歧”(ambiguity)为
§ 第八章  集成学习 - 图178
则集成的”分歧”是
§ 第八章  集成学习 - 图179
这里的”分歧”项表征了个体学习器在样本§ 第八章  集成学习 - 图180上的不一致性,即在一定程度上反映了个个体学习器的多样性。个体学习器§ 第八章  集成学习 - 图181和集成§ 第八章  集成学习 - 图182的平方误差分别为
§ 第八章  集成学习 - 图183
§ 第八章  集成学习 - 图184表示个体学习器误差的加权均值,有
§ 第八章  集成学习 - 图185
上式对所有样本§ 第八章  集成学习 - 图186均成立,令§ 第八章  集成学习 - 图187表示样本的概率密度,则在全样本上有
§ 第八章  集成学习 - 图188
类似的,个体学习器§ 第八章  集成学习 - 图189在全样本上的泛化误差和分歧项分别为
§ 第八章  集成学习 - 图190
集成的泛化误差为:
§ 第八章  集成学习 - 图191
将式子(6-8)代入式子(5),再令§ 第八章  集成学习 - 图192表示个体学习器泛化误差的加权均值,§ 第八章  集成学习 - 图193表示个体学习器的加权分歧值,有
§ 第八章  集成学习 - 图194
式子(9)明确指出:个体学习器准确性越高、多样性越大,则集成越好。上面这个称为”误差-分歧分解”(error-ambiguity decomposition)。
但是,我们不能直接吧§ 第八章  集成学习 - 图195作为优化目标求解以此来得到最优的集成,§ 第八章  集成学习 - 图196

  • 在现实任务中很难直接对§ 第八章  集成学习 - 图197进行优化,不仅由于它们是定义在整个样本空间上
  • 由于§ 第八章  集成学习 - 图198不是一个可直接操作的多样性度量,它尽在集成构造好之后才能进行估计。
  • 上面的推导过程只适用于回归学习,难以直接推广到分类学习任务上。

    8.5.2 多样性度量

    § 第八章  集成学习 - 图199多样性度量是用于度量集成中个体分类器的多样性,典型做法是考虑个体分类器的两两相似/不相似性。
    给定数据集§ 第八章  集成学习 - 图200,对二分类任务,§ 第八章  集成学习 - 图201,分类器§ 第八章  集成学习 - 图202§ 第八章  集成学习 - 图203的预测结果列联表(contingency table)为:
hi = +1 hi = -1
hj = +1 a c
hj = -1 b d

其中,§ 第八章  集成学习 - 图204表示§ 第八章  集成学习 - 图205§ 第八章  集成学习 - 图206均预测为正类的样本数目;§ 第八章  集成学习 - 图207含义以此类推;§ 第八章  集成学习 - 图208。基于这个列联表,下面给出一些常见的多样性度量

  • 不合度量(disagreement measure)

§ 第八章  集成学习 - 图209
§ 第八章  集成学习 - 图210的值域为§ 第八章  集成学习 - 图211值越大则多样性越大。

  • 相关系数(correlation coefficient)

§ 第八章  集成学习 - 图212
§ 第八章  集成学习 - 图213的值域为§ 第八章  集成学习 - 图214。若§ 第八章  集成学习 - 图215§ 第八章  集成学习 - 图216无关,则值为§ 第八章  集成学习 - 图217;若§ 第八章  集成学习 - 图218§ 第八章  集成学习 - 图219正相关则值为正,否则为负。

  • § 第八章  集成学习 - 图220-统计量(Q-statistic)

§ 第八章  集成学习 - 图221
§ 第八章  集成学习 - 图222与相关系数§ 第八章  集成学习 - 图223的符号相同,且§ 第八章  集成学习 - 图224

  • § 第八章  集成学习 - 图225-统计量(k-statistic)

§ 第八章  集成学习 - 图226
其中,§ 第八章  集成学习 - 图227是两个分类器取得一致的概率,§ 第八章  集成学习 - 图228是两个分类器偶然达成一致的概率,它们可由数据集§ 第八章  集成学习 - 图229估算:
§ 第八章  集成学习 - 图230
若分类器§ 第八章  集成学习 - 图231§ 第八章  集成学习 - 图232§ 第八章  集成学习 - 图233上完全一致,则§ 第八章  集成学习 - 图234;若它们仅是偶然达成一致,则§ 第八章  集成学习 - 图235通常为非负值,仅在§ 第八章  集成学习 - 图236§ 第八章  集成学习 - 图237达成一致的概率甚至低于偶然性的情况下取负值。
以上介绍的是”成对型”(pairwise)多样性度量,它们可以通过2维图绘制出来。例如著名的”k-误差图”,就是将每一对分类器作为图上的一个点,横坐标是这对分类器的§ 第八章  集成学习 - 图238值,纵坐标是它们的平均误差,下图是一个例子。显然,数据点云的位置越高,个体分类器准确性越低;点云的位置越靠右,则个体学习器的多样性越小。
image.png

8.5.3 多样性增强

§ 第八章  集成学习 - 图240在集成学习中需有效地生成多样性大的个体学习器。与简单地直接用初始数据训练出个体学习器相比,如何增强多样性?一般思路是在学习过程中引入随机性,常见做法是对数据样本、输入属性、输出表示、算法参数进行扰动

(1)数据样本扰动

image.png

  • 数据扰动方法通常是基于采样法,在Bagging中使用过自助采样,在AdaBoost使用序列采样。这种方法对常见的基学习器,例如”决策树”、”神经网络”等这样的”不稳定基学习器“很有效
  • 对于”线性学习器”、”支持向量机”、”朴素贝叶斯”、”k近邻学习器”这样的”稳定基学习器“(stable base learner),效果不大,这时需要使用输入属性扰动等其他的方法。

    (2)输入属性扰动

    image.png
    对包含大量冗余属性的数据,在子空间中训练个体学习器不仅可以产生多样性大的个体,还会因属性数量的减少节省时间。同时,冗余属性多,减少一些属性后训练出的个体学习器不会太差。
    若数据只包含少量属性,或者冗余属性很少,则不宜使用属性扰动法。下图,表示算法步骤
    image.png

    (3)输出表示扰动

    此类做法的基本思路是对输出表示进行操纵以增强多样性,可对训练样本的类标记稍作标记

  • 如”翻转法”(Flipping Output)随机改变一些训练样本的标记

  • 也可对输出表示进行转化,如”输出调制法”(Ouput Smearing),将分类输出转化为回归输出后构建个体学习器
  • 还可以将原任务拆解为多个可同时求解的子任务,如ECOC法利用纠错输出码将多分类任务 拆解为一系列二分类任务来训练基学习器。

    (4)算法参数扰动

    基学习算法一般都有参数需要设置,例如神经网络的隐藏神经元数、初始连接权值等,通过随机设置不同的参数,往往可产生差别较大的个体学习器。

  • “负相关法”显示地通过正则化项来强制个体神经网络使用不同的参数

  • 对参数较少的算法,可通过其学习过程中某些环节用其他类似方式代替,从而达到扰动的目的。例如,可将决策树使用的属性选择机制替换成其他的属性选择机制