热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

决策树、bagging、boosting算法思想

本文内容主要以算法思想为主,介绍决策树原理,从决策树迁移到集成学习主要是由于随机森林比较好使,引出了bagging和它的亲戚boostin

本文内容主要以算法思想为主,介绍决策树原理,从决策树迁移到集成学习主要是由于随机森林比较好使,引出了bagging和它的亲戚boosting。有趣的思想包括:决策树的信息熵、随机森林的泛化性能、boosting的改变样本分布与前向分步思想


1.决策树

人类判断的机制:由上及下逐级决策,将大问题化为多个子问题。

决策树机制:选择不同的划分属性,将问题逐步划分建成一棵树状图。

由根结点(原始问题)、内结点(子问题)、叶节点(最终决策)组成,具有处理未见实例的能力,泛化能力强。

1.1 算法步骤

决策树利用递归生成,生成过程包含三种递归返回:

1)当前结点所含样本属于同一类别

2)当前属性集为空或者当前样本在所有属性上相等

3)当前结点所含样本为空

具体的算法实现过程这篇文章讲的很好:决策树分类算法原理分析及代码实现

决策树类算法有GBDT(Gradient Boosting DT)、XGBDT、随机森林

1.2 信息熵与基尼指数

信息熵:通过样本集合的不确定性度量样本集合的纯度(信息熵是什么

                                                                     Ent(D)=-\sum_{k=1}^{\left | y \right |}p_{k}log_{2}p^{_{k}}

Ent(D)越大,不确定性越高,纯度越低。

信息增益:就决策树来说,对公式的理解可以是划分前后不确定性的差值,也就是使用a划分属性带来的纯度提升

                                                     Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{\left | D^{v} \right |}{\left | D \right |}Ent(D^{v})

决策树学习算法ID3(1986)用信息增益来选择划分属性,C4.5(1993)用信息增益率来选择划分属性

基尼指数:随机从D中抽取两个样本,其类别标记不一致的概率作为纯度的判定,不一致的概率越大,纯度越低。

                                                          Gini(D)=\sum_{k=1}^{\left | y \right |}\sum_{k'\neq k}p_{k}p_{k'}=1-\sum_{k=1}^{\left | y \right |}p_{k}^{2}

CART(1984)采用基尼指数来选择划分属性

2. bagging与随即森林

bagging:主要是通过样本的扰动引入基学习器的多样性。利用bootstrap从原始数据集中采样得到不同的数据集,分别训练不同的及学习器模型,再根据结合策略结合

随机森林:基于决策树的bagging,主要是通过样本扰动和属性扰动引入多样性。除了样本集的抽取,还在属性划分过程中引入随机性,不对所有样本进行最优选择,而是先随机选择某些属性,再从随机的属性中选择最优属性。

3. boosting

前向分步训练:基学习器的学习不是并行的,下一个基学习器的学习会用到上一个基学习器的先验知识。

更新样本分布:样本集的抽取不是随机的,而是根据本次基学习器的结果改变本次所使用的训练样本集的分布,用于下一个基学习器的学习。

此外,基学习器的结合策略也可以根据每步训练结果进行改进,如AdaBoost使用的加权平均法中的基学习器分配权重就是根据每一步基学习器的训练结果得到。


推荐阅读
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文深入探讨了CART(分类与回归树)的基本原理及其在随机森林中的应用。重点介绍了CART的分裂准则、防止过拟合的方法、处理样本不平衡的策略以及其在回归问题中的应用。此外,还详细解释了随机森林的构建过程、样本均衡处理、OOB估计及特征重要性的计算。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细介绍了Ionic框架的使用方法及其与Angular的集成。Ionic框架是一个强大的前端开发工具,适用于构建跨平台的移动应用程序。文章将探讨如何引入必要的CSS和JavaScript文件,并解释bundle.js中包含的核心功能,如路由等。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 本文汇集了一系列具有强烈设计感的网站模板,特别是来自知名平台WrapBootstrap的响应式网站模板。这些模板不仅美观,而且功能强大,适合各种类型的网站建设需求。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • Asp.net MVC 中 Bundle 配置详解:合并与压缩 JS 和 CSS 文件
    本文深入探讨了 Asp.net MVC 中如何利用 Bundle 功能来合并和压缩 JavaScript 和 CSS 文件,提供了详细的配置步骤和示例代码,适合开发人员参考学习。 ... [详细]
  • 本文将详细介绍如何在Bootstrap 5中使用五种不同的表单控件样式,包括输入框、选择器和文本区域等元素。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • Kafka Topic 数据管理与清理策略
    本文探讨了在生产环境中如何有效管理和定期清理Kafka Topic中的数据。介绍了基于时间、日志大小和日志起始偏移量三种清除方式,并重点讲解了基于时间的清除策略及其配置方法。 ... [详细]
  • 在使用 Spring Cloud Config 作为配置中心时,若在配置文件中指定了请求路径但未能生效,本文将探讨其原因及解决方案。 ... [详细]
author-avatar
mobiledu2502853787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有