Por un lado, la detección de datos que no encajan bien en el patrón habitual es algo que se usa mucho en ciberseguridad, también en la seguridad de los videojuego para, por ejemplo, detectar las trampas de los jugadores. Por otro lado, en el mundo del marketing siempre ha sido fundamental analizar las compras de los clientes y estudiar las asociaciones entre los distintos productos que adquieren para plantear ofertas, descuentos, etc. En los videojuegos esto no es distinto ni a nivel de compra ni a nivel de comportamiento dentro del juego.
Anomalías
¿Qué es una anomalía? Pues un patrón o una simple observación en los datos que no se amolda a la noción definida de «comportamiento normal» para los mismos. Se distinguen distintos tipos de anomalías:
- Puntuales: Un único registro completamente fuera de la norma (ej. un jugador suma 1 millón de monedas de oro a su marcador en un solo segundo).
- Contextuales: El dato es normal aisladamente, pero anómalo en un contexto dado (ej. hacer 500 puntos de daño en un ataque estando el personaje recién creado, todavía a nivel 1).
- Colectivas: Un conjunto de datos que juntos indican anomalía aunque individualmente no lo sean (ej. la secuencia exacta de clics que hacen falta para «farmear» recursos en un juego y que son características de cierto tipo de bots que conocemos).
Métodos estadísticos y basados en proximidad
Como enfoques estadísticos o basados en distancia tenemos Z-Score o IQR. Consiste en asumir distribuciones teóricas o en medir desviaciones respecto al centro. Son métodos eficaces pero limitados ante datos de alta dimensión.
k-NN para Anomalías, por otro lado, evalua la densidad local. Si un punto está muy alejado de sus k vecinos más cercanos, entonces se considera una anomalía.
LOF (Local Outlier Factor) mide la densidad local de un punto comparada con la densidad de sus vecinos. Es un método excelente para encontrar anomalías en conjuntos de datos con regiones de densidades variadas.
Métodos basados en árboles y aislamiento
Según el «principio de aislamiento», en lugar de modelar los puntos normales para buscar aquello que queda fuera, debemos centrarnos en aislar directamente las anomalías.
El funcionamiento del algoritmo Isolation Forest consiste en construir árboles de decisión aleatorios. Como las anomalías son «pocas y diferentes», requieren menos divisiones (cuts) para quedar aisladas en las hojas del árbol. Este algoritmo es extremadamente rápido, muy escalable y no requiere calcular distancias costosas entre pares de puntos.
Métodos basados en reconstrucción
Pensando en un sistema que haga reducción de dimensionalidad pero que luego pueda hacer reconstrucción de la información «perdida» surge esta idea: entrenar un modelo (como un PCA, o un autoencoder -de los que hablaremos en Aprendizaje Automático-) hasta que aprenda a comprimir y reconstruir únicamente el comportamiento normal. ¡De esa manera las anomalías quedan automáticamente descartadas!
Se habla de error de reconstrucción (reconstruction error) cuando a este modelo le pasamos una entrada anómala y este no sabe cómo comprimirla/reconstruirla adecuadamente… sólo el hecho de que se dispare este error de reconstrucción ya estaría delatando el hecho de que estamos ante una anomalía.
Aplicaciones en videojuegos
Dentro de las cuestiones de ciberseguridad el caso más típicos es usar la detección de anomalías en la lucha contra las trampas (anti-cheat), cosa que puede hacerse detectando aimbots, speedhacks o modificación de paquetes de red mediante análisis de trayectorias o reconociendo casos de hipervelocidad en las entradas del jugador.
La economía in-game y el fraude es otra de las áreas de aplicación más claras: se pueden identificar duplicaciones de objetos (dupes), granjas de bots o transacciones fraudulentas con tarjetas de crédito.
Finalmente el mundo de la telemetría y la monitorización de servidores también se puede beneficiar de estas técnicas, detectando caídas de rendimiento, memory leaks o picos inusuales de latencia en la infraestructura multijugador, por ejemplo.
Análisis de relaciones entre datos
En el mundo del marketing siempre se ha hablado del «análisis de la cesta de la compra» (ahora diríamos carro o carrito de la compra), para por ejemplo asociar que «quien compra cerveza también compra patatas fritas». En el mundo de las tiendas online la cosa no es diferente y lo vemos tanto en las tiendas digitales tipo Steam, como dentro de los videojuegos a la hora de comprar objetos dentro de un juego de rol o a la hora de usar habilidades combinadas en un juego de acción.
Se trata de descubrir relaciones, patrones recurrentes o asociaciones ocultas entre datos que van juntos (pueden ser productos que compramos a la vez o eventos que ocurren simultáneamente en un sistema de transacciones).
Métricas de calidad para las reglas de asociación
Una regla de asociación sigue la forma X -> Y (donde X e Y son conjuntos de elementos disjuntos). La idea está clara, el hecho de encontrar X en los datos está asociado con encontrar Y… ¿pero cómo medimos la utilidad de dicha regla? Estas son algunas de las métricas más comunes:
- Soporte (Support): Porcentaje total de partidas o transacciones que contienen tanto X como Y. Mide la popularidad o frecuencia real de la regla en la base de datos.
- Confianza (Confidence): Probabilidad condicional P(Y|X). Mide la certeza de la regla, es decir: de todos los juegos o partidas donde se compró o eligió X, ¿en qué porcentaje también se compró o eligió Y?
- Elevación (Lift): Mide la fuerza de la asociación comparada con la probabilidad de que X e Y ocurran de forma totalmente independiente: Lift ((X -> Y) = Support (X U Y) / Support(X) x Support(Y)
Cuando en esta fórmula resulta que Lift = 1, tenemos independencia total (no hay relación entre X e Y); si Lift > 1, tenemos asociación positiva (ej. comprar X dispara la compra de Y); y finalmente si Lift < 1, hemos encontrado dos sustitutivos/antagonistas, una especie de asociación negativa (ej. quien equipa X en su personaje evita equipar Y).
Algoritmos principales
Existe un enorme desafío en la explosión combinatoria, es decir, que probar todas las combinaciones posibles de compras o equipaciones NO es computable cuando estamos hablando de cientos de productos en una tienda o cientos de objetos como armas, pociones, etc. en un videojuego. ¿Qué algoritmos existen, pues, para resolver esto?
El algoritmo Apriori se basa en la propiedad monotónica que nos dice lo siguiente: «Si un conjunto de datos es infrecuente, todos sus superconjuntos también lo serán». Esto nos permite podar masivamente el árbol de búsqueda reduciendo candidatos.
El algoritmo de Crecimiento de Patrones Frecuentes (Frequent Pattern Growth o FP-Growth) es una alternativa moderna más eficiente que evita las múltiples pasadas por la base de datos que realiza Apriori mediante la construcción de una estructura de datos comprimida en memoria, llamada el Árbol de Patrones Frecuentes (Frecuent Pattern Tree o FP-Tree).
Aplicación en videojuegos
Para diseñar una tienda digital con sus microtransacciones es habitual crear bundles o paquetes de cosméticos/ítems recomendados automáticamente según el historial o el carrito actual del jugador.
En lo relativo al equilibrado del juego (y el metajuego del mismo) es útil encontrar reglas de asociación para detectar combinaciones de habilidades, talentos o cartas indeseadas o que rompen el juego (synergies / OP builds) que los desarrolladores no anticiparon.
Y en el análisis de comportamiento de juego: es interesante identificar secuencias frecuentes de acciones que preceden a eventos clave (como completar una misión difícil o abandonar la partida), también mediante reglas de asociación.
Más información
Para complementar es recomendable consultar otros documentos.
- …
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.