数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

article/2025/10/19 22:21:29

相关文章:

  • 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)
  • 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)
  • 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)
  • 数据挖掘领域十大经典算法之—Apriori算法
  • 数据挖掘领域十大经典算法之—EM算法
  • 数据挖掘领域十大经典算法之—PageRank算法
  • 数据挖掘领域十大经典算法之—K-邻近算法/kNN(超详细附代码)
  • 数据挖掘领域十大经典算法之—朴素贝叶斯算法(超详细附代码)
  • 数据挖掘领域十大经典算法之—CART算法(超详细附代码)

简介

Adaboost算法是一种提升方法,将多个弱分类器,组合成强分类器。
AdaBoost,是英文”Adaptive Boosting“(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。
它的自适应在于:前一个弱分类器分错的样本的权值(样本对应的权值)会得到加强,权值更新后的样本再次被用来训练下一个新的弱分类器。在每轮训练中,用总体(样本总体)训练新的弱分类器,产生新的样本权值、该弱分类器的话语权,一直迭代直到达到预定的错误率或达到指定的最大迭代次数。
总体——样本——个体三者间的关系需要搞清除
总体N。样本:{ni}i从1到M。个体:如n1=(1,2),样本n1中有两个个体。

算法原理

(1)初始化训练数据(每个样本)的权值分布:如果有N个样本,则每一个训练的样本点最开始时都被赋予相同的权重:1/N。
(2)训练弱分类器。具体训练过程中,如果某个样本已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。同时,得到弱分类器对应的话语权。然后,更新权值后的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
(3)将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,分类误差率小的弱分类器的话语权较大,其在最终的分类函数中起着较大的决定作用,而分类误差率大的弱分类器的话语权较小,其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的比例较大,反之较小。

算法流程

第一步:
初始化训练数据(每个样本)的权值分布。每一个训练样本,初始化时赋予同样的权值w=1/N。N为样本总数。
这里写图片描述
D1表示,第一次迭代每个样本的权值。w11表示,第1次迭代时的第一个样本的权值。
N为样本总数。
第二步:进行多次迭代,m=1,2….M。m表示迭代次数。
a)使用具有权值分布Dm(m=1,2,3…N)的训练样本集进行学习,得到弱的分类器。
这里写图片描述
该式子表示,第m次迭代时的弱分类器,将样本x要么分类成-1,要么分类成1.那么根据什么准则得到弱分类器?
准则:该弱分类器的误差函数最小,也就是分错的样本对应的 权值之和,最小。
这里写图片描述
b)计算弱分类器Gm(x)的话语权,话语权am表示Gm(x)在最终分类器中的重要程度。其中em,为上步中的εm(误差函数的值)
这里写图片描述
该式是随em减小而增大。即误差率小的分类器,在最终分类器的 重要程度大。
c)更新训练样本集的权值分布。用于下一轮迭代。其中,被误分的样本的权值会增大,被正确分的权值减小。
这里写图片描述
Dm+1是用于下次迭代时样本的权值,Wm+1,i是下一次迭代时,第i个样本的权值。
其中,yi代表第i个样本对应的类别(1或-1),Gm(xi)表示弱分类器对样本xi的分类(1或-1)。若果分对,yi*Gm(xi)的值为1,反之为-1。其中Zm是归一化因子,使得所有样本对应的权值之和为1.
这里写图片描述
该公式并不难,仔细看看、想想。
第三步迭代完成后,组合弱分类器。
首先,这里写图片描述
然后,加个sign函数,该函数用于求数值的正负。数值大于0,为1。小于0,为-1.等于0,为0.得到最终的强分类器G(x)
这里写图片描述

*额外(关于权值、话语权、弱分类器准则的公式,想深入了解的可以看看。使用的话,知道上面的内容已经足够)
利用前向分布加法模型(简单说,就是把一起求n个问题,转化为每次求1个问题,再其基础上,求下一个问题,如此迭代n次),adaboost算法可以看成,求式子的最小。tn时样本n对应的正确分类,fm是前m个分类器的结合(这里乘了1/2,因为博主看的文章的am是1/2*log(~~),这个无所谓,无非是多个1/2少个1/2。
这里写图片描述
这里写图片描述
然后,假设前m-1个相关的参数已经确定。通过化简E这个式子,我们可以得到:
这里写图片描述
其中,是一个常量。
这里写图片描述
然后,
这里写图片描述
其中,Tm是分类正确的样本的权值,Mm是分类错误的样本的权值。式子不算难,自己多看几遍就能理解了。
到现在,可以看出,最小化E,其实就是最小化
这里写图片描述
这个式子是什么?看看前面,这个就是找弱分类器时的准则!
然后得到了弱分类器ym后,我们可以进推导出am和样本的权值。这里给出am的推导过程(手写的,字很烂)其中,ε是这里写图片描述
该图中,最右边的是“+exp(-am/2)*1”,写得太乱(—_—)
这里写图片描述
最后求出来的am没有1/2,这个无所谓。因为这里定义fm是多乘了个1/2。

优点

(1)精度很高的分类器
(2)提供的是框架,可以使用各种方法构建弱分类器
(3)简单,不需要做特征筛选
(4)不用担心过度拟合

实际应用

(1)用于二分类或多分类
(2)特征选择
(3)分类人物的baseline

代码

代码已在github上实现,这里也贴出来

# encoding=utf-8import pandas as pd
import timefrom sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_scorefrom sklearn.ensemble import AdaBoostClassifierif __name__ == '__main__':print("Start read data...")time_1 = time.time()raw_data = pd.read_csv('../data/train_binary.csv', header=0) data = raw_data.valuesfeatures = data[::, 1::]labels = data[::, 0]# 随机选取33%数据作为测试集,剩余为训练集train_features, test_features, train_labels, test_labels = train_test_split(features, labels, test_size=0.33, random_state=0)time_2 = time.time()print('read data cost %f seconds' % (time_2 - time_1))print('Start training...') # n_estimators表示要组合的弱分类器个数;# algorithm可选{‘SAMME’, ‘SAMME.R’},默认为‘SAMME.R’,表示使用的是real boosting算法,‘SAMME’表示使用的是discrete boosting算法clf = AdaBoostClassifier(n_estimators=100,algorithm='SAMME.R')clf.fit(train_features,train_labels)time_3 = time.time()print('training cost %f seconds' % (time_3 - time_2))print('Start predicting...')test_predict = clf.predict(test_features)time_4 = time.time()print('predicting cost %f seconds' % (time_4 - time_3))score = accuracy_score(test_labels, test_predict)
print("The accruacy score is %f" % score)

测试数据集为经过二分类处理后的MNIST数据集,获取地址train_binary.csv

运行结果

这里写图片描述


http://chatgpt.dhexx.cn/article/YVloyCeq.shtml

相关文章

数据挖掘十大经典算法(包括各自优缺点 / 适用数据场景)

本文主要分析皆来自其他资料,借用较为权威的总结来对我已经学习的这些经典算法做一个极为精简的概述(根据自身经验有一定修改),另外同时附上机器学习实战中作者对各种算法的评价。另外机器学习实战这本书是本人看了这么多书籍或者…

一文弄懂数据挖掘的十大算法,数据挖掘算法原理讲解

​一个优秀的数据分析师不仅要掌握基本的统计、数据库、数据分析方法、思维、数据分析工具和技能,还要掌握一些数据挖掘的思路,帮助我们挖掘出有价值的数据,这也是数据分析专家和一般数据分析师的差距之一。 数据挖掘主要分为三类&#xff1a…

数据挖掘领域十大经典算法

一、什么是数据挖掘? 数据挖掘是人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、…

数据挖掘的10大算法

一个优秀的数据分析师,除了要掌握基本的统计学、数据库、数据分析方法、思维、数据分析工具技能之外,还需要掌握一些数据挖掘的思想,帮助我们挖掘出有价值的数据,这也是数据分析专家和一般数据分析师的差距之一。 数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这…

数据挖掘十大经典算法,你都知道哪些?

当前时代大数据炙手可热,数据挖掘也是人人有所耳闻,但是关于数据挖掘更具体的算法,外行人了解的就少之甚少了。 数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这三类基本上涵盖了目前商业市场对算法的所有需求…

Vim编辑器(二)

Vim编辑器(二) 一、Vim编辑器概述1、vi编辑器2、vi与Vim编辑器 二、Vim编辑器的三种模式(重点)1、三种模式2、三种模式之间的关系:3、Vim打开文件的四种方式 三、命令模式1、光标移动① 光标移动到行首与行尾② 翻屏③…

Vim编辑器使用

什么是vim? Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说…

Linux之vim编辑器的使用

目录 一、vim是什么? 试验1: 二.命令模式继承用法: vim命令模式的快捷键: 光标移动: vim文本复制相关操作: vim文本编辑操作: 三.末行模式命令用法 部分快捷键: 四.vim编辑器的配置原理 一、vim是什么? vi…

linux之《vim编辑器》

目录 一.vim的基本概念 ​编辑 命令模式(Normal mode) 插入模式(Insert mode) 末行模式(last line mode) 三者的转换图 二.vim的基本操作 1. 命令模式 2. 插入模式 3. 尾行模式 三. 简单vim配置…

Linux中vi与vim编辑器

初始化的Linux虚拟机是没有vim编辑器的,需要手动下载安装: vim安装命令: yum -y install vim vi profile 打开文件,并将光标置于第8行 vi 8 profile 打开最后一行 vi profile 按n查找下一个,按N查找上一个 打开…

Vim编辑器使用技巧

此文章适合学生、泛linux领域开发运维人员、linux爱好者阅读,希望通过此文章可以帮助大家更轻松的使用vim编辑器。 vim编辑器是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。vim是自由软件。vim普遍被推崇为…

编辑器之神——vim编辑器

编辑器之神——vim编辑器 一、vi介绍 Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他…

Linux之如何使用Vim编辑器

什么是Vim编辑器 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 Linux中必须要会使用Vim(查看内容,编辑内容,保存内容) 简单的来说, …

vim编辑器详细教程

目录 一,第一讲 第一节: 移动光标 第二节 vim的进入和退出 第三节 文本编辑之删除 第四节 文本编辑之插入 第五节 文本编辑之添加 第六节 编辑文件 第一讲小结 二,第二讲 第一节 删除类命令 第二节 更多删除类命令 第三节 关于命令和对象…

vim编辑器使用教程

文章目录 前言一、vim 的三种工作模式二、vim 基本操作1、编辑2、复制粘贴3、撤销4、跳转5、查找和替换6、自动缩进7、分屏8、其他 三、vim 配置文件 前言 vim 是 Linux 系统内置的「文本编辑器」,用于查看或编辑文件的内容,学会使用 vim 编辑器&#x…

vi和vim编辑器

《Linux从入门到精通》 第一章 macOS Linux_CentOS7.6安装 第二章 网络连接的三种模式 第三章 VMware中的虚拟机克隆 第四章 虚拟机快照 第五章 Linux的目录结构 文章目录 《Linux从入门到精通》前言一、vi编辑器简介二、vim基本使用1.一般模式2.编辑模式3.指令模式4.vim配置文…

Linux Vim编辑器使用

1、基本介绍 linux系统会内置 vi 文本编辑器 Vim具有程序编辑的能力,可以看作是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译即错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 …

在Windows下安装Vim编辑器

在windows下安装vim其实非常简单,不需要配置什么配置文件之类的。。。就几个步骤搞定的事情非要搞得这么麻烦,真的服了。。。 首先,先去vim的github下载vimPC版 要是你不想麻烦的去找,请直接点击链接直达: 32位:githu…

Linux-vim编辑器的使用

本篇博客讲解vim编辑器的使用!!!最实用教程!!!没有之一!!! vim编辑器有三种模式 命令模式:对文本进行复制、粘贴、删除、撤销等【默认进入命令模式】 输入模式…

Vim编辑器的安装与使用

1、导读 下面给大家讲解一下Linux/ununtu系统下的文本编辑神器——vim编辑器的安装及基本使用方法。 2、安装vim编辑器 如果没有安装vim编辑器的,可在终端下输入一下命令进行安装: sudo apt-get install vim 安装过程中提示:[y/n]? 时…