1. adaboost算法的基本思想

集成学习是将多个弱模型集成在一起 变成一个强模型 提高模型的准确率,一般有如下两种:

bagging: 不同的base model可以并行计算,输出预测结果少数服从多数,回归问题则对多个模型输出的结果求平均。

boosting:后一个模型的训练需要依赖前一个模型,所以模型的训练会特备耗时没法并行,Adaboost、GBDT、Xgboost主要有这三种。

对样本赋予权重,迭代的方式构造弱分类器,后一个分类器依赖前一个分类器 。

多个弱分类器的线性组合得到最终的强分类器。

例如:







对于前一个分类器分错的样本,后一个分类器会格外的注重,训练的时候增加该样本的权重,以便这次训练的时候要分对,训练模型的同时 计算出本次的弱模型输出结果的权重

算法的核心:通过调整输入数据的权重,让本来还不错的分类器的权重正确率达到1/2

什么是权重正确率?

数据预测的错误率 =(错误数据的个数)/(全部数据的个数)

数据预测的权重错误率 =(预测错误数据的权重和)/(全部数据的权重和)

举例:

有一个标签集实际是{+1,+1,+1,+1,-1}

训练出一个g1(x)的分类结果{+1,+1,+1,+1,+1}

最后一个分出错了,如果这5条样本的权重是一样的 错误率=1/5

如果最后那个样本的权重是1/2 其余的是1/8 那么权重错误率是多少? 1/2

1/2 / 1/2+1/8+1/8+1/8+1/8

也就是说做错的那道题分数分其他的题是不一样的 越难的题分数越高

2. 具体实现

通过权重不同来训练弱分类器模型gt(x),那么我们每次找到g(x)都应该使当前时刻权重正确率最大。



调整t+1次训练的样本的权重 使得: 正确率(带权重的) 等于 错误率(带权重)

如何调整?引入缩放因子

t+1 样本权重的计算:

Δt 一般是一个大于1的数

对于分类正确的样本 权重除以Δt

对于分类错误的样本 权重乘以Δt

本次的弱模型输出权重:

也就是:α=ln(Δt)



U1 到 U2 是如何计算的

过程:

机器学习-决策树系列-Adaboost算法-集成学习-29的更多相关文章

  1. 基于单层决策树的AdaBoost算法源码

    基于单层决策树的AdaBoost算法源码 Mian.py # -*- coding: utf-8 -*- # coding: UTF-8 import numpy as np from AdaBoos ...

  2. 机器学习笔记(九)---- 集成学习(ensemble learning)【华为云技术分享】

    集成学习不是一种具体的算法,而是在机器学习中为了提升预测精度而采取的一种或多种策略.其原理是通过构建多个弱监督模型并使用一定策略得到一个更好更全面的强监督模型.集成学习简单的示例图如下: 通过训练得到 ...

  3. 机器学习实战之AdaBoost算法

    一,引言 前面几章的介绍了几种分类算法,当然各有优缺.如果将这些不同的分类器组合起来,就构成了我们今天要介绍的集成方法或者说元算法.集成方法有多种形式:可以使多种算法的集成,也可以是一种算法在不同设置 ...

  4. 基于单层决策树的AdaBoost算法原理+python实现

    这里整理一下实验课实现的基于单层决策树的弱分类器的AdaBoost算法. 由于是初学,实验课在找资料的时候看到别人的代码中有太多英文的缩写,不容易看懂,而且还要同时看代码实现的细节.算法的原理什么的, ...

  5. 机器学习——提升方法AdaBoost算法,推导过程

    0提升的基本方法 对于分类的问题,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类的分类规则(强分类器)容易的多.提升的方法就是从弱分类器算法出发,反复学习,得到一系列弱分类器(又 ...

  6. 《机器学习技法》---AdaBoost算法

    1 AdaBoost的推导 首先,直接给出AdaBoost算法的核心思想是:在原数据集上经过取样,来生成不同的弱分类器,最终再把这些弱分类器聚合起来. 关键问题有如下几个: (1)取样怎样用数学方式表 ...

  7. 机器学习-决策树之ID3算法

    概述 决策树(Decision Tree)是一种非参数的有监督学习方法,它是一种树形结构,所以叫决策树.它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回 ...

  8. 《机器学习实战》AdaBoost算法(手稿+代码)

    Adaboost:多个弱分类器组成一个强分类器,按照每个弱分类器的作用大小给予不同的权重 一.Adaboost理论部分 1.1 adaboost运行过程 注释:算法是利用指数函数降低误差,运行过程通过 ...

  9. 机器学习--聚类系列--DBSCAN算法

    DBSCAN算法 基本概念:(Density-Based Spatial Clustering of Applications with Noise) 核心对象:若某个点的密度达到算法设定的阈值则其为 ...

  10. 机器学习--聚类系列--K-means算法

    一.聚类 聚类分析是非监督学习的很重要的领域.所谓非监督学习,就是数据是没有类别标记的,算法要从对原始数据的探索中提取出一定的规律.而聚类分析就是试图将数据集中的样本划分为若干个不相交的子集,每个子集 ...

随机推荐

  1. MVC:开发模式

    1.jsp演变历史     1.早期只有servlet,只能使用response输出标签数据,非常麻烦.       2.后来有了jsp,简化了Servlet的开发,如果过度使用jsp中即写大量的Ja ...

  2. C++ Qt开发:StatusBar底部状态栏组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStatus ...

  3. XILINX HLS 入坑记录 之 写RAM 综合出 读取+写入Ram

    最近使用 Xilinx HLS 来开发 算法的IPcore,使用的Vitis 2021,发现光是 EDA 工具就存在很多的bug,比如: 1.经常C综合 停留在 Using flow_target ' ...

  4. 华企盾DSC邮件发送成功,但是不解密也没有任何提示(未添加白名单)

    用Debugview监控整个过程,若日志中有信任邮箱未添加说明,白名单邮箱未添加或者添加错了(检查空格之类的或重新添加)

  5. 【UniApp】-uni-app-项目计算功能(苹果计算器)

    前言 本文主要介绍苹果计算器项目中计算功能的实现 在前面的文章中已经实现了输入,动态计算字体大小,以及计算器的布局 本文主要介绍计算功能的实现 正文 实现/清空/改变正负/除以100 inputTex ...

  6. svelte的一些基础demo

    脚手架 Vite:vite是集成了svelte,初始化的时候选择svelte就行了. npm init vite SvelteKit:底层基于vite的更上层框架,类似于nextjs. npm cre ...

  7. 微信小程序中的数组有许多常用的方法和用法

    声明和初始化一个数组: var array = []; // 声明一个空数组 var array = [1, 2, 3]; // 声明并初始化一个有元素的数组 获取数组长度: var length = ...

  8. 云图说|什么是可信智能计算服务TICS

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 本文分享自华为云社区&l ...

  9. Mock服务设计与实现:MySQL驱动字节码修改增强

    摘要:华为导流测试平台通过对线上流量回放到被测环境中,利用线上真实流量进行充分测试,保证业务系统稳定上线.但是业务在导流测试过程中现网数据库往往难以同步到测试环境,导致现网数据无法正常回放,测试价值降 ...

  10. 解读顶会CIKM'21 Historical Inertia论文

    摘要:本文(Historical Inertia: An Ignored but Powerful Baseline for Long Sequence Time-series Forecasting ...