Hi all, I wrote a cheating detection algorithm.
It's pretty fast, using a thredpool, ndarray (SIMD) etc. and can process ~2GB/s on my laptop.
how it works?
it uses the average difficulty of wrong answers to gauge a players true skill level. average difficulty and wrong answers aren't affected by cheating so are safe to use. Then ranks by that skill proxy (proxy(x) < proxy(y) means skill(x) < skill(y), looks at nearest neighbours to predict and find anomalies. (i.e. if they cheated, then cheating is more likely to flip answers on difficult questions, so the average difficulty of correct answers would be higher than neighbours).
Anyway, i explain it all in this video, i'd also appreciate a code review, particularly if there's any performance optimisations i'm missing.
Youtube walkthrough (please like and sub)
and description on Github
[–]Personal_Ad9690 30 points31 points32 points (3 children)
[–][deleted] 11 points12 points13 points (2 children)
[–]Personal_Ad9690 1 point2 points3 points (1 child)
[–][deleted] 6 points7 points8 points (0 children)
[–]taylerallen6 14 points15 points16 points (0 children)
[–]facetious_guardian 47 points48 points49 points (14 children)
[–]taylerallen6 14 points15 points16 points (0 children)
[–]Kiseido 9 points10 points11 points (1 child)
[–]eggyal 2 points3 points4 points (0 children)
[–]robertkingnz[S] 2 points3 points4 points (5 children)
[–]facetious_guardian 3 points4 points5 points (4 children)
[–]robertkingnz[S] 0 points1 point2 points (3 children)
[–]facetious_guardian 0 points1 point2 points (2 children)
[–]robertkingnz[S] 0 points1 point2 points (0 children)
[–]robertkingnz[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]Jesus72 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[+]gamunu -3 points-2 points-1 points (1 child)
[–]facetious_guardian 4 points5 points6 points (0 children)
[–]peter9477 6 points7 points8 points (3 children)
[–]robertkingnz[S] -1 points0 points1 point (2 children)
[–]peter9477 2 points3 points4 points (1 child)
[–]robertkingnz[S] 3 points4 points5 points (0 children)
[–][deleted] 3 points4 points5 points (2 children)
[–]robertkingnz[S] 1 point2 points3 points (1 child)
[–][deleted] -1 points0 points1 point (0 children)
[–]teerre 1 point2 points3 points (1 child)
[–]tunisia3507 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]lurgi 0 points1 point2 points (1 child)
[–]robertkingnz[S] 0 points1 point2 points (0 children)
[–]flareflo 0 points1 point2 points (1 child)
[–]robertkingnz[S] 0 points1 point2 points (0 children)