更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

scikit-learn库之AdaBoost算法

当我们对Adaboost调参时,主要要对两部分内容调参,第一部分是对Adaboost的框架进行调参,第二部分是对弱学习器调参。本文主要介绍AdaBoost的两个模型AdaBoostClassifierAdaBoostRegressor,会详解介绍AdaBoostClassifier模型,然后会对比着讲解AdaBoostRegressor模型。

接下来将会讨论上述两者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble

一、AdaBoostClassifier

1.1 使用场景

AdaBoostClassifier模型主要解决分类问题,并且它在scikit-learn库中使用了两种分类算法的实现,分别是SAMME和SAMME.R。

1.2 参数

  • base_estimator:弱分类器类型,object类型。理论上可以选择任何一个弱分类器,不过需要支持样本权重,一般用决策树或神经网络。如果algorithm='SAMME.R',弱分类器应该支持概率预测,即支持predict_proba()方法。如果为默认值,算法会选择一个最大深度为1的决策树。默认为None。
  • n_estimators:最大迭代次数,int类型。弱学习器的最大迭代次数,如果迭代次数太小,容易欠拟合;如果迭代次数太大,容易过拟合。默认为50。
  • learning_rate:权重缩减系数,float类型。这个参数是正则化项的参数\(\lambda\)。较小的\(\lambda\)需要更多的迭代次数,即learning_rate和n_estimators需要一起调参。默认为1。
  • algorithm:算法类型,str类型。该参数主要用来度量学习器的权重。默认为'SAMME.R'。
    • 'SAMME':使用样本集分类效果作为弱分类器权重
    • 'SAMME.R':使用样本集分类的预测概率大小作为弱分类器权重
  • random_state:随机数种子,int类型。使用后可以保证随机数不会随着时间的变化而变化。默认为None。

1.3 属性

  • estimators_:list类型。弱学习集合。
  • classes_:array类型。类别列表。
  • n_classes_:int类型。类别数。
  • estimator_weights_:array类型。每个弱学习的权重。
  • estimator_errors_:array类型。每个弱学习额分类误差。
  • feature_importances_:array类型。返回特征重要度。

1.4 方法

  • decision_function(X):计算样本X的决策函数值。
  • fit(X,y):把数据放入模型中训练模型。
  • get_params([deep]):返回模型的参数,可以用于Pipeline中。
  • predict(X):预测样本X的分类类别。
  • predict_log_proba(X):返回样本X在各个类别上对应的对数概率。
  • predict_proba(X):返回样本X在各个类别上对应的概率。
  • score(X,y[,sample_weight]):基于报告决定系数\(R^2\)评估模型。
  • set_prams(**params):创建模型参数。
  • staged_decision_function(X):返回每个阶段样本X的决策函数值。
  • staged_predict(X):返回每个阶段样本X的预测值。
  • staged_predict_proba(X):返回每个阶段样本X在各个类别上对应的概率。
  • staged_score(X,y[,sample_weight]):返回每个阶段样本X的\(R^2\)分数。

二、AdaBoostRegressor

AdaBoostRegressor模型和AdaBoostClassfier模型参数上差不多,只是前者一般用来解决回归问题,后者用来解决分类问题,预测值处理方式不同。并且AdaBoostRegressor模型在scikit-learn库中只是用了Adaboost.R2算法实现。

AdaBoostRegressor模型没有参数'algorithm',而是使用了loss参数,即误差函数{'linear','square','exponential'}的选择。

04-03 scikit-learn库之AdaBoost算法的更多相关文章

  1. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  2. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  3. SIGAI机器学习第二十二集 AdaBoost算法3

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. AdaB ...

  4. AdaBoost 算法-分析波士顿房价数据集

    公号:码农充电站pro 主页:https://codeshellme.github.io 在机器学习算法中,有一种算法叫做集成算法,AdaBoost 算法是集成算法的一种.我们先来看下什么是集成算法. ...

  5. 集成学习之Adaboost算法原理小结

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系.前者的代表算法就是是boostin ...

  6. Adaboost 算法

    一 Boosting 算法的起源 boost 算法系列的起源来自于PAC Learnability(PAC 可学习性).这套理论主要研究的是什么时候一个问题是可被学习的,当然也会探讨针对可学习的问题的 ...

  7. Adaboost 算法的原理与推导

    0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单“听取多人意见,最后综合决策”,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,邹博在我组织的机器学习班第8次 ...

  8. 一个关于AdaBoost算法的简单证明

    下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...

  9. Adaboost算法初识

    1.算法思想很简单: AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(三个臭皮匠,顶个诸葛亮) 它的 ...

随机推荐

  1. Java常见面试题-1

    问: 1 面向对象的特征有哪些方面? 2 访问修饰符public,private,protected,以及不写(默认)时的区别? 3  String 是最基本的数据类型吗? 对象类型 基本类型 4  ...

  2. top_down设计技巧

    写在前面的话 之前梦翼师兄和大家一起学习了层次化设计方法,大家应该懂了,哦,原来所谓的层次化设计就是将一个大的系统不断地拆分成一些便于实现的最小逻辑单元.如果大家真的只是这么想的话,那么梦翼师兄真的是 ...

  3. 使用图灵机器人api搭建微信聊天机器人php实现

    之前通过hook技术实现了微信pc端发送消息功能,如果在结合图灵机器人就能实现微信聊天机器人. 代码下载:http://blog.yshizi.cn/131.html 逻辑如下: 下面我简单介绍一下步 ...

  4. VS Code配置Go语言开发环境

    VS Code是微软开源的一款编辑器,插件系统十分的丰富.本文就介绍了如何使用VS Code搭建Go语言开发环境. VS Code配置Go语言开发环境 说在前面的话,Go语言是采用UTF8编码的,理论 ...

  5. 8 分钟了解 Kubernetes

    Kubernetes 脱胎于 Google 的 Borg 系统,是一个功能强大的容器编排系统.Kubernetes 及其整个生态系统(工具.模块.插件等)均使用 Go 语言编写,从而构成一套面向 AP ...

  6. crypto 的使用方法和说明

    crypto 模块提供了加密功能,包含对 OpenSSL 的哈希.HMAC.加密.解密.签名.以及验证功能的一整套封装.我们这里讲crypto AES算法加密 一.使用步骤 1.引入Crypto 1. ...

  7. web性能优化实践

    一.SQL查询优化 1.循环中有多次查询sql,改为在循环外一次查询后再处理 2.循环多次插入,改为组装好数据后批量插入 3.梳理业务逻辑能一次查完的,绝不分多次查 4.索引用起来 5.分页查询 二. ...

  8. Elasticsearch(9) --- 聚合查询(Bucket聚合)

    Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...

  9. [VB.NET Tips]对多行文本的支持

    从Visual Studio 2008开始VB.NET支持多行文本. 用法如下: Dim mString As String = <string>我是 一个多 行文本.</strin ...

  10. 9 个基于JavaScript 和 CSS 的 Web 图表框架

    COMSHARP CMS 写道:jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web图表,使用这些框架以及相应插件,我们可以 ...