Closed rongou closed 5 years ago
We have multiple test cases guarding accuracy and I also tested with internal datasets, didn’t see the issue,
But if you use external memory, that would mess up the accuracy
can you check your driver log, and see if training error goes to the correct direction?
validate again , didn't find the issue
Thanks for checking. Yeah it might very well be something silly on our end. Let me dig a bit deeper to see if I can find the root cause.
Just for my education, is hist
pretty much a drop-in replacement for approx
? Is there anything I'd need to change in order to make one work versus the other?
It should be as easy as that
If you set use_external_memory to true in approx, you’d change to false as external memory in hist has some problem now
On Mon, Feb 11, 2019 at 6:00 PM Rong Ou notifications@github.com wrote:
Thanks for checking. Yeah it might very well be something silly on our end. Let me dig a bit deeper to see if I can find the root cause.
Just for my education, is hist pretty much a drop-in replacement for approx? Is there anything I'd need to change in order to make one work versus the other?
— You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/dmlc/xgboost/issues/4127#issuecomment-462581752, or mute the thread https://github.com/notifications/unsubscribe-auth/AApYeDO-ElSUwy3uVEqk-mnp4rZ5YYF-ks5vMiAwgaJpZM4a1Xak .
Still trying to debug this, I don't see anything obviously wrong on my end. I hard coded verbosity
to 3 in the c++ code, and seeing lots of these lines:
[15:16:31] INFO: /home/rou/src/xgboost/src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 0 extra nodes, 0 pruned nodes, max_depth=0
That doesn't seem quite right, does it?
This indicates no tree is being grown - there is only a root with a single weight. Does this occur from the first tree or later in the boosting process?
this actually reminds me something
@rongou can you print the value of gmat.cut.row_ptr
before the following line?
https://github.com/dmlc/xgboost/blob/master/src/tree/updater_quantile_hist.cc#L632
Their values are always 0, 1
.
ok, would you please enumerate all values in row_ptr?
gmat.cut.row_ptr=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 155, 160, 208, 260, 263, 309, 426, 429, 570, 574, 627, 880, 913, 1040, 1125, 1131]
looks like the way to get stats of a node in distributed hist is too approximate....
I will come up a similar approach with approx
you can apply this patch https://github.com/CodingCat/xgboost/pull/10 to resolve the issue
I will file a PR to master branch once https://github.com/dmlc/xgboost/pull/4102 is merged
Patch worked, thanks!
I have a test that takes some rows from the mortgage dataset (https://rapidsai.github.io/demos/datasets/mortgage-data) and trains xgboost on spark. It uses the
auto/approx
tree method before and seems to work fine. I just built from master and tried the newhist
method, but it seems to be giving me random predictions (AUC of 0.5). Has anyone tried the distributedhist
method on a real dataset and does it work for you?Here is the prediction from
auto/approx
:Note the AUC (0.9779702151130722) is close to 1.
Here is the exact same test with
s/auto/hist/
: