zoukankan      html  css  js  c++  java
  • 04-03 scikit-learn库之AdaBoost算法


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

    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'}的选择。

  • 相关阅读:
    /dev/sdxx is apparently in use by the system; will not make a filesystem here! 解决方法
    device mapper的使用
    linux中挂载硬盘报错(you must specify the filesystem type)
    Linux系统分区方案建议
    正确配置Linux系统ulimit值的方法
    ulimit -c unlimited
    ulimit -n 修改
    修改Linux内核参数,减少TCP连接中的TIME-WAIT
    sysctl -P 报错解决办法
    linux 内核参数调整优化网络
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11686781.html
Copyright © 2011-2022 走看看