Quisimos hacer un test de Alfajores, y terminamos aplicando matematicas avanzadas

Todo empezó cuando con la escusa de explicar el algoritmo KNN hicimos un test que te indica que alfajor sos, la idea no era hacerlo exacto, sino entretenido, y nos dimos cuenta de un problema, casi siempre nos salía el Tatin, y esto aburría. Eso nos llevo a analizar que es lo que estaba pasando y eso nos llevo a terminar encontrando una relacion matematica entre temas que nosotros creiamos distantes.

Esta publicación es la segunda parte de "El algoritmo KNN y que alfajor serias", recomendamos leer primero esa publicación o por lo menos hacer el test (TODAVÍA NO LO HICISTE???!!!). 


Plano técnico de un alfajor imaginado por una IA 

¿Como hacer algo divertido?

Ultratoro, videojuego mendocino próximo a salir en Steam
En la industria de los videojuegos, hay un puesto llamado "Game designer" (diseñador de juego para los amigos), no hay que confundirlo con quien se dedica al arte del juego, los game designer no dibujan, no programan y no hacen el soundtrack ni efectos de sonido (Bueno en realidad hacen un poco de todo), así que la pregunta es: ¿Qué hacen y porque existe un puesto
específico para ellos?

Bueno, ellos se encargan de tomar decisiones, desde pequeñas hasta grandes, para darle al juego la experiencia única, y que sea divertido. Algunas decisiones parecen insignificantes pero no lo son como el famoso "The door problem" ( Info robada  prestada de este blog).

Imaginate que estás haciendo un juego...
  • ¿Hay puertas en tu juego?
  • ¿Puede abrirlas el jugador?
  • ¿Puede el jugador abrir todas las puertas del juego?
  • ¿O algunas puertas son decorativas?
  • ¿Cómo sabe el jugador la diferencia?
  • ¿Las puertas que se pueden abrir son verdes y las que no, rojas? ¿Hay basura apilada delante de las puertas que no puedes usar? ¿Has quitado los pomos de las puertas y ya está?
  • ¿Se pueden bloquear y desbloquear las puertas?
  • ¿Qué indica a un jugador que una puerta está cerrada y se abrirá, en contraposición a una puerta que nunca se abrirá?
  • ¿Sabe un jugador cómo desbloquear una puerta? ¿Necesita una llave? ¿Hackear una consola? ¿Resolver un puzzle? ¿Esperar a que pase un momento de la historia?

A todas estas cosas, alguien las tiene que resolver, y siempre teniendo en cuenta que tiene que agilizar la experiencia del jugador. Uno muchas veces no toma la dimensión de lo difícil que es agradar a los humanos, y nuestro test de alfajores no fue la excepción.

Nuestra travesía

Como contamos antes, el test nos daba por lo general el mismo alfajor, el tatin. Nosotros a esta situación le llamamos (de forma muy ingeniosa y original) "El sesgo Tatin", ustedes se preguntarán, ¿qué @$# es un sesgo?, un sesgo es un desvío que nos puede conducir a conclusiones incorrectas durante el resultado del estudio, es como podríamos decirle, un defecto de diseño. 

Fue luego de depurar y arreglar el código que nos enteramos de que teníamos mal puesto los nombres de los alfajores y en realidad el sesgo lo estaba dando el alfajor "Cofler Block",pero con ese nombre no sonaba tan bien, así que le seguimos llamando "El sesgo Tatin" a lo que nos estaba BLOCKeando.

El problema no era del algoritmo, estaba detrás de eso, pero necesitábamos primero que nada poder diagnosticarlo, y ahí fue cuando utilizamos nuestra primer arma, un método numérico basado en números aleatorios.

El Método Montecarlo

Montecarlo es un Barrio de Mónaco, famoso por albergar un circuito de la Formula 1 y por sus casinos. Inspirado en esto segundo fue que le dieron el nombre.

Si yo quisiera saber que posibilidades tengo de, al tirar un dado, tener determinado valor, podría analizarlo matemáticamente, o podría tirarlo muchas veces y contar las cantidades de veces que sale cada cara. Esta segunda manera es el método Montecarlo, así de fácil, simplemente repetís un evento aleatorio muchas veces y ves que pasa. 

El canal de youtube Quantum Fracture, lo utiliza para determinar el valor de PI en el siguiente vídeo (Metodo n°2):



Este método se utiliza mucho para evaluación de proyectos, donde hay tanto precios  estimados pero no seguros, de esta forma se puede saber cuanto es lo mas posible que termine costando.

Nosotros tenemos 6 características que nos definen el alfajor que sale y por lo tanto, lo que hicimos fue darles valores aleatorios a estas características muchas veces y ver cuales son los alfajores que salían con más frecuencia, nos quedo un gráfico así:



Se puede ver que el que mas sale es el guaymallén de fruta, pero en la práctica no sale tanto por que se necesita ser bieeeeen raro para ser un guaymallén de fruta, pero si sos raro es posible que te toque.

De esta forma pudimos diagnosticar numéricamente nuestro problema y ver, que tantas veces salia el Block más que los demás alfajores, el problema ahora es ¿Como hacemos para arreglarlos? o mejor aún, ¿por que nos están saliendo así?
Ahí fue cuando nos acordamos de un concepto matemático utilizado mucho en el arte. 

Diagramas Voronoi

Cortesia del blog de sushanteapen
Imaginemos que tenemos un plano, y en ese plano tenemos puntos distribuidos aleatoriamente a lo largo y a lo ancho, si separamos las regiones que estén más cercanas a cada punto, crearemos un diagrama voronoi, o como también se les llama "Polígonos de Thiesen". Tienen varias aplicaciones, por ejemplo, pueden analizar una posición de un partido de fútbol, te dirá que porción del campo de juego esta mas cerca de cada jugador en un momento dado y así, de forma muy simple y resumida, saber en ese momento quien tiene mayor dominio del campo de juego



Los polígonos que van quedando lo aprovechan algunos artistas como estilo.
Fantasma de Pacman en estilo Voronoid impreso en 3D
Fantasma pac-man estilo voronoi en impresión 3D por 3Dlirios

¿Por que esta herramienta nos ayuda? Fácil, por qué como el Test esta hecho en base al algoritmo KNN, con k=1, la etiqueta depende solo de la cercanía a un punto, y el diagrama voronoi, indica justamente eso, osea, LO PODEMOS VISUALIZAR!!!.

Nosotros teníamos 6 características distintas para cada alfajor, por lo tanto 6 dimensiones, y no se pueden graficar 6 dimensiones, por otro lado, para graficar voronoi en 3D existen pocas librerías en python, por que es un desafío en programación por varios aspectos (si quieren profundizar en esto dejamos este articulo pag 34) . 

Fuimos tomando de a 2 características y graficamos cada alfajor como un punto, empezamos a notar que habían algunos polígonos muy grandes y otros muy chicos, como el ejemplo de abajo, en esos puntos resulta lógico que si tomamos valores al azar es más probable que caigan dentro de los polígonos más grandes que de los de menor dimensión. por lo que en los alfajores con polígonos más grandes, intentamos achicarlos moviendo los puntos tanto de ese como de otros alfajores
Precio Vs Rareza
Romanticismo vs Pesadez
Rarerza vs Popularidad



La vuelta de rosca

¿Por que decimos entonces que emergieron propiedades raras con este test? Es posible que, lo que encontramos no sea tan impresionante para un matemático, pero a nosotros nos pareció súper raro y era algo que no esperábamos, menos, por que fuimos conociendo estos algoritmos y métodos por lugares súper distintos, pero al final nos dimos cuenta que todas están entrelazadas por que...

Aplicando el método Montecarlo con un algoritmo de KNN con k=1, no estamos haciendo otra cosa que sacar el volumen relativo de sus polígonos de Thiesen en n dimensiones.

Nosotros le llamaremos el teorema de Noaidata (Que por cierto, bastante flojo de papeles para llamarlo teorema, pero es que somos ingenieros), por lo qué, si alguien ya le puso nombre, si tiene alguna aplicación práctica, o si hay formas mejores de hacerlo (sin caer en métodos numéricos) honestamente no lo sabemos.

Como quedó el Test

Al final, aplicando toda esa teoría pudimos ver por donde modificar los distintos alfajores y terminamos con este diagrama. si todo esto para eso.
Antes
Después



No todos tienen la misma posibilidad de ocurrir, sin embargo, está mucho mas parejo que antes, y los alfajores que salen son mucho más queridos que el Block, lo cual lo hace más divertido.

¿Se dan cuenta de lo importante qué es un game designer?

Referencias

  • El problema de la puerta pueden verlo mejor en este blog
  • Si les interesa como analizar partidos de futbol con datos pueden ver el blog de sushanteapen
  • Para aprender métodos de programación para voronoi, recomendamos este articulo
  • Por último invitamos a revisar la pagina de steam de ultratoro con este link, un juego de un amigo de la casa

¿Necesitas ayuda?
Podes hacer preguntas aca abajo en los comentarios o en nuestros perfiles de linkedin que puedes encontrar en este link. Si estas buscando ayuda en proyectos grandes, nos podes contratar por medio de nuestra consultora haciendo click en este link . Hacemos ingenieria electromecanica, civil, desarrollo de software y varias cosas mas.

Comentarios

Entradas populares de este blog

¿Se pueden escribir algoritmos que evolucionen por si mismos? (Algoritmos genéticos/evolutivos)

Jugá mejor al truco usando ciencia de datos