lunes, marzo 02, 2009

Fútbol, matemáticas y otras mentiras

Futbol picanteHace un par de días viendo el programa de Fútbol Picante de ESPN, los comentaristas criticaban la forma en como asignan los partidos a cada arbitro, ya que igual ponen a novatos en partidos donde errores arbitrales pueden causar controversia - por ejemplo partidos donde estén jugando equipos con probabilidades de descender a la 1ra división A -.

En los comentarios se decía que la comisión de árbitros - De la liga Mexicana de Fútbol - en "teoría" no asigna a los árbitros manualmente, para eso existe un "ordenador" que se encarga de asignar a los árbitros, pero los comentaristas se preguntaban cual es el criterio que utiliza dicho "ordenador" para realizar la selección.

Ya que mencionaron que no parece que utilice la información del torneo ni el desempeño previo de los árbitros para decidir que arbitro debe participar en que partido.

Y bueno uno que no tiene nada que hacer, empece a racionalizar sobre como esta funcionando ese "ordenador" y como debería de funcionar.

Tomando como premisa los comentado por los participantes del programa, donde no se puede apreciar un patrón en la asignación de los árbitros, la primera idea que me viene a al mente, es que posiblemente este usando un algoritmo de números pseudo-aleatorios.

Existen varios algoritmos para la generación de numero pseudo-aletorios, en donde se busca que los números generados a partir de una semilla, estén distribuidos lo mas uniformemente posible en una distribución normal, es decir que los números no estén "cargados" hacia algún lado, que tengan un periodo largo, es decir que no se repitan frecuentemente y que sean reproducibles una y otra vez con la misma semilla.

Uno de estos algoritmos es el Congruencial Mixto Lineal, es cual utiliza el numero previamente generado para la generación del numero siguiente:

pseudo

Donde:
X0 = es la semilla ó numero inicial (X0 > 0)
a = el multiplicador (a > 0)
c = es la constante aditiva (c > 0)
m = el modulo (m > X0, m > a y m > c)

Para mas información ir a "Generador congruencial lineal mixto"
Este tipo de generadores se emplean en el desarrollo de aplicaciones de Simulación para eventos discretos, los cuales permiten "modelar" escenarios mediante sistema de computo.

Volviendo al tema principal, si tal "ordenador" es el que asigna los árbitros y utilizar simplemente la asignación aleatoria a partir de numero pseudo-aleatorios, entonces las asignaciones de los árbitros van a seguir siendo como hasta ahorita "erráticas" e ignorando la gran cantidad de información historia que se genera partido tras partido durante un torneo de fútbol.

Si lo que se busca es tomar esa gran cantidad de información disponible y que sistema de computo la analice para determinar cuales son los árbitros mas óptimos para cada partido, entonces estamos entrando en el campo de la Inteligencia Artificial.

La inteligencia Artificial en términos simples, consiste en hacer que un programa de computo funcione lo mas parecido posible al razonamiento humano. Por ejemplo áreas como la lógica difusa son utilizadas para resolver problemas que por medio de algoritmos seria muy complejo describirlos, pero sin embargo se cuenta con mucha información sobre el problema, por lo tanto se utiliza un razonamiento "casi" humano para tomar una decisión a partir de los datos disponibles.

Para hacer uso de IA, se parte de que quizás la información sea necesario "normalizarla", es decir atenuar picos que se van a extremos, el siguiente paso consistiría en modelar una red neuronal en base a la arquitectura elegida para nuestra red neuronal.



En la entrada de los datos a nuestra red neuronal se asigna un peso especifico para cada tipo de dato - por ejemplo a la mejor tiene mas peso especifico el desempeño de un arbitro durante los partidos del torneo, que el peso que tiene el desempeño en el partido anterior, ya que un partido malo lo puede tener cualquiera - los valores de entrada y los pesos para cada tipo de datos conforman lo que se conoce como la función de propagación, esta función se encarga de combinar las entrada y los pesos; una función de propagación común es la sumatoria de los productos entrada-peso.

Activacion

Donde w representa el vector de peso de la entradas y x el vector de entradas a la red neuronal. Una vez que se calcula el resultado de la función de propagación, este valor se pasa a la función de activación o transferencia, la cual puede ser una función lineal, pero es mas común el uso de funciones sigmoidales - logaritmicas -

activacion sig

El resultado de la función de activación se puede comparar con un valor de umbral, para determinar si los datos entrada activan la neurona o no.

La asignación de los valores correctos de los pesos generalmente se hace de manera iterativa, donde a la red neuronal se van asignando valores de entrada, denominados grupo de entrenamiento, y en base al resultado se ajustan los pesos, con la finalidad de ir "creando conocimiento" en nuestra red; a este proceso se le conoce como entrenamiento de la red neuronal.

Una vez que a red ha cumplido con su proceso de entrenamiento, ahora si se le asignan datos de entrada para que con el conocimiento adquirido nos ayude a tomar decisiones factibles, es decir tomar la información del torneo actual, el desempeño de los árbitros y tratar de asignar al arbitro correcto para cada partido.

Aunque el concepto de redes neuronales se escuche muy de ciencia ficción y mas si lo tratamos de emplear a un problema tan vanal como el expresado en el post, la realidad es que muy probablemente utilicemos la inteligencia artificial mas seguido de lo que nos imaginamos, por ejemplo:
  • La cámara fotográfica que realiza focus automático de nuestros objetivos
  • La cámara que busca y enfoca rostros en nuestras escenas
  • La cámara fotográfica que se dispara cuando alguien sonríe
  • El programa que de gestión de fotos que reconoce rostros y nos ayuda a catalogar nuestras fotos
  • La TV HD que toma información de iluminación del programa que se esta transmitiendo e información de luz del ambiente donde se encuentra la TV para así auto-ajustar el brillo y el contraste.
Entre otros muchas aplicaciones mas. Para mas informacion sobre redes neuronales visitar:

Tarjetaroja

En fin un momento de ocio me llevo a un estado de análisis y razonamiento mas alla de lo que yo hubiese querido. Señores de la FemexFut si quieren menos criticas en los árbitros, aquí esta la propuesta de solución, ah y estoy disponible para implementarla ;)

8 comentarios:

BlackTigerX dijo...

Excelente analisis, ya hiciste lo mas dificil, creo, en una de esas y lo escribes rapido y lo cuelgas por ahi en la nube o algo asi

Fernando dijo...

Un post muy divertido e informativo, y si cada vez va a ir tomando mas sentido la inteligencia artificial en el uso cotidiano y en la mayoria de los casos como dices, sin que nos demos cuenta.

Mario Alberto Chavez dijo...

@BlackTigerX, no seria mala idea crear una RN, creo que lo mas dificil seria el conseguir los datos necesarios.

@Fernando, si como digo el post "inteligencia articial" no se refiere a algo futurista, hay pequeñas tareas donde hace sentido, ya sea como IA o como Sistemas Expertos. Por cierto, tienes Twitter?

Fernando dijo...

@Mario, FCastellanos aunque esta recién creado y tengo mayormente musica de blip.fm

rommel.sv dijo...

Un libro que me encantaria recomendar/te ampliamente es : "Vladimir N. Vapnik. The Nature of Statistical Learning Theory. Springer". Donde, claramente y de manera bastante *sencilla* se explica que no es que sean de "ciencia ficcion" sino que todo, desde el perceptron hata las "maquinas de soporte vetorial" tienen un fundamento fomal, -- estadistico, matematico si asi quieres verlo --


Existe una biblioteca que muchos utilizan esta muy bien documentada y tiene una interfaz sencilla, el nombre es FANN ( Fast Artificial Neural Network ) ; Veo que tu blog es de .NET, no sabria decirte si existe un port, si no, pues podrias tener tarea qeu ahcer con eso.

Otra punto a comentar es que, desde el punto de vista teoria de segnales aleatorias, toda la familia que lleve el apellido "adaptable" tambien esta intimamente relacionado en su estructura formal. Asi que un embarron tambien por ahi podria ser bastante ilustrativo.

Saludos, da gusto ver este tipo de posts.

Mario Alberto Chavez dijo...

Gracias por la recomendación del libro. Tienes razón sobre que IA es un concepto con base matemática, lo que pasa es que programas y películas, hace que estos temas - para gente que no conoce, crea que es algo de ciencia ficción - sean poco creíbles, todavía recuerdo a un conductor de noticias hablando de "un cerrajero electrónico", para explicar el trabajo de desencriptar unos archivos.

La idea del "post" era un poco desmistificar este tema y llevarlo a un problema trivial.

Ya me di una vuelta por el sitio de FANN (http://leenissen.dk/fann/), se ve bien la herramienta, ademas existen "bindings" para propulares, como ruby, .NET, Java, etc.

Saludos y gracias por el aporte.

Eduardo dijo...

A mi me molesta que usen el término "ordenador", no estamos en España.

Eduardo dijo...

Ah, también me gustó el análisis...