【发布时间】:2021-02-25 09:54:57
【问题描述】:
【问题讨论】:
标签: machine-learning classification loss-function lightgbm
【问题讨论】:
标签: machine-learning classification loss-function lightgbm
我很难找到分类树的损失函数 - 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()
【讨论】: