Fix repeated split and 0 cover nodes (#5010)
This commit is contained in:
parent
b29b8c2f34
commit
807a244517
@ -409,14 +409,26 @@ class ColMaker: public TreeUpdater {
|
|||||||
loss_chg = static_cast<bst_float>(
|
loss_chg = static_cast<bst_float>(
|
||||||
spliteval_->ComputeSplitScore(nid, fid, c, e.stats) -
|
spliteval_->ComputeSplitScore(nid, fid, c, e.stats) -
|
||||||
snode_[nid].root_gain);
|
snode_[nid].root_gain);
|
||||||
e.best.Update(loss_chg, fid, (fvalue + e.last_fvalue) * 0.5f,
|
bst_float proposed_split = (fvalue + e.last_fvalue) * 0.5f;
|
||||||
|
if ( proposed_split == fvalue ) {
|
||||||
|
e.best.Update(loss_chg, fid, e.last_fvalue,
|
||||||
d_step == -1, c, e.stats);
|
d_step == -1, c, e.stats);
|
||||||
|
} else {
|
||||||
|
e.best.Update(loss_chg, fid, proposed_split,
|
||||||
|
d_step == -1, c, e.stats);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
loss_chg = static_cast<bst_float>(
|
loss_chg = static_cast<bst_float>(
|
||||||
spliteval_->ComputeSplitScore(nid, fid, e.stats, c) -
|
spliteval_->ComputeSplitScore(nid, fid, e.stats, c) -
|
||||||
snode_[nid].root_gain);
|
snode_[nid].root_gain);
|
||||||
e.best.Update(loss_chg, fid, (fvalue + e.last_fvalue) * 0.5f,
|
bst_float proposed_split = (fvalue + e.last_fvalue) * 0.5f;
|
||||||
|
if ( proposed_split == fvalue ) {
|
||||||
|
e.best.Update(loss_chg, fid, e.last_fvalue,
|
||||||
d_step == -1, e.stats, c);
|
d_step == -1, e.stats, c);
|
||||||
|
} else {
|
||||||
|
e.best.Update(loss_chg, fid, proposed_split,
|
||||||
|
d_step == -1, e.stats, c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user