Categorías
Universitario Videojuego

Datos y modelos

El Análisis de Datos es un campo que en los últimos 15-20 años se ha desarrollado muchísimo gracias a la Informática, siendo muchos de los modelos y algoritmos utilizados de muy reciente creación. Esta lección es importante porque con datos y modelos trabajaremos durante todo el curso.

Todo lo que estudiaremos en este curso se engloba dentro de lo que hoy llamamos Ciencia de Datos, probablemente el gran paradigma científico de nuestro tiempo. Esta «nueva ciencia» no es más que el Análisis de Datos de toda la vida, pero potenciado enormemente por las herramientas informática que ahora tenemos a nuestro alcance. De esta manera, nuestro objeto de estudio en este curso, son dichas herramientas que han potenciado tanto el Análisis de Datos. En particular las que forman parte de la Ingeniería del Software (concretamente las que comprende la Minería de Datos que veremos en el siguiente tema) y las que se asocian con la llamada Inteligencia Artificial (principalmente el Aprendizaje Automático del que ya hemos hablado).

Datos

Los datos son representaciones cuantitativas o cualitativas de los atributos de una cierta entidad. Estos atributos pueden ser numéricos (discretos o contínuos) o categóricos (nominales u ordinales). Muchas veces hay que trabajar con la información de entrada hasta convertirla en una representación con la que podamos trabajar, como transformar toda la información de telemetría de un casco de realidad virtual a vectores de características (feature vectors).

Los datos son simplemente eso, datos, y el término Big Data -tan popular hoy día- es una forma de referirse a datos masivos, datos que existen a tan gran escala que su procesamiento requiere de nuevas metodologías y herramientas. Como se verá en el tema de la Minería de Datos, los datos tienen su propio «ciclo de vida»: hay que adquirirlos, prepararlos debidamente en particiones, usarlos para el entrenamiento, para la validación y hasta para las pruebas finales.

Modelos

Los modelos son simplificaciones de fenómenos de la realidad que de alguna manera encierran un «patrón subyacente». Algunos modelos de los que hablaremos en este curso son los árboles de decisión, las redes neuronales artificiales, las máquinas de vectores de soporte, etc.

Entre las distintas clasificaciones que podemos realizar de los modelos, existen modelos paramétricos (inmutables y más rápidos) y modelos no paramétricos (se van desarrollando según tratan más datos, lo que los hace más flexibles).

Como la verdadera utilidad de un modelo no es tanto memorizar los problemas y soluciones del pasado sino «generalizar» ese conocimiento para ser capaces de resolver problemas desconocidos, el modelo «perfecto» será aquel que evite el sobreajuste (overfitting), prestando demasiada atención al ruido y la variabilidad del conjunto de datos de entrenamiento, y también el subajuste (underfitting), no llegando a «pillar» ni las generalizaciones más obvias entre los datos de entrada y de salida.

Partición de datos

Para realizar Aprendizaje Automático, tradicionalmente se suele realizar una partición de datos en tres partes. La primera se corresponde con los datos de entrenamiento, que sirven realmente para ajustar el modelo (paramétrico, obviamente) modificando sus parámetros. La segunda son los datos de validación, con los que medimos lo buena o mala que ha sido la fase de entrenamiento y que nos permite ajustar los hiperparámetros (llamados así porque no son parámetros del modelo, sino parámetros del proceso de aprendizaje que está por encima y que sí fueron establecidos por el desarrollador) para poder repetir el entrenamiento todas las veces que haga falta. La tercera partición contiene los datos de prueba, que deben guardarse en secreto para usarse únicamente al final del proceso de aprendizaje, para dar una medida realista final sobre la calidad del sistema obtenido.

Para que la manera en que hacemos esta partición no afecte demasiado al resultado, existe la técnica de la validación cruzada (cross-validation) que, por ejemplo, divide todos los datos de entrenamiento y validación en k particiones (k-fold cross-validation) y repite el proceso de aprendizaje k veces, eligiendo un bloque de validación distinto cada vez. De esta manera es el promedio de todas las validaciones el que se utiliza para decidir cómo cambiar hiperparámetros.

De todas formas, cuidado con «jugar» con las distintas particiones de datos porque voluntaria o involuntariamente podríamos incurrir en una fuga de datos (data leakage), introduciendo en la entrada del proceso información que en realidad sólo debería ser información de salida.

Uso de datos y modelos

Los datos reales nunca son perfectos ni apuntan de manera determinista a un sólo «modelo perfecto». Es importante entender que existe el ruido y la variabilidad, además de trabajar con otros términos estándar, como es el espacio de características (feature space), un espacio matemático multidimensional donde cada dimensión se corresponde con una de las características con las que trabajarán los modelos (siendo cada una de estas una variable que representa un atributo de las entidades reales con que trabajamos). Cada muestra (sample) es la unidad mínima de observación, un punto concreto en ese espacio de características multidimensional (ej. el vector de características que decíamos, o si se prefiere, una fila en una hoja de cálculo).

Herramientas

Las herramientas más utilizadas en este área comprenden un conjunto de algoritmos, bibliotecas software y entornos de desarrollo que facilitan la creación de sistemas capaces de aprender a partir de datos. Estas herramientas permiten realizar tareas como la preparación y el preprocesamiento de los datos, el entrenamiento y la validación de modelos, la evaluación de su rendimiento y su posterior despliegue en aplicaciones reales.

El lenguaje de programación estrella para desarrollar y trabajar con estas herramientas (y muchas otras) actualmente es Python. A día de hoy se hace necesario instalar todo un ecosistema de trabajo que puede consistir en un gestor de entornos como Anaconda y luego algún editor moderno de Python como Jupyter Notebooks o Visual Studio Code (Google Colab es interesante también, aunque sólo funciona online). Estos editores permiten programar, ejecutar y documentar -todo a la vez- el trabajo que hagamos, lo que se conoce como cuaderno interactivo. También es importante conocer los fundamentos de la sintaxis orientada a datos, que es como vamos a usar Python principalmente, recurriendo a las secuencias (Sequences) y los marcos de datos (DataFrames) que, gracias a una biblioteca como Pandas, son como hojas de cálculo virtuales en las que organizar la información.

A día de hoy los videojuegos trabajan con telemetría en la nube y existe el perfil de Machine Learning Operations (MLOps), responsable de poner en producción, mantener y automatizar sistemas de Aprendizaje Automático. Si hablamos de infraestructura hay sistemas estándar como DeltaDNA, Unity Analytics, GameAnalytics especializadas en analítica de videojuegos, y también puedes montar tu propia infraestructura usando servicios como Redshift (de la plataforma Amazon Web Services, ó AWS) o BigQuery (de Google Cloude Platform o GCP). Los modelos de Aprendizaje Automático en videojuegos no sólo se usan para predecir sino para servir diferentes versiones de un nivel, precios de tienda o curvas de dificultad a dos grupos de usuarios en tiempo real, realizando las famosas pruebas A/B (A/B Testing) o haciendo Personalización Dinámica, buscando siempre optimizar la retención o las ganancias.

Más información

Para complementar es recomendable consultar otros documentos.