AdaBoost:修订间差异

来自决策链云智库
无编辑摘要
 
(未显示2个用户的11个中间版本)
第5行: 第5行:
|simpleicon=Boosting_AdaBoost_Pure.svg
|simpleicon=Boosting_AdaBoost_Pure.svg
|developer=Dev.Team-DPS
|developer=Dev.Team-DPS
|productionstate=PC可用
|productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用
|productionstatedesc=在[[DecisionLinnc | V1.0]]部署
|productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署
|nodeenglishname=[[Has english name::Boosting_AdaBoost]]
|nodeenglishname=Boosting_AdaBoost
|abbreviation=[[Has abbreviation::AdaBoost]]
|abbreviation=AdaBoost
|funcmaincategory=机器学习
|funcmaincategory=机器学习
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]]
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]]
第20行: 第20行:
|nodeavailableplotlist=nodenoplotoutput
|nodeavailableplotlist=nodenoplotoutput
|nodeavailabletablelist=Table_For_Downstream
|nodeavailabletablelist=Table_For_Downstream
|nodeconfiguration=VariableList;DropManu;Text
|nodeconfiguration=VariableList;DropMenu;Text
|nodeinputports=WorkFlow-Control ➤;Transfer-Table ■
|nodeinputports=WorkFlow-Control ➤;Transfer-Table ■
|nodeoutputports=WorkFlow-Control ➤;Transfer-Model ▶;Transfer-Table ■
|nodeoutputports=WorkFlow-Control ➤;Transfer-Model ▶;Transfer-Table ■
第27行: 第27行:
|nextnode=[[XGBoost]]
|nextnode=[[XGBoost]]
}}
}}
==算法概述==
==算法概述==
AdaBoost是一种元估计模型,它首先在原始数据集上拟合分类模型,然后在同一数据集上匹配分类模型的附加副本,但其中调整了错误分类实例的权重,使后续分类器更多地关注被错误分类的情况。
AdaBoost是Adaptive Boosting的缩写,是Yoav Freund和Robert Schapire于1995年制定的一种统计分类元算法<ref>{{cite book |author1=Freund, Yoav |author2=Schapire, Robert E. |title=A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting |publisher=Springer Berlin Heidelberg |location=Berlin, Heidelberg |year=1995 |pages=23–37 |doi=10.1007/3-540-59119-2_166 |isbn=978-3-540-59119-1}}</ref>,他们的工作获得了2003年哥德尔奖。它可以与许多其他类型的学习算法结合使用,以提高性能。其他学习算法(“基础估计器”)的输出被组合成表示增强分类器的最终输出的加权和。通常,AdaBoost是用于二进制分类的,尽管它可以推广到多个类上的有界区间。AdaBoost首先在原始数据集上拟合分类模型,然后在同一数据集上匹配分类模型的附加副本,但其中调整了错误分类实例的权重,使后续分类器更多地关注被错误分类的情况。<ref>{{cite journal |author1=Hastie, Trevor |author2=Rosset, Saharon |author3=Zhu, Ji |author4=Zou, Hui |title=Multi-class AdaBoost |journal=Statistics and Its Interface |volume=2 |issue=3 |year=2009 |pages=349–360}}</ref>


==示例代码-决策树分类节点==
==示例代码-AdaBoost分类节点==
该节点使用Python编写,调用scikit-learn包<ref>{{cite journal |author=Kramer, Oliver |title=Scikit-learn |journal=Machine learning for evolution strategies |pages=45--53 |year=2016 |publisher=Springer }}</ref>。以下为示例代码:
该节点使用Python编写,调用scikit-learn包<ref>{{cite journal |author=Kramer, Oliver |title=Scikit-learn |journal=Machine learning for evolution strategies |pages=45--53 |year=2016 |publisher=Springer }}</ref>。以下为示例代码:
<syntaxhighlight lang="Python">
<syntaxhighlight lang="Python">
from sklearn import tree
from sklearn.ensemble import AdaBoostClassifier
X = [[0, 0], [1, 1]]
from sklearn.datasets import make_classification
Y = [0, 1]
X, y = make_classification(n_samples=1000, n_features=4,
clf = tree.DecisionTreeClassifier()
                          n_informative=2, n_redundant=0,
clf = clf.fit(X, Y)
                          random_state=0, shuffle=False)
clf = AdaBoostClassifier(n_estimators=100, random_state=0)
clf.fit(X, y)
clf.predict([[0, 0, 0, 0]])
clf.score(X, y)
</syntaxhighlight>
</syntaxhighlight>


第52行: 第55行:
===参数配置===
===参数配置===
* 设置随机数:控制模型的随机性。
* 设置随机数:控制模型的随机性。
* 基础估计器选择:
* 基础估计器选择:构建增强整体的基本估计器。默认基本估计器用决策树分类估计器,初始化最大深度为1。
** SAMME
** 决策树,
** SAMME.R
** 支持向量机。
如果是“SAMME.R”,则使用 SAMME.R 真实增强算法。 estimator必须支持类别概率的计算。如果为“SAMME”,则使用 SAMME 离散增强算法。SAMME.R 算法通常比 SAMME 收敛得更快,从而通过更少的提升迭代实现更低的测试误差。
* 估计器数量:默认为100。
 
