fsrs-optimizer
fsrs-optimizer copied to clipboard
Feat/consider short term schedule [WIP]
Algorithm | Log Loss | RMSE (bins) | Parameters |
---|---|---|---|
FSRS-4.5 | 0.3236±0.1512 | 0.0433±0.0310 | 17 |
FSRS-4.5 + short-term | 0.3206±0.1489 | 0.0425±0.0302 | 17 |
FSRS-4.5 + short-term + w[17] | 0.3204±0.1487 | 0.0424±0.0299 | 18 |
FSRS-4.5 + short-term + w[17] + w[18] | 0.3195±0.1483 | 0.0415±0.0297 | 19 |
FSRS-4.5 + short-term + w[17] + w[18] + w[19] | 0.3194±0.1482 | 0.0415±0.0298 | 20 |
Algorithm | Log Loss | RMSE (bins) | Parameters |
---|---|---|---|
FSRS-4.5 | 0.3461±0.1681 | 0.0628±0.0455 | 17 |
FSRS-4.5 + short-term | 0.3417±0.1650 | 0.0608±0.0442 | 17 |
FSRS-4.5 + short-term + w[17] | 0.3418±0.1650 | 0.0608±0.0439 | 18 |
FSRS-4.5 + short-term + w[17] + w[18] | 0.3411±0.1648 | 0.0600±0.0439 | 19 |
FSRS-4.5 + short-term + w[17] + w[18] + w[19] | 0.3410±0.1648 | 0.0600±0.0439 | 20 |
Related code:
def stability_short_term(self, state: Tensor, rating: Tensor) -> Tensor:
new_s = state[:, 0] * torch.exp(self.w[17] * (rating - 3 + self.w[18]))
return new_s
def next_d_short_term(self, state: Tensor, rating: Tensor) -> Tensor:
new_d = state[:, 1] - self.w[19] * (rating - 3)
return new_d
@Expertium, I finished the benchmarking of four candidates considering short-term reviews. I prefer the FSRS-4.5 + short-term
because it doesn't introduce any extra parameters and reduce the RMSE(bins) 3.2% (weighted by ln(number of reviews)). What do you think of?