I find the instructions hard to remember and need to re-check them all the time, and with the free-form text I found that a bit time-consuming, so I ended up converting it into an algorithm-like format. Not sure if others also find it helpful so putting it here.
- determine the condition based on the jsfiddle table
- likelygood
- set
precision >= 0.995
- if recall >= 0.9 -> set
precision >= 0.997
- if recall >= 0.9 still -> set
precision >= 0.998
- if recall >= 0.9 still -> set
- else if recall < 0.15 (? no value specified in the guide) or that precision is impossible -> set
precision >= 0.9
- set
- maybebad
- set
recall >= 0.9
- if precision < 0.15 -> set
precision >= 0.15
- set
- likelybad
- set
precision >= 0.6
- if recall < 0.2 -> set
precision >= 0.45
- else if verylikelybad precision had to be adjusted down -> set
precision >= 0.45
(?)
- set
- verylikelybad
- set
precision>=0.9
- if recall < 0.1 -> set
precision >= 0.8
- if recall < 0.1 still -> set
precision >= 0.7
- if recall < 0.1 still -> set
- else if recall > ? -> set
precision >= 0.95
- set
- likelygood
- adjust to ensure there's no overlap between the threshold range of likelygood and likelybad
- drop models at the two ends if good precision is impossible
- drop models in the middle if they are very close to a neighbor
- write config:
- omit defaults, which are:
- likelygood:
precision >= 0.995
- maybebad:
recall >= 0.9
- likelybad:
precision >= 0.6
- verylikelybad:
precision >= 0.9
for damaging; disabled for goodfaith
- likelygood:
precision >= X
becomesmaximum recall @ precision >= X
,recall >= X
becomesmaximum filter_rate @ recall >= X
- for damaging good and goodfaith bad, range is
0
-maximum ...@...
; for the others it'smaximum ...@...
-1
- omit defaults, which are: