I would like to suggest that StataCorp implement more ML optimizers, if they are not already considering this.
In "[R] Maximize", we see that "technique(algorithm_spec)" allows nr, bhhh, dfp, and bfgs. I would like to suggest that StataCorp research implementing more, if they aren't already. For example, LM (low memory) BFGS.
When I was running synthetic control regressions with the "synth" module, I found that specifying dfp reduced execution time to 1/5, while bfgs reduced execution time to 1/4, compared to the default (which for synth, is technique(nr dfp bfgs). Meanwhile, dfp required only 1/70 the RAM (yes, one seventieth) of the default, while bfgs required only 1/35. This was important, because even with dfp, my 64 GB of RAM were fully utilized, and Stata used the page file.
Right now, I am running spregress, and I have found that bfgs takes as long to execute as nr, but dfp takes only half the time. My do file takes about two days to execute with nr, even with MP-4, so cutting that in half with dfp is a great benefit.
I cannot help but wonder if LM-BFGS would reduce memory requirements greatly, and/or if there are any other optimizers out there which would reduce execution time and/or RAM usage for certain applications.
So I'd just like to encourage StataCorp to look into this more, if they aren't already. LM-BFGS might be a place to start.
0 Response to Suggestion: more ML optimizers, inc. LM-BFGS
Post a Comment