梯度提升树:修订间差异

来自决策链云智库
无编辑摘要
无编辑摘要
 
(未显示2个用户的8个中间版本)
第5行: 第5行:
|simpleicon=Boosting_GBDT_Pure.svg
|simpleicon=Boosting_GBDT_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_GBDT]]
|nodeenglishname=Boosting_GBDT
|abbreviation=[[Has abbreviation::GBDT]]
|abbreviation=GBDT
|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=[[AdaBoost]]
|nextnode=[[AdaBoost]]
}}
}}
==算法概述==
Gradient Boosting是一种基于函数空间(functional space)中增强的机器学习方法,其中目标函数是伪残差(pseudo-residuals),而不是传统增强中使用的典型残差。它给出了弱学习模型进行集成后的预测模型,即对数据进行很少的假设的模型,这些模型通常是简单的决策树<ref>{{cite journal |title=Data analytics in asset management: Cost-effective prediction of the pavement condition index |author=Piryonesi, S. Madeh and El-Diraby, Tamer E. |journal=Journal of Infrastructure Systems |volume=26 |issue=1 |pages=04019036 |year=2020 |publisher=American Society of Civil Engineers}}</ref><ref>{{cite book |title=The elements of statistical learning: data mining, inference, and prediction |author=Hastie, Trevor and Tibshirani, Robert and Friedman, Jerome |pages=337–387 |year=2009 |publisher=Springer}}</ref>。当决策树是弱学习器时,所得到的算法被称为梯度增强树;它通常优于随机森林<ref>{{cite web
|title=Gradient Boosting
|url=https://en.wikipedia.org/wiki/Gradient_boosting
|website=Wikipedia
|access-date=2024-01-18
}}</ref>。与其他Boosting方法一样,梯度提升树模型是以分阶段的方式构建的,但它通过允许优化任意可微损失函数来推广其他方法。
==示例代码-梯度提升树分类节点==
该节点使用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">
from sklearn.datasets import make_hastie_10_2
from sklearn.ensemble import GradientBoostingClassifier
X, y = make_hastie_10_2(random_state=0)
X_train, X_test = X[:2000], X[2000:]
y_train, y_test = y[:2000], y[2000:]
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
      max_depth=1, random_state=0).fit(X_train, y_train)
clf.score(X_test, y_test)
</syntaxhighlight>
拟合后,模型可以用于预测样本的类别,可以在[[通用预测模块]]实现内外部测试集的预测。
=='''节点使用指南'''==
* 最适用的场景:决策树可用于解决分类问题,其中目标是将数据分为不同的类别或预测数据的类别。
* 处理的数据类型:结局变量为二分类,特征变量大多数为连续型的变量。
===变量配置===
* 选择特征变量:作为特征进行学习的变量(X),多选。
* 选择目标变量:作为结局的二分类变量(y),单选。
===参数配置===
* 设置随机数:控制模型的随机性。
* 拆分质量评估方法选择:
** 'friedman mse',
** 'squared error'。
* 学习率:算法通过学习率缩小每棵树的贡献差距。默认值为0.1。
* Boosting次数:执行boosting算法的次数。梯度增强对于过度拟合是相当稳健的,因此大量通常会带来更好的性能。
* 子样本分数:用于拟合各个基础学习器的样本比例。如果小于 1.0,则会导致随机梯度提升。选择会导致方差减少和偏差增加。值必须在范围内。子样本分数取值范围(0.0, 1.0]。
* 损失函数算法选择:衡量分割质量的函数。支持的算法为
** 'exponential',
** 'log_loss'。
* 最大深度:树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于"最小拆分样本数"的样本。
* 最小拆分样本数:分裂内部节点所需的最小样本数。
* 叶节点最小样本数:叶节点所需的最小样本数。该参数仅当任何深度的分割点在左右分支中至少留下训练样本时,才会被考虑。这可能具有使模型平滑的效果,尤其是在回归中。
* 最大特征数:寻找最佳分割时要考虑的特征数量。
* 最大叶节点数:以最佳优先的方式种植一棵树。最佳节点定义为杂质的相对减少。如果没有,则叶节点数量不受限制。
* 最小不纯度衰减阈值:如果分裂导致杂质减少大于或等于该值,则节点将被分裂。
===注意事项===
* 不支持带空值运算,用[[多重插补]]或[[插补空值]]进行插补,
* 节点不出图,
* 导入该节点的数据端口为训练数据集,导入前注意转换。
== 参考文献 ==
{{reflist}}


