L.M.Sherlock can you implement average discounted stability and see if CMRR gives vastly different outputs if we optimize for average discounted stability/time instead of total knowledge/time?
Perhaps we should move this to a new topic
EDIT: man, how does Jarrett always manage to make code I don’t understand…I’m trying to run optimal_retention from here and I can’t figure out how.
EDIT 2: ok, screw it, I’ll just hard-code FSRS parameters into the function itself.
Alright, so original CMRR with default FSRS parameters outputs 0.84. If I use average discounted stability instead of total knowledge, I get 0.93. So yeah, it matters a lot.
Nvm, this implementation is not correct. Jaaaarrreeeettt, do the thing for me plz… ![]()
@L.M.Sherlock I implemented it like this, I hope it’s correct.
avg_discount_s = (card_table[col["retrievability"]] * card_table[col["stability"]]).sum() / len(card_table[col["stability"]])
I need to do the [today] thing, but idk how. Basically, the way I did it above calculates the metric across all days (I think?), but we need to calculate it only based on the last day.
EDIT 3: Nvm, seems like it was actually correct. Probably. Well, if it is, then the new value with default FSRS parameters is 0.93, which is very different from 0.84.
This means that using average discounted stability would push optimal retention very high compared to using total knowledge.
Next I used parameters for one of my hardest decks where MRR is always at 0.7. I got 0.87 with the new metric.
Next I used parameters for a hard deck where MRR is 0.73. I got 0.85 with the new metric.
Next I used parameters for an easier deck where MRR is 0.87. I got 0.88.
So far
0.84 → 0.93
0.70 → 0.87
0.73 → 0.85
0.87 → 0.88
EDIT 4: I did some more testing to see if it ever gets stuck at 0.95. It doesn’t, that’s good.