* Boosting算法选择:SAMME.R 算法通常比 SAMME 收敛得更快,从而通过更少的提升迭代实现更低的测试误差。
* 损失函数算法选择:衡量分割质量的函数。支持的标准为
** SAMME:离散增强算法。
** 'gini':基尼纯度(Gini impurity),
** SAMME.R:真实增强算法。
** 'log_loss',
* 学习率:在每次迭代时应用于每个分类器的权重。较高的学习率会增加每个分类器的贡献。
** 'entropy':信息熵。
* 最大深度:树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于"最小拆分样本数"的样本。
* 最小拆分样本数:分裂内部节点所需的最小样本数。
* 叶节点最小样本数:叶节点所需的最小样本数。该参数仅当任何深度的分割点在左右分支中至少留下训练样本时,才会被考虑。这可能具有使模型平滑的效果,尤其是在回归中。
* 最大特征数:寻找最佳分割时要考虑的特征数量。
* 最大叶节点数:以最佳优先的方式种植一棵树。最佳节点定义为杂质的相对减少。如果没有,则叶节点数量不受限制。
* 最小不纯度衰减阈值:如果分裂导致杂质减少大于或等于该值,则节点将被分裂。


===注意事项===
===注意事项===
第75行: 第71行:
== 参考文献 ==
== 参考文献 ==
{{reflist}}
{{reflist}}


{{Navplate AlgorithmNodeList}}
{{Navplate AlgorithmNodeList}}


[[Category:分类训练器]]
[[Category:分类训练器]]

2024年1月19日 (五) 19:28的最新版本

Boosting AdaBoost.png
节点状态
Windows / Windows 10 Win10及以上可用
V1.0部署
AdaBoostBoosting AdaBoost.svg
节点开发者决策链算法研发部 (Dev.Team-DPS)
节点英文名Boosting_AdaBoost
功能主类别机器学习
英文缩写AdaBoost
功能亚类别分类训练器
节点类型数据挖掘
开发语言Python
节点简介

AdaBoost(Adaptive Boosting)是一种集成学习算法,通过迭代地训练一系列的弱学习器(通常是决策树),并将它们组合成一个强大的预测模型。

与其他集成学习方法不同,AdaBoost通过调整样本权重来适应先前弱学习器的错误,从而提高整体模型的准确性。

端口数量与逻辑控制(PC)
Input-入口2个
Output-出口3个
Loop-支持循环
If/Switch-支持逻辑判断
输入输出
可生成图片类型(推荐)
可生成数据表类型(推荐)
相关节点
上一节点梯度提升树
下一节点XGBoost



算法概述

AdaBoost是Adaptive Boosting的缩写,是Yoav Freund和Robert Schapire于1995年制定的一种统计分类元算法[1],他们的工作获得了2003年哥德尔奖。它可以与许多其他类型的学习算法结合使用,以提高性能。其他学习算法(“基础估计器”)的输出被组合成表示增强分类器的最终输出的加权和。通常,AdaBoost是用于二进制分类的,尽管它可以推广到多个类上的有界区间。AdaBoost首先在原始数据集上拟合分类模型,然后在同一数据集上匹配分类模型的附加副本,但其中调整了错误分类实例的权重,使后续分类器更多地关注被错误分类的情况。[2]

示例代码-AdaBoost分类节点

该节点使用Python编写,调用scikit-learn包[3]。以下为示例代码:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0,
                           random_state=0, shuffle=False)
clf = AdaBoostClassifier(n_estimators=100, random_state=0)
clf.fit(X, y)
clf.predict([[0, 0, 0, 0]])
clf.score(X, y)

拟合后,模型可以用于预测样本的类别,可以在通用预测模块实现内外部测试集的预测。

节点使用指南

  • 最适用的场景:决策树可用于解决分类问题,其中目标是将数据分为不同的类别或预测数据的类别。
  • 处理的数据类型:结局变量为二分类,特征变量大多数为连续型的变量。

变量配置

  • 选择特征变量:作为特征进行学习的变量(X),多选。
  • 选择目标变量:作为结局的二分类变量(y),单选。

参数配置

  • 设置随机数:控制模型的随机性。
  • 基础估计器选择:构建增强整体的基本估计器。默认基本估计器用决策树分类估计器,初始化最大深度为1。
    • 决策树,
    • 支持向量机。
  • 估计器数量:默认为100。
  • Boosting算法选择:SAMME.R 算法通常比 SAMME 收敛得更快,从而通过更少的提升迭代实现更低的测试误差。
    • SAMME:离散增强算法。
    • SAMME.R:真实增强算法。
  • 学习率:在每次迭代时应用于每个分类器的权重。较高的学习率会增加每个分类器的贡献。

注意事项

  • 不支持带空值运算,用多重插补插补空值进行插补,
  • 节点不出图,
  • 导入该节点的数据端口为训练数据集,导入前注意转换。

参考文献

  1. Freund, Yoav; Schapire, Robert E. (1995). A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting. Berlin, Heidelberg: Springer Berlin Heidelberg. pp. 23–37. doi:10.1007/3-540-59119-2_166. ISBN 978-3-540-59119-1.
  2. Hastie, Trevor; Rosset, Saharon; Zhu, Ji; Zou, Hui (2009). "Multi-class AdaBoost". Statistics and Its Interface. 2 (3): 349–360.
  3. Kramer, Oliver (2016). "Scikit-learn". Machine learning for evolution strategies. Springer: 45--53.


查找其他类别的节点,请参考以下列表