adaboost

Adaboost

冷暖自知 提交于 2020-03-07 19:34:49
Boosting提升方法(源自统计学习方法) 提升方法是一种常用的统计学习方法,应用十分广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。提升算法基于这样一种思路:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家独断的判断好。实际上,就是 “三个臭皮匠顶个诸葛亮” 的道理。 历史上,Kearns和Valiant首先提出了“ 强可学习 (Strongly learnable)”和“ 弱可学习 (Weekly learnable)”的概念。支出:在概率近似正确(probably approximately correct,PAC)学习框架中,一个概念(一个分类),如果存在一个多项式的学习算法能够学习它,并且正确率很好,那么就称这个概念是强可学习的;一个概念(一个分类),如果存在一个多项式的学习算法能够学习它,但学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。非常有趣的是Schapire 后来证明强可学习与弱可学习是等价的 ,也就是说,在PAC学习框架下,一个概念是强可学习的充要条件是这个概念是弱可学习的。 这样一来,问题便成为,在学习中,如果已经发现了“弱学习算法”,那么能否将它提升(boost)为“强学习算法”。大家知道,发现弱学习算法通常要比发现强学习算法容易得多

Focal Loss

╄→гoц情女王★ 提交于 2020-03-04 05:26:07
损失函数(loss function)是用来 估量模型的预测值f(x)与真实值Y的不一致程度 ,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是 经验风险函数 的核心部分,也是 结构风险函数 重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:   其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的 Φ 是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是 找到使目标函数最小时的 θ 值 。下面主要列出几种常见的损失函数。   理解:损失函数旨在表示出logit和label的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数过程中,logit逼近label的方式不同,得到的结果可能也不同。 一般情况下,softmax和sigmoid使用交叉熵损失(logloss),hingeloss是SVM推导出的,hingeloss的输入使用原始logit即可。 一、LogLoss对数损失函数(逻辑回归,交叉熵损失)   有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。 平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到 ,而逻辑回归得到的并不是平方损失

04-02 AdaBoost算法

℡╲_俬逩灬. 提交于 2020-03-03 10:11:48
文章目录 AdaBoost算法 AdaBoost算法学习目标 AdaBoost算法详解 Boosting算法回顾 AdaBoost算法 AdaBoost算法目标函数优化 AdaBoost算法流程 输入 输出 强分类器流程 强回归器流程 AdaBoost算法优缺点 优点 缺点 小结 AdaBoost算法   集成学习中弱学习器之间有强依赖关系的,称之为Boosting系列算法,而AdaBoost则是Boosting系列算法中最著名的算法之一。   AdaBoost算法强大之处在于既可以解决分类问题,又可以解决回归问题。 AdaBoost算法学习目标 AdaBoost算法目标函数优化 强分类器和强回归器流程 AdaBoost算法优缺点 AdaBoost算法详解 Boosting算法回顾   Boosting算法的流程是:首先训练处一个弱学习器,根据弱学习器的误差率更新训练样本的权重,然后基于调整权重后的训练集训练第二个弱学习器,直到弱学习器达到事先指定的数目T,停止算法。   对于Boosting算法的流程,可以看到如果我们解决以下4个问题,既可以得到完整的Boosting算法 弱学习器的误差率 训练样本的权重 w w w 更新方法 更新样本权重的方法 结合策略 AdaBoost算法   上面讲到了Boosting算法需要解决的4个问题

Adaboost算法解释

