【问题标题】:What is the leaf-score in LightGBM (classification)?LightGBM(分类)中的叶子分数是多少?
【发布时间】:2021-02-25 09:54:57
【问题描述】:

我已经在二元分类问题上训练了 LightGBM,在绘制树时,我得到了一些像这样的叶子

我很难找到分类树的损失函数 - LightGBM 是否会最小化二进制情况下的交叉熵,这是否是叶分数?

【问题讨论】:

    标签: machine-learning classification loss-function lightgbm


    【解决方案1】:

    我很难找到分类树的损失函数 - LightGBM 是否最小化二元情况下的交叉熵

    是的,如果您不指定目标,那么LGBMClassifier 将默认使用交叉熵。 https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html#lightgbm.LGBMClassifier 中的文档说objective 的默认值是"binary",然后https://lightgbm.readthedocs.io/en/latest/Parameters.html#objective 指出binary 是交叉熵损失。

    那是叶子分数吗?

    leaf 33: -2.209(“叶子分数”)之类的值表示将为该叶子节点 multiplied by the learning rate 中的实例预测的目标值。

    由于提升过程的工作方式,负值是可能的。每棵树都在模型的残差上进行训练,直到该树。通过对所有树的输出求和来获得来自模型的预测。 XGBoost 文档对此有很好的解释:"Introduction to Boosted Trees"

    以后,请尝试提供一个可重复的小示例,说明您如何创建一个您提出问题的图形。我假设使用lightgbm 3.1.0 类似于以下Python 代码。您可以更改tree_index 的值以查看模型中的不同树。

    import lightgbm as lgb
    from sklearn.datasets import load_breast_cancer
    
    X, y = load_breast_cancer(return_X_y=True)
    
    gbm = lgb.LGBMClassifier(
        n_estimators=10,
        num_leaves=3,
        max_depth=8,
        min_data_in_leaf=3,
    )
    
    gbm.fit(X, y)
    
    # visualize tree structure as a directed graph
    ax = lgb.plot_tree(
        gbm,
        tree_index=0,
        figsize=(15, 8),
        show_info=[
            'data_percentage',
        ]
    )
    
    # visualize tree structure in a dataframe
    gbm.booster_.trees_to_dataframe()
    

    【讨论】:

    • 我关于叶子分数的问题是(我应该写得更清楚)是;这是对数优势比还是..?
    • 由于它执行逻辑回归,我假设它建模: log(p(c1)/p(c2))= T0+T1+T2+T3..+TK 其中 Ti 是输出来自第 i 棵树,即第 i 棵树中的叶子分数
    猜你喜欢
    • 2017-03-17
    • 2020-06-28
    • 2018-05-02
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2013-08-07
    相关资源
    最近更新 更多