LightGBM(分类)中的叶子分数是多少?
Posted
技术标签:
【中文标题】LightGBM(分类)中的叶子分数是多少?【英文标题】:What is the leaf-score in LightGBM (classification)? 【发布时间】:2021-02-25 09:54:57 【问题描述】:我已经在二元分类问题上训练了 LightGBM,在绘制树时,我得到了一些像这样的叶子
我很难找到分类树的损失函数 - 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 棵树中的叶子分数以上是关于LightGBM(分类)中的叶子分数是多少?的主要内容,如果未能解决你的问题,请参考以下文章