送分小仙女□ 提交于 2020-02-26 12:54:20
(3)Adaboost算法解释:    AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法时的二类分类学习方法。    (i)前向分布算法     考虑加法模型    f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) f(x)=\sum_{m=1}^{M} \beta_{m} b\left(x ; \gamma_{m}\right) f ( x ) = m = 1 ∑ M ​ β m ​ b ( x ; γ m ​ )        其中,基函数: b ( x ; γ m ) , b\left(x ; \gamma_{m}\right), b ( x ; γ m ​ ) , 基函数参数: γ m \gamma_{m} γ m ​ ,基函数的系数: β m \beta_{m} β m ​ 。     在给定训练数据集及损失函数 L ( y , f ( x ) ) \mathrm{L}(\mathrm{y}, \mathrm{f}(\mathrm{x})) L ( y , f ( x ) ) 的条件下,学习加法模型f(x)成为经验风险最小化即损失函数最小化问题:    min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) \min _{\beta_

机器学习——AdaBoost算法

▼魔方 西西 提交于 2020-02-16 19:45:14
机器学习——AdaBoost算法 1 集成学习 1.1 基本概念 所谓的集成学习指的是通过构建多个学习器来完成学习的任务,有的时候也被称为多分类器系统。其基本框架如下图所示: 我们从统一的训练样本,通过某种算法来产生多个学习器,再通过某一种策略来将各个学习器进行组合,从而形成一个学习器系统。我们将从训练样本中产生的每一个单个的学习器称为弱学习器。目前,集成学习主要包括两种实现方式,一种是两个学习器之间是存在依赖性的,也就是说,一个新的弱学习器的生成是和之前的弱学习器是有关联的。那么所有弱学习器生成的过程是串行的。这种方式比较有代表性的是AdaBoost算法。另外一种是每一个弱学习器的生成和其他弱学习器的生成是无关的。也就是一种并行生成的方式。这种方式的代表性算法是随机森林(Random Forest)。 2 AdaBoost算法 2.1 基本介绍 上面我们描述了集成学习的基本概念和两种主要的方式,下面我们来介绍第一种方式。这里我们主要介绍的是AdaBoost算法。AdaBoost算法的基本思想是: 通过前面生成的弱分类器来调节训练样本集合中的每一个样本的权重,在进行重新采样,形成新的样本集合,继续训练下一个弱分类器。 2.2 训练流程 首先,对于初始的训练样本集合,我们需要对其中每一个样本产生一个初始的权重,记权重集合为 D 1 D_1 D 1 ​ : D 1 = ( w 11 ,

数据挖掘学习之路一:数据挖掘认识

半世苍凉 提交于 2020-02-08 00:09:51
1.什么是数据挖掘? 数据挖掘是人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库、可视化技术等,高度自动化地分析企业的数据,作出归纳性的推理,从中挖掘出潜在的模式,帮助决策者调整市场策略,减少风险,作出正确的决策。知识发现过程由以下三个阶段组成:①数据准备;②数据挖掘;③结果表达和解释。数据挖掘可以与用户或知识库交互。 数据挖掘就是通过分析采集而来的数据源,从庞大的数据中发现规律,找到宝藏。 2.数据挖掘的基本流程 数据挖掘可分为6个步骤:  1.商业理解:数据挖掘不是我们的目的,我们的目的是更好地帮助业务,所以第一步我们要从商业的角度理解项目需求,在这个基础上,再对数据挖掘的目标进行定义。  2.数据理解:尝试收集部分数据,然后对数据进行探索,包括数据描述、数据质量验证等。这有助于你对收集的数据有个初步的认知。  3.数据准备:开始收集数据,并对数据进行清洗、数据集成等操作,完成数据挖掘前的准备工作  4.模型建立:选择和应用各种数据挖掘模型,并进行优化,以便得到更好的分类结果  5.模型评估:对模型进行评价,并检查构建模型的每个步骤,确认模型是否实现了预定的商业目标  6.上线发布: :模型的作用是从数据中找到金矿

AdaBoost

人走茶凉 提交于 2020-02-01 21:39:15
文章目录 1. 提升方法的基本思路 2. AdaBoost算法 3. AdaBoost训练误差的有界性 1. 提升方法的基本思路 提升方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。实际上,就是“三个臭皮匠顶个诸葛亮”的道理。 对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类器(强分类器)容易得多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。 这样,对提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练数据权值或概率分布;而是如何将弱分类器组合成一个强分类器。关于一个问题,AdaBoost的做法是,提高那些被前一轮分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的增大而受到后一轮的弱分类器的更大关注。于是,分类问题被一系列的弱分类器“分而治之”。置于第二个问题,即弱分类器的组合,AdaBoost采取加权多数表决的方法,具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用;减小分类误差率大额弱分类器的权值

AdaBoost

徘徊边缘 提交于 2020-02-01 03:28:32
集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式 通俗解释:做重要决定,综合多个专家的意见。机器学习处理问题时又何尝不是如此? 这就是集成方法背后的思想。 集成方法 投票选举(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样分类器构造的方法。新数据集和原数据集的大小相等。每个数据集都是通过在原始 数据集中随机选择一个样本来进行替换而得到的。 再学习(boosting): 是基于所有分类器的加权求和的方法。boosting中的分类器权重并不相等,每个权重代表的是 其对应分类器在上一轮迭代中的成功度。 AdaBoost (adaptive boosting: 自适应 boosting) 概述 AdaBoost 优缺点 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。 缺点:对离群点敏感。 适用数据类型:数值型和标称型数据。 AdaBoost的一般流程 (1) 收集数据:可以使用任意方法。 (2) 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可 以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的 任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。 (3) 分析数据

《机器学习实战》笔记(七):Ch7 - 利用AdaBoost元算法提高分类性能

不想你离开。 提交于 2020-02-01 00:20:25
第七章 利用AdaBoost元算法提高分类性能([代码][ch07]) AdaBoost算法的优缺点 优点: 泛化错误率低,易编码,可以应用再大部分分类器上,无参数调整。 缺点: 对离群点敏感。 使用数据类型: 数值型和标称型数据。 bagging: 基于数据随机重抽样的分类器构造方法 在原始数据选择S次后得到S个数据集的一种技术。新数据集和原数据集的大小相等。每个数据集通过原始样本中随机替换得到的。 boosting 收集数据:可以使用任意方法。 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。 分析数据:可以使用任意方法。 训练算法: Adaboost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。 测试算法:计算分类的错误率。 使用算法:同SVM一样, Adaboost预测两个类别中的一个。如果想把它应用到多个类次后别的场合,那么就要像多类SVM中的做法一样对。 训练算法: 基于错误提升分类器的性能 AbaBoost算法会不断得重复训练和调整权重的过程,直到悬链错误率为0或者弱分类器的数目达到用户的制定值为止。 基于单层决策树构建弱分类器 伪代码 将minError设置为无穷大

scikit-learn adaboost

淺唱寂寞╮ 提交于 2020-01-31 01:26:17
原理参见: adaboosting原理探讨(一) https://blog.csdn.net/sinat_29957455/article/details/79810188 adaboosting原理探讨(二) https://blog.csdn.net/baiduforum/article/details/6721749 adaboosting原理探讨(三) https://blog.csdn.net/qq_38150441/article/details/80476242 import numpy as np from sklearn . ensemble import AdaBoostClassifier from sklearn import tree import matplotlib . pyplot as plt % matplotlib inline X = np . arange ( 10 ) . reshape ( - 1 , 1 ) y = np . array ( [ 1 , 1 , 1 , - 1 , - 1 , - 1 , 1 , 1 , 1 , - 1 ] ) display ( X , y ) #array([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]) #array([ 1, 1, 1, -1, -1, -1,