Maximum Likeleyhood Higest Gain training
I noticed that after you have managed to get all your keys to a speed beyond your minimum threshold, you are only training on the most difficult letters, which are very often the rarest letters. Vice versa the rarest letter occur in normal writing least often, resulting in less training, but also less significance for the average typing speed.
Regarding an overall speed gain, it makes not so much sense to train the rarest letters to the same speed as the most frequent ones. Of course every letter should be typed with a certain speed and reliability, which directly increases speed through less errors.
It would make much sense to me to train the frequent letters to a higher speed than the less frequent letters. I could imaging an algorithm like:
- The Lower Speed Bound is set by some user setting, like in the traditional sense.
- The Upper Speed Bound is the average speed of the fastest letter.
- The target speed for every letter should be calculated by a scaling between the upper and the lower bound based on the frequency. With the right calculation (fixme: get the formula correct), the result would be to find the letter that would result in the highest improvement of overall/average speed by training. This is very close to a Maximum Likelihood calculation.
- The upper speed bound is self-adjusting, as frequent letter will occur in all words more frequent and get more training.
- Raising the lower bound will readjust the target speed for every letter, resulting in a selection of the next letter to train that again improves the overall speed most, while not getting stuck at the least useful letters.
- Setting the Lower Speed Bound to 0 should still allow for decent training for all but the least frequent ones. At least for starting to learn, that would allow for a natural learning behavior without any artificial long initial phase, which can be extremely frustrating.