机器学习入门|集成学习(boosting,bagging)

简介: 集成学习,顾名思义,把多个学习算法结合起来,以达到比单一学习算法更优秀,泛化性能更好的学习算法。

集成学习,顾名思义,把多个学习算法结合起来,以达到比单一学习算法更优秀,泛化性能更好的学习算法。

不过,把好的学习器和不好的结合在一起,按常理来说会产生一个不好不坏的,为了使结合起来的算法比单一算法更优秀,就需要单一算法是“好而不同”,也就是不同的算法需要有多样性,同时又要有一定的准确性,这样结合起来后,才能达到互补的状态。但同时,准确性与多样性不能兼具,调整这个度非常重要。

boosting

boosting的本质是对学习器之前预测错的样本给予更多关注(即权重),形式是每次改变权重都生成一个新学习器(基学习器),直到基学习器达到指定数量T。最终得到的就是由T个学习器加权结合的集成算法。

那么要解决的问题就是:

  1. 在每一轮如何改变训练数据的权值或概率分布?
  2. 通过什么方式来组合基学习器?

用boosting中代表的adaboost举例:

  1. 采集m个样本,初始化第一个基学习器中每个样本权重为$\frac{1}{m}$
  2. 用给定算法训练样本
  3. 计算误差,超过0.5误差率的学习器就舍弃掉(因为小于0.5准确率的学习器结合只会变得更差),误差率小于0.5的更新权重参数$\alpha_{t}=\frac{1}{2}ln\left(\frac{1-\varepsilon _{t}}\varepsilon _{t}\right)$
  4. 更新样本权重:预测正确的样本权重更新为$exp(-\alpha_{t})$,预测错误的与样本权值更新为$exp(\alpha_{t})$,并对更新之后的样本权值规范化(使权值和为1,确保样本是一个概率分布)。
  5. 重复2-4T次,或者直到收集到T个基学习器(被抛弃掉的学习器可以进行重新采样)
  6. 以$\alpha_{t}$为每个基学习器的权重参数输出加法结合的集成学习器

boosting每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。boosting是一种串行式学习方法,因为后一个模型参数受前一个的影响

bagging

与boosing相对,是一种并行式学习方法,是有放回的拿取数据集中的样本m个,这样形成的基学习器之间没有先后关系。

bagging的算法过程:

  1. 采集样本
  2. 训练样本
  3. 重复T次得到T个模型
  4. 对于分类问题,通过投票的方式,票数最多的就是分类结果;对于回归问题,通过取均值的方式得出结果

由于bagging采样时会有一部分(36.8%)的样本没有被采集到,这些样本还可以用作验证集来验证模型的性能,并优化算法。例如当训练时使用的学习算法是决策树时,可以用来剪枝。

随机森林:引入了bagging的随机性的决策树变体。

随机森林从原本决策树的节点中随机选择一个包含k个类别,$1\leq k\leq d$(d为节点所有样本包含的类别数)的子集,用这个子集来进行决策树划分。一般$k=log_{2}d$

目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
36 2
|
27天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
30 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
23 1
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
55 2
|
1月前
|
机器学习/深度学习 人工智能 数据挖掘
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第6天】在人工智能领域,机器学习已成为核心技术。本文指导初学者使用Python与Scikit-learn入门机器学习,涵盖基本概念、环境搭建、数据处理、模型训练及评估等环节。Python因简洁性及其生态系统成为首选语言,而Scikit-learn则提供了丰富工具,简化数据挖掘与分析流程。通过实践示例,帮助读者快速掌握基础知识,为进一步深入研究奠定坚实基础。
28 4
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
480 1
|
1月前
|
机器学习/深度学习 算法 大数据
机器学习入门:梯度下降算法(下)
机器学习入门:梯度下降算法(下)
|
1月前
|
机器学习/深度学习 算法 前端开发
集成学习任务七和八、投票法与bagging学习
集成学习任务七和八、投票法与bagging学习
18 0
|
1月前
|
机器学习/深度学习 算法
【机器学习】Boosting 和 AdaBoost
【机器学习】Boosting 和 AdaBoost
下一篇
无影云桌面