更新、更全的《机器学习》的更新网站,更有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. 调度系统Airflow的第一个DAG

    Airflow的第一个DAG 考虑了很久,要不要记录airflow相关的东西, 应该怎么记录. 官方文档已经有比较详细的介绍了,还有各种博客,我需要有一份自己的笔记吗? 答案就从本文开始了. 本文将从 ...

  2. uwsgi基本介绍安装和测试--使用Django建立你的第一个网站

    一 基本介绍 对像我这样不是专业做网络的人来说,uuwsgi是一个陌生的东西.它是谁?它可以做什么?谁会用到它?其实,在不知道一个东西是什么的情况下,能够快速的了解并使用它,是一门很有艺术性的事情.最 ...

  3. maven:Fatal error compiling: 无效的目标发行版: 1.8.0_45 -> [Help 1]

    使用mvn clean install命令的时候出现如下的错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-plug ...

  4. 内部类实例化Serializable

    昨天在做一个java项目的时候,发现下面代码中红色字体那行总是报NotSerializableException,查错误,MyRectangle这个类也明明实现了Serializable接口. 花了大 ...

  5. MOOC C++笔记(二):类和对象基础

    第二周:类和对象基础 面向对象程序设计的四个基本特点 抽象.封装.继承.多态. 面向对象程序设计的过程 1.从客观事物抽象出类 抽象出的事物带有成员函数与成员变量(类似于带函数的结构体) 成员变量和成 ...

  6. 关于svn更新失败,clearup异常解决

    直接上主题: 1. 下载sqlite3工具(https://files.cnblogs.com/files/eric-fang/sqlite-tools-win32-x86-3210000.zip), ...

  7. node学习之路

    现阶段开始学习使用node开发一个个人博客系统,nodejs 基于V8引擎,是一个让 JavaScript 运行在服务端的开发平台,功能强大 ,Node.js 可以作为服务器向用户提供服务,它跳过了 ...

  8. 轻松部署calico

    一.资源 官方文档 https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/integration 二. ...

  9. Python 编译器与解释器

    Python 编译器与解释器 Python的环境我们已经搭建好了,可以开始学习基础知识了.但是,在此之前,还要先说说编译器与解释器相关的内容. 如果这部分内容,让你觉得难以理解或不能完全明白,可以暂时 ...

  10. Python 设计和历史的 27 个问题

    花下猫语: 先祝大家假期快乐!今天,我要分享一篇长文,选自 Python 的官方文档.它列举了 27 个设计及历史的问题,其中有些问题我曾经分享过,例如为什么使用显式的 self.浮点数的问题.len ...