干货|自然语言处理算法之集成算法基础

图灵汇官网

在机器学习和统计学习领域,集成学习是一种将多种学习算法组合起来以提高整体表现的方法。集成学习主要涉及有限数量的模型,这些模型可以有不同的结构。特别是在自然语言处理中,尤其是文本分类任务里,集成学习的表现往往优于其他学习方法。

个体学习器与集成学习器

集成学习通过构建和结合多个学习器来完成学习任务,有时也被称作多分类器系统或基于委员会的学习。这种技术涉及创建一组“个体学习器”,然后用某种策略将它们结合起来。这些个体学习器通常是由现有的学习算法从训练数据中生成的,例如C4.5决策树算法或BP神经网络算法。

当集成中只包含同种类型的个体学习器时,这种集成被称为“同质”的。在这种情况下,个体学习器被称为“基学习器”,对应的学习算法被称为“基学习算法”。相反,如果集成中包含不同类型的个体学习器,例如同时包含决策树和神经网络,那么这种集成被称为“异质”的。在异质集成中,个体学习器由不同的学习算法生成,因此不再有基学习算法,个体学习器通常被称为“组件学习器”。

集成学习的优势

集成学习通过将多个学习器结合起来,常常可以获得比单一学习器更优秀的泛化性能。这种优势对于“弱学习器”尤为明显。因此,许多集成学习的理论研究都是围绕弱学习器展开的。尽管理论上使用弱学习器的集成就能获得良好的性能,但在实际应用中,人们通常会选择更强的学习器,以减少所需的个体学习器数量,或者利用已有经验。

如何获得更好的集成性能

在实际应用中,如何使集成学习器的性能优于单一学习器?这需要个体学习器既有一定的准确性,又具有多样性。例如,在一个二分类任务中,如果三个分类器在某些样本上的表现不同,通过投票法,集成学习可以达到更高的准确率。然而,如果个体学习器都犯相同的错误,集成学习的效果可能会变得更差。

为了更好地理解这一点,假设基分类器的错误率为ε,那么集成的错误率会随着个体分类器数量的增加而指数级下降。然而,这种效果的前提是基学习器的错误率相互独立。实际上,个体学习器的准确性与多样性之间存在冲突,因此如何产生并结合“好而不同”的个体学习器是集成学习研究的核心问题。

Bagging 和 Boosting 算法

Bagging和Boosting是两种常见的集成学习方法,它们通过组合弱分类器来创建一个强分类器。Bagging是一种通过自助法(有放回抽样)生成多个训练集的方法,然后分别训练多个模型,并通过投票或平均值的方式得出最终结果。Boosting则是通过逐步调整训练样本的权重,使每个弱分类器能够专注于前一个分类器难以处理的样本,最终通过线性组合的方式得到强分类器。

Bagging 算法

Bagging的基本步骤包括:

  1. 从原始数据集中抽取训练集,每轮抽取n个样本。
  2. 使用抽取的训练集生成多个模型。
  3. 对分类问题,采用投票方式确定最终分类结果;对回归问题,计算模型的均值。

Boosting 算法

Boosting的主要思想是通过逐步调整训练样本的权重,使后续的弱分类器更加关注之前分类错误的样本。常用的Boosting算法包括AdaBoost和提升树。

Bagging 与 Boosting 的区别

Bagging和Boosting的主要区别在于样本选择和权重分配的方式。Bagging通过有放回抽样生成多个独立的训练集,并赋予所有样本相同的权重;Boosting则通过调整训练样本的权重,使后续模型能够更加关注之前的错误样本。

总结

Bagging和Boosting都是通过组合多个弱分类器来提升整体性能的方法。尽管它们的实现方式不同,但都能在一定程度上提高单一分类器的性能。通过将决策树与其他算法结合,可以得到一些非常强大的集成学习算法,如随机森林、提升树和GBDT。

本文来源: 图灵汇 文章作者: 向阳