<math xmlns="http://www.w3.org/1998/Math/MathML">
  <msub>
    <mi>f</mi>
    <mrow>
      <msup>
        <mrow data-mjx-texclass="INNER">
          <mo data-mjx-texclass="OPEN" fence="true" stretchy="true" symmetric="true"></mo>
          <mi>X</mi>
          <mo data-mjx-texclass="CLOSE">|</mo>
        </mrow>
        <mrow>
          <mi>Y</mi>
        </mrow>
      </msup>
    </mrow>
  </msub>
  <mrow data-mjx-texclass="INNER">
    <mo data-mjx-texclass="OPEN">(</mo>
    <mi>x</mi>
    <mo>∣</mo>
    <msub>
      <mi>C</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo data-mjx-texclass="CLOSE">)</mo>
  </mrow>
  <mo>=</mo>
  <msub>
    <mi>f</mi>
    <mrow>
      <mi>X</mi>
      <mn>1</mn>
      <mi>X</mi>
      <mrow>
        <mo stretchy="false">|</mo>
      </mrow>
      <mi>Y</mi>
      <mrow>
        <mo stretchy="false">|</mo>
      </mrow>
      <mi>Y</mi>
    </mrow>
  </msub>
  <mrow data-mjx-texclass="INNER">
    <mo data-mjx-texclass="OPEN">(</mo>
    <msub>
      <mi>x</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo>,</mo>
    <msub>
      <mi>x</mi>
      <mrow>
        <mn>2</mn>
      </mrow>
    </msub>
    <mo>∣</mo>
    <msub>
      <mi>C</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo data-mjx-texclass="CLOSE">)</mo>
  </mrow>
  <mo>=</mo>
  <msub>
    <mi>f</mi>
    <mrow>
      <mi>X</mi>
      <mo>∣</mo>
      <mi>Y</mi>
    </mrow>
  </msub>
  <mrow data-mjx-texclass="INNER">
    <mo data-mjx-texclass="OPEN">(</mo>
    <msub>
      <mi>x</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo>∣</mo>
    <msub>
      <mi>C</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo data-mjx-texclass="CLOSE">)</mo>
  </mrow>
  <mo>⋅</mo>
  <msub>
    <mi>f</mi>
    <mrow>
      <mi>X</mi>
      <mn>2</mn>
      <mo>∣</mo>
      <mi>Y</mi>
    </mrow>
  </msub>
  <mrow data-mjx-texclass="INNER">
    <mo data-mjx-texclass="OPEN">(</mo>
    <msub>
      <mi>x</mi>
      <mrow>
        <mn>2</mn>
      </mrow>
    </msub>
    <mo>∣</mo>
    <msub>
      <mi>C</mi>
      <mrow>
        <mn>1</mn>
      </mrow>
    </msub>
    <mo data-mjx-texclass="CLOSE">)</mo>
  </mrow>
</math>


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


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

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

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

梯度提升树(Gradient Boosting Tree)是一种集成学习算法,通过迭代地训练弱学习器(通常是决策树),并将它们组合成一个强大的预测模型。与其他集成学习方法(如随机森林)不同,梯度提升树是通过优化损失函数的梯度来逐步改进模型的。

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



算法概述

Gradient Boosting是一种基于函数空间(functional space)中增强的机器学习方法,其中目标函数是伪残差(pseudo-residuals),而不是传统增强中使用的典型残差。它给出了弱学习模型进行集成后的预测模型,即对数据进行很少的假设的模型,这些模型通常是简单的决策树[1][2]。当决策树是弱学习器时,所得到的算法被称为梯度增强树;它通常优于随机森林[3]。与其他Boosting方法一样,梯度提升树模型是以分阶段的方式构建的,但它通过允许优化任意可微损失函数来推广其他方法。

示例代码-梯度提升树分类节点

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

from sklearn.datasets import make_hastie_10_2
from sklearn.ensemble import GradientBoostingClassifier

X, y = make_hastie_10_2(random_state=0)
X_train, X_test = X[:2000], X[2000:]
y_train, y_test = y[:2000], y[2000:]
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
      max_depth=1, random_state=0).fit(X_train, y_train)
clf.score(X_test, y_test)

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

节点使用指南

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

变量配置

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

参数配置

  • 设置随机数:控制模型的随机性。
  • 拆分质量评估方法选择:
    • 'friedman mse',
    • 'squared error'。
  • 学习率:算法通过学习率缩小每棵树的贡献差距。默认值为0.1。
  • Boosting次数:执行boosting算法的次数。梯度增强对于过度拟合是相当稳健的,因此大量通常会带来更好的性能。
  • 子样本分数:用于拟合各个基础学习器的样本比例。如果小于 1.0,则会导致随机梯度提升。选择会导致方差减少和偏差增加。值必须在范围内。子样本分数取值范围(0.0, 1.0]。
  • 损失函数算法选择:衡量分割质量的函数。支持的算法为
    • 'exponential',
    • 'log_loss'。
  • 最大深度:树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于"最小拆分样本数"的样本。
  • 最小拆分样本数:分裂内部节点所需的最小样本数。
  • 叶节点最小样本数:叶节点所需的最小样本数。该参数仅当任何深度的分割点在左右分支中至少留下训练样本时,才会被考虑。这可能具有使模型平滑的效果,尤其是在回归中。
  • 最大特征数:寻找最佳分割时要考虑的特征数量。
  • 最大叶节点数:以最佳优先的方式种植一棵树。最佳节点定义为杂质的相对减少。如果没有,则叶节点数量不受限制。
  • 最小不纯度衰减阈值:如果分裂导致杂质减少大于或等于该值,则节点将被分裂。

注意事项

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

参考文献

  1. Piryonesi, S. Madeh and El-Diraby, Tamer E. (2020). "Data analytics in asset management: Cost-effective prediction of the pavement condition index". Journal of Infrastructure Systems. American Society of Civil Engineers. 26 (1): 04019036.{{cite journal}}: CS1 maint: multiple names: authors list (link)
  2. Hastie, Trevor and Tibshirani, Robert and Friedman, Jerome (2009). The elements of statistical learning: data mining, inference, and prediction. Springer. pp. 337–387.{{cite book}}: CS1 maint: multiple names: authors list (link)
  3. "Gradient Boosting". Wikipedia. Retrieved 2024-01-18.
  4. Kramer, Oliver (2016). "Scikit-learn". Machine learning for evolution strategies. Springer: 45--53.


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