In a Nutshell
For each deck options group in Anki, set the initial ease factor to the average ease factor of the mature cards in that deck options group.
I completed an addon to do this automatically for all decks. To install from within Anki, use Tools » Addons » Browse&Install and enter code: 633293039. Sourcecode can be found on the Anki avgEase github page.
Bug reports? Submit them to the github page.
How Anki’s Algorithm Works
Briefly, Anki’s scheduling algorithm works like this:
- Cards get an initial ease factor (a percentage)
- When you get a card right (Good), you multiply the last interval by the ease factor to get the new one.
- Mark a card Easy or Hard and we make the ease factor a little bigger or smaller.
- Mark a card Again and we make the ease factor even smaller and send the card to the relearning queue.
There’s much more to it, but this is all we need to know right now.
The Ease Factor
Let’s say a card has an ease factor of 250% (the default). If we waited 10 days to see the card, and we mark it as Good, then we’ll wait 10 days * 250% = 25 days until we see it again.
If we mark it Good the next time we see it, we’ll wait 25 days * 250% = 62.5 days.
And so on and so forth.
Notice the assumption here is that each interval will be 250% of the last one.
This seems like a pretty unlikely assumption to me. The model here is very simplistic. But what happens is that if the intervals grow too fast, we mark the card Hard or Again and slow down its growth. If the interval grows too slowly, we mark the card Easy and speed up how quickly the intervals grow.
It’s a system that relies heavily on feedback. As I see it, we know we’re going to get off track, so we rely on user feedback to slow us down or speed us up as needed.
Now if the intervals do grow in a fairly predictable manner, each being a certain percentage of the last, then after many trials and much feedback, the ease factor should settle around a pretty accurate value. In other words, the older a card is, and the more reviews it’s had, the more accurate it’s ease factor should be.
What About Young Cards?
So far, we’ve seen that, assuming that a good interval for reviews does grow as a set percentage of the last interval, it’ll be the older cards with lots of reviews that have accurate ease factors. The new and young cards will have inaccurate ease factors.
Every bit of feedback causes a smallish correction (15-20%) in the ease factor, so if cards are starting out with an ease factor that’s really off, it’ll take a long, inefficient time until the ease factor is around where it needs to be. You’ll be seeing the card either too early or too late for quite a while until the ease factor is about where it should be.
How can you give young cards a head start in life?
The closer we get that initial ease factor to the correct value, the less feedback (and time) it will take until that card is humming along smoothly.
But where to find a good initial ease factor?
Chances are, that your decks each contain similar cards. Within a deck, most of the cards probably have similar content, and with some exceptions, they’re probably mostly the same difficulty for you.
Imagine that we can somehow figure out the average optimal ease factor for the cards in a deck. If we set the initial ease factor to that average, then most cards would start out pretty close to their optimal ease factor. Those cards wouldn’t need so much feedback until their ease factor is adjusted to about as good as we can get it.
Well the closest we can get to this average optimal ease factor is to look at the ease factors of the oldest, most mature cards in the deck, and find the average of their ease factors.
That’s the best we can do.
And it turns out, it’s not that hard to do since the ease factor and interval for each card is listed in Anki’s database. We just need to search for mature cards that are in our deck options group and find their average ease factor. That’s the ease factor we should use as the initial ease factor for all cards.
One handy way to spot mature cards it to look for cards with an interval greater than some arbitrary (but large) number of days. This way you know the card has been reviewed enough to give Anki a good amount of feedback.
Where’s the Cut-off for Mature Cards?
If you look in the Anki manual, and at what’s been written online, you’ll see 20 days pop up again and again.
I think Damien (Anki’s creator) came up with this number as an arbitrary cut-off point between young and mature. And this 20-day figure seems to have stuck. (Oh yeah, and the 20-day cut-off is what’s used in Anki’s reports.)
However, I’ve found that some of my decks are pretty easy. If I adjust the ease settings until I only get 80 to 90 percent of my reviews right, then 20 days really doesn’t represent a mature card.
For that reason, I’ve switched to using a 90-day cut-off point.
A better approach might be to look at a percentage of your cards. Perhaps sort the cards by interval length and look the top 25%.
Can we Automate this?
I have an addon that I wrote for myself that does this. Unfortunately it’s tied up with a lot of code that does a bunch of other things. I plan on separating itout into a separate addon and posting it on github fairly soon.
In the mean-time, there may already be an addon that does this. Since I have my own, I actually haven’t looked.
Hot off the presses! I just released the addon.
- AnkiWeb Code: 633293039
- GitHub: Anki avgEase