// right_child表示这5个内部节点的左子节点 // leaf_parent 表示-1、-2、-3、-4、-5、-6这6个叶子节点的父节点编号 // 于是这个树的结构就是这样 leaf_value=0.013151525839652695 -0.0031140914212769983 -0.017382907119786403 0.038475160439658297 -0.10110187665371873 0.091299535945193661 //各个叶子节点的预测值 lea...
// right_child表示这5个内部节点的左子节点 // leaf_parent 表示-1、-2、-3、-4、-5、-6这6个叶子节点的父节点编号 // 于是这个树的结构就是这样 leaf_value=0.013151525839652695 -0.0031140914212769983 -0.017382907119786403 0.038475160439658297 -0.10110187665371873 0.091299535945193661 //各个叶子节点的预测值 lea...
该值已经乘过了学习率shrinkage,可以直接拿来累加leaf_weight, // 类internal_weight leaf_count, // 训练时,落入本节点的样本数量。 } LeafNodeall_leaf_nodes[num_leaves]; 每棵树真正用于inference的只有split_feature,threshold,left_child,right_child,leaf_value这几项:在某个节点,需要按哪个节点作判断,阈...
遍历所有特征值和可能的取值,假设在某一点把数据分成两部分后带来的损失变化,通过逐一比较找到能让我们获得最大收益的点,确定哪一个leaf要进行分裂。也就是图中的$$p_m:最大收益点$$ $$f_m:是哪一维度特征$$ $$v_m:是指的这个维度特征gain最高的value,大于这个值的放在左边,小于这个值的放在右边。$$...
leaf_value:各个叶子节点的预测值,N个。 leaf_count: 每个叶子节点的样本数目,N个。加起来的数目应该是训练样本的数量 * bagging_fraction internal_value:N-1个。各个中间节点(即内部节点)的预测值。 internal_count:N-1个。 各个中间节点(即内部节点)上的样本数目。
max_depth 树的深度,depth 的概念在 leaf-wise 树中并没有多大作用, 因为并不存在一个从 leaves 到 depth 的合理映射。 2.4.1.2 针对训练速度的参数调整 通过设置 bagging_fraction 和 bagging_freq 参数来使用 bagging 方法。 通过设置 feature_fraction 参数来使用特征的子抽样。
2、深度优先分裂策略(leaf-wise) 在LightGBM算法之前,大多数树模型在进行决策树构建时,均采用了层次宽度优先分裂(level-wise策略),即节点分裂时,在同一层的节点可以同时分裂,这在一定程度上可以多线程并行,加快构建决策树速度,但从另外一个角度讲,level-wise策略构建时只会考虑当前节点集合内的样本进行最优分裂,因此...
提出了带深度限制的 Leaf-wise 算法,抛弃了大多数GBDT工具使用的按层生长 (level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长策略,可以降低误差,得到更好的精度。 提出了单边梯度采样算法,排除大部分小梯度的样本,仅用剩下的样本计算信息增益,它是一种在减少数据量和保证精度上平衡的算法。
对于类别特征,此前的GBDT、XGBoost等都用的是one-hot编码,即one vs rest,但是这种方法对于类别特别多的类别特征容易导致过拟合,会生成极不平衡树(GBDT和XGB没这个问题,但是Leaf-wise的LGBM会),并且会导致树会 比较深才能达到较好的效果(XGB也有这个问题)。而LGBM则提出不使用one vs rest,而是采用 many-vs-many的...
2、深度优先分裂策略(leaf-wise) 在LightGBM算法之前,大多数树模型在进行决策树构建时,均采用了层次宽度优先分裂(level-wise策略),即节点分裂时,在同一层的节点可以同时分裂,这在一定程度上可以多线程并行,加快构建决策树速度,但从另外一个角度讲,level-wise策略构建时只会考虑当前节点集合内的样本进行最优分裂,因此...