[ANN] EarlyStopping.jl 0.1.0: For terminating iterative algorithms

The EarlyStopper objects defined in EarlyStopping.jl consume a sequence of numbers called losses generated by some external algorithm - generally the training loss or out-of-sample loss of some iterative statistical model - and decide when those losses have dropped sufficiently to warrant terminating the algorithm.

The package is mainly intended for developers in the ML space. There is a plan to use it in MLJ.jl in a model wrapper for controlling iterative models (including “self-tuning” models).

A number of commonly applied stopping criteria are included out-of-the-box, including all those surveyed in the paper Prechelt, Lutz (1998):
“Early Stopping - But When?”, in Neural Networks: Tricks of the Trade, ed. G. Orr, Springer.

criterion description notation in Prechelt
Never() Never stop
NotANumber() Stop when NaN encountered
TimeLimit(t=0.5) Stop after t hours
GL(alpha=2.0) Stop after “Generalization Loss” exceeds alpha GL_α
PQ(alpha=0.75, k=5) Stop after “Progress-modified GL” exceeds alpha PQ_α
Patience(n=5) Stop after n consecutive loss increases UP_s
Disjunction(c...) Stop when any of the criteria c apply