IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> sklearn学习07——集成学习 -> 正文阅读

[人工智能]sklearn学习07——集成学习


前言

集成学习是目前各类竞赛(比如Kaggle,天池等)和工程中应用最广泛的模型提升方法。它确实也取得了不错的效果,在保证准确度的同时也提升了模型防止过拟合的能力。下面我们通过这篇文章了解一下集成学习的原理、具体有哪些方法、以及对其中一种方法 AdaBoost 的展开,同样,使用sklearn实现此方法达到深入理解的效果。

一、集成学习

1.1、什么是集成学习?

集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型(就是下图中的个体学习器),主要有Boosting、Bagging、Stacking等几种方法。

集成学习大致过程如下图:
集成学习示意图
集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来
根据个体学习器的生成方式,将集成学习分为两类:

  • 个体学习器间存在强依赖关系、必须串行生成的序列化方法,如 Boosting。
  • 个体学习器间不存在强依赖关系、可同时生成的并行化方法,如 Bagging 和 “随机森林”(Random Forest)。

下面展开Boosting算法以及这一族中代表性的算法:AdaBoost算法。

1.2、Boosting 算法

Boosting是一族可将弱学习器提升为强学习器的算法。
该算法工作机制:
(1)从初始训练集训练出一个基学习器;
(2)根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续得到更多关注;
(3)基于调整后的样本分布来训练下一个基学习器;
(4)重复上述步骤,直到基学习器数目达到事先指定的值 T ;
(5)最后,将这 T 个基学习器进行加权结合。
即采用同一基模型,在样本的不同子集上进行训练,从而得到对应的多个不同的具体模型。

Boosting族算法最著名的代表算法是AdaBoost算法

二、AdaBoost算法及实现

2.1、AdaBoost算法

AdaBoost(Adaptive boosting)是一种迭代算法。其核心思想是:针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
Adaboost算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次得到的分类器最后融合起来,作为最后的决策分类器。

  • AdaBoost算法如何做到在一次次迭代过程中,对先前基学习器做错的训练样本更加关注呢?

    答:刚开始训练时对每一个训练样本赋相等的权重,然后用该算法对训练集训练 t 轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。

  • 此外,对于基分类器的要求是:要有 多样性,例如:一个判断是否为男性的任务,弱分类器1侧重从鼻子、耳朵这些特征判断是否是男人,分类器2侧重脸和眼睛等等,把这些分类器结合起来就有了所有用来判断是否男性的特征,并且adaboost还可以给每个基分类器赋值不同的权重,比如从脸比鼻子更能判断是否为男性,就可以把分类器2的权重调高一些,这也是adaboost需要学习的内容。

AdaBoost算法流程:
AdaBoost算法流程
这里的公式推导不再详细解释,如果想深入研究,可以参考 周志华-西瓜书 + 谢文睿-南瓜书

2.2、调sklearn库实现Adaboost算法

代码如下:

from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import metrics

iris = datasets.load_iris()
X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

print(f"训练数据量:{len(X_train)},测试数据量:{len(X_test)}")

# 定义模型
model = AdaBoostClassifier(n_estimators=50,learning_rate=1.5)
# 训练
model.fit(X_train, y_train) 
# 预测
y_pred = model.predict(X_test) 
acc = metrics.accuracy_score(y_test, y_pred) # 准确率
print(f"准确率:{acc:.2}")

总结

关于集成学习的方法,这里只介绍了一种Boosting算法族中一个代表性的——AdaBoost算法,除此之外,Bagging算法是另一类的集成学习方法,Bagging是并行式集成学习方法最著名的代表。随机森林(Random Forest,RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择,其优点是简单、容易实现、计算开销小;有兴趣也可以深入研究。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:05:23  更:2022-01-03 16:05:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 22:39:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码