lichess-org / lila

♞ lichess.org: the forever free, adless and open source chess server ♞
https://lichess.org
GNU Affero General Public License v3.0
15.66k stars 2.28k forks source link

Lichess' Cheat Detector #1157

Closed ghost closed 7 years ago

ghost commented 9 years ago

It is extremely easy to cheat with a handheld device. And when this is done, the blur rate is 0% so lichess' detection rate isn't as strong (it's still excellent, but it isn't as strong). Since blurs can't be incorporated into a cheater's assessment if they're using an external device, lichess should have some algorithms to figure out if a user has suddenly changed. This is [some of] what I look for when looking over someone.

  1. Detect anomalies in patterns. a) Low CPL + horizontal trend move times when playing [relatively high] rated opponents VS. high CPL + horizontal trend move times when playing [relatively low] rated opponents. b) If user begins to suddenly play plenty of high rated players when his default was his own rating's players. c) If a user gets on a winning streak with [relatively high] rated opponents all of a sudden.
  2. Detect trends. a) Similar to stock charts (ok, yeah, I'm not expecting us to have fork tools, triangle graphs, cup and candle graphs, etc), there should be a way to detect trends. This might be overkill, but just throwing this out there: usually, if a user is improving, they have an uptrend. But this uptrend isn't too steep, it's slow. A cheater, however, will have a very steep uptrend (conversely a sandbagger a very steep downtrend). Sudden [up]trends - especially if the rating is originally low - should be flagged.
  3. https://github.com/ornicar/lila/issues/935 the correspondence improvements would be reflected here.
Unihedro commented 9 years ago

Pattern matching and behavioral analysis... may be a task effective for Machine Learning? cc @clarkerubber

currently I just manually study the rating graphs or see if there's a noticeable bullet vs blitz vs classical difference.