domingo, 3 de julio de 2011

Map-Time Surfer

Participé en la competencia IEEE VAST Challenge 2011, en el mini-challenge 1 que se trataba de caracterizar un brote epidémico (tipo H1N1) en una ciudad ficticia (Vastopolis) a partir de 1.023.000 mensajes de texto con ID, latitud, longitud, fecha y hora.

La competencia era tanto de data mining (aplicar los algoritmos que sean necesarios para obtener la información para caracterizar la enfermedad a partir de esa parva de mensajes) como de visualización (ganar conocimiento de la enfermedad a partir de ver los datos de una forma efectiva).

Hice un programa en Processing para visualizar estos datos en el mapa, y lo presenté a la competencia con un video. Mi inglés es vergonzoso, pero aquí está:























The Camtasia Studio video content presented here requires JavaScript to be enabled and the latest version of the Adobe Flash Player. If you are using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Adobe Flash Player by downloading here.










Y este es el programita presentado (si los dioses de los permisos, los sistemas operativos, los navegadores y las máquinas virtuales quieren):



Hacer clic y arrastrar para apreciar la perspectiva 3D. Hacer zoom con la ruedita del mouse o las flechas arriba/abajo.

Cabe un agradecimiento para Lucila Santos (compañera de la materia de Visualización), que encontró el evento del accidente del camión, identificado como el disparador de la enfermedad. Sin ese dato todavía estaría tirándome los pelos en búsqueda de este origen.

Sé que el programa no está muy pulido, demora en cargar, tuve que sacar las imágenes de los puntos negros de los primeros 16 días (que igual no aportan nada) porque me quedaba sin memoria, y le toma un siglo en pasar a la pantalla de trayectorias (aunque solo la primera vez), pero como prueba de concepto me deja muy contento. :)

domingo, 15 de mayo de 2011

Treemap con intervalos de confianza



Esta es una idea generada a partir de un trabajo práctico de la materia Visualización de Información de la maestría en Data Mining que estoy cursando. El trabajo práctico pedía implementar un treemap.

Un treemap es una forma de mostrar información jerárquica usando rectángulos que ocupan el total del espacio de forma proporcional al valor de una variable.

La vuelta de tuerca que le di es mostrar la variabilidad de los datos a través de la animación, mostrando la media y los límites superiores e inferiores de un intervalo de confianza de forma alternada, en base a un nivel de confianza que se puede establecer interactivamente.

Los datos del ejemplo

Elegí mostrar 17.486 manos de póquer jugadas entre 29/10/2009 y 12/04/2011 en mesas on line de 6 jugadores, modalidad Texas Hold’em No Limit, apuestas entre u$s0,05/0,10 y u$s0,10/0,25. Las manos quedaron registradas en la base de datos del programa Holdem Manager, que permite realizar análisis y seguimiento del juego.

En la modalidad Texas Hold’em se reparten dos cartas a cada jugador, que luego se combinan con 5 cartas comunitarias. Hay cuatro rondas de apuestas.

En mesas de 6 jugadores las posiciones son las siguientes:

  • SB (Small blind, ciega pequeña): Apuesta de forma obligada la mitad de la apuesta mínima antes de ver sus cartas.

  • BB (Big blind, ciega grande): Apuesta de forma obligada la apuesta mínima antes de ver sus cartas.

  • EA (Early position, posición temprana): El primero luego de las ciegas. Jugar primero es una desventaja.

  • MD (Medium position, posición media): El siguiente a la posición temprana.

  • CO (Cutoff, posición de corte): El anteúltimo.

  • BTN (Button, botón que indica quien reparte): Es el último en actuar, lo que supone una ventaja.


Las cartas se pueden agrupar en las siguientes categorías (tomadas del Holdem Manager):

  • As y carta alta (As y K o As y Q)

  • As y distinto palo

  • As y mismo palo (cuando las dos cartas son del mismo palo se indica con una s (suited), por ejemplo A9s)

  • Conectores distinto palo (los conectores son dos cartas seguidas, por ejemplo 98 o T9 (T indica el diez (ten)))

  • Conectores mismo palo

  • Un hueco y distinto palo (un hueco es cuando falta una carta en el medio, por ejemplo KJ o 42)

  • Un hueco y mismo palo

  • Dos huecos y distinto palo (cuando faltan dos cartas en el medio, por ejemplo KT o 52)

  • Dos huecos y mismo palo

  • Par de ases

  • Par alto (KK, QQ o JJ)

  • Par medio (TT, 99, 88 o 77)

  • Par bajo (66, 55, 44, 33 o 22)

  • Mismo palo (otras)

  • Distinto palo (otras)


El jugador decide si jugar la mano o no principalmente en base a la posición y a las cartas que recibe. Si la posición es una de las ciegas y decide no jugar, pierde la apuesta obligada, por lo que en general estas posiciones tienen una expectativa perdedora.

Entonces resulta interesante analizar con qué categoría de cartas se jugó en cada posición y cuál fue el resultado. Quizás se pueda establecer si se está teniendo una estrategia equivocada con alguna categoría de manos o con algunas manos en particular.


La visualización

Los datos se muestran en rectángulos por categorías de manos, y se puede hacer zoom con clic izquierdo para ver la posición (SB, BB, EA, etc.) dentro de cada categoría, y luego para ver las manos en particular dentro de cada posición. Se puede volver a un nivel superior haciendo clic derecho.

El color de los rectángulos indica si esa agrupación de manos dio una ganancia positiva (verde) o negativa (rojo). El brillo también muestra la magnitud de la ganancia o pérdida. Colores oscuros indican manos en las que el resultado fue cercano a cero. Nótese que habiendo hecho zoom a una agrupación en particular, un recuadro puede ocupar un espacio grande pero tener un color oscuro, lo que indica que si bien dentro de la agrupación ese subconjunto es importante, no lo es a nivel general.

El intervalo de confianza muestra cuáles son las ganancias o pérdidas mínimas y máximas en base a los datos registrados, a un nivel de confianza determinado. Los recuadros se agrandan y achican en base a estos valores, y pueden cambiar de color si pasan de ganancia a pérdida o viceversa. A medida que se requiere un nivel de confianza superior, los intervalos se agrandan y la animación se precipita. Cuando se requiere un nivel de confianza inferior los intervalos se achican y la variabilidad se atenúa.

Los intervalos de confianza se calculan en base a la distribución t:

y ± t(α/2,W−1) * SE

donde y es la media aritmética,
α es el nivel de error (1-nivel de confianza)
W es el tamaño de la muestra
SE es el error estándar


Resultados del análisis

En base a la visualización, puede verse que para establecer intervalos de confianza pequeños se debe bajar mucho el nivel de confianza solicitado. Esto es esperable ya que se trata de un juego con alta incidencia del azar.

De todas maneras se pueden sacar algunas conclusiones interesantes:

  • Primero notemos que los pares de ases son claramente ganadores, y que para cualquier mano jugar en BTN y en CO da mejores resultados que jugar en BB y SB, conocimiento básico de cualquier jugador.

  • Pero me resulta inesperado lo notablemente redituables que se muestran los conectores de distinto palo.

  • Y como alerta se destaca la importante pérdida que he tenido con As y carta alta. Debo jugar de manera más conservadora estas manos.



Las herramientas

Se utilizó el lenguaje Processing (processing.org) y la implementación de treemaps que aparece en el capítulo 7 de Visualizing Data (Ben Fry, 2008).

Para establecer los intervalos de confianza se utilizó la biblioteca statdistlib (sourceforge.net/projects/statdistlib/) de Dr. Peter N. Steinmetz y Gregory Warnes.

Los resultados se verificaron con SPSS Statistics 17.0.