Home > Uncategorized > Primer estudio y primeras conclusiones. ¡Hay que mejorar!

Primer estudio y primeras conclusiones. ¡Hay que mejorar!

July 15th, 2009

Hola a todos de nuevo. Hacía bastante tiempo que no posteaba ningún post debido a exámenes y demás. Han ido bastante bien :)

A continuación os cuelgo el primer estudio un poco serio que hemos hecho para hacer la primera toma de contacto con el data Mining en Poker online. Ya os avanzo que las conclusiones han sido un poco malas y que hemos cometido varios errores de bulto, pero por algo se tiene que empezar ;)

Como ya sabéis, la minería de datos (DM, Data Mining) consiste en la extracción no trivial de información que reside de manera implícita en los datos. Dicha información era previamente desconocida y podrá resultar útil para algún proceso. En otras palabras, la minería de datos prepara, sondea y explora los datos para sacar la información oculta en ellos. Bajo el nombre de minería de datos se engloba todo un conjunto de técnicas encaminadas a la extracción de conocimiento procesable, implícito en las bases de datos.

Dentro de todas estas técnicas nosotros haremos hincapié en la clusterización.
“Clústering” es el proceso de agrupar datos en clases o clústeres de tal forma que los objetos de un clúster tengan una similitud alta entre ellos, y baja (sean muy diferentes) con objetos de otros clústeres.

Nuestra fuente de información será una inmensa base de datos de más de 22 millones de manos de Texas Hold’em No Limit 50. Una vez tengamos nuestra base de datos con las 22 millones de manos, haremos diferentes filtros para poder tratar mejor la información (preproceso), seleccionaremos los atributos más relevantes y pasaremos al proceso de clusterización. Mediante el análisis de tres experimentos, mostraremos las diferentes posibilidades que ofrecen los distintos algoritmos más conocidos hoy en día: X-means, K-Means y EM.

Para realizar todos los experimentos haremos uso de la potente herramienta: Weka (Waikato Environment for Knowledge Analysis – Entorno para Análisis del Conocimiento de la Universidad de Waikato) es un conocido software para aprendizaje automático y minería de datos escrito en Java y desarrollado en la Universidad de Waikato. Con este software trataremos de lograr nuestros objetivos, que no son otros que estudiar los distintos perfiles existentes en el Poker Online para así poder explotar debilidades y pulir defectos de los jugadores.  ¿Lo conseguiremos?

Ya os avanzo que no :( En estudio no hemos conseguido los resultados esperados. Pero ha servido para darnos cuenta de muchos de nuestros defectos que vamos a pulir.

Hemos cometido muchos errores, el más grave de los cuales ha sido subestimar el preprocesamiento de los datos. Antes de lanzarte hacia un ejercicio de clusterización debes estudiar concienzudamente los datos a tratar. Si bien es verdad que nuestro primer error ha sido tratar con una base de datos demasiado escasa (por los atributos que queríamos analizar), no es menos cierto que quizás el nivel escogido tampoco ha sido el adecuado. Debíamos haber tratado de importar una base de datos de un nivel más elevado de juego (e.g. NL200+) dónde los jugadores son mucho más sistemáticos jugando y no existe tanto jugador ocasional.
A raíz de qué cantidades de manos son necesarias para cada stat, ha surgido una discusión en un importante foro de poker. En ella se discute sobre la cantidad de manos para considerar una estadística fiable y salen a relucir conceptos como el intervalo de confianza. Aspectos que deberíamos haber tenido muy en cuenta antes de lanzarnos a la clusterización de los datos (y más con tantos atributos) ya que sólo que un atributo contenga valores dispares puede hacer que toda la clusterización se vea afectada (no digamos si son más de dos atributos los que tienen valores no fidedignos). Es por esto, por lo que creemos que no hemos obtenido todo lo que cabía esperar de nuestros experimentos, aunque hemos de resaltar, que en el último experimento, los resultados han sido muy esperanzadores porqué ya veíamos dónde estaba el problema y, consecuentemente, filtramos con muchas más manos y menos atributos.

Aún con todas las dificultades que nos hemos encontrado, hemos aprendido mucho sobre clusterización, llegando a la conclusión que para nuestro problema era mejor hacer uso del algoritmo EM en contra de usar el K-medias. También nos hemos familiarizado con usar la herramienta Weka (básica para cualquier trabajo de Data Mining) y ver sus infinitas opciones en filtrados, preprocesamiento, reglas de asociación, visualización de atributos, etcétera. Otra cosa a tener en cuenta es que nos hemos enfrentado a un problema “real”, con una ingente cantidad de datos por filtrar. Sólo la importación de los datos ya ha llevado más de 50 horas. Esto sumado a que la base de datos que crea el Holdem Manager no es conocida (hay muy poca documentación sobre cómo son las tablas) ha hecho que dedicáramos mucho tiempo en hacer ingeniería inversa para poder sacar nuestros datasets.

A través de la lectura del documento, se puede adivinar que como trabajo futuro lo primero que haremos será preparar bien los datos y hacer un estudio concienzudo sobre qué atributos usar y por qué, calculando qué cantidad de muestras necesitamos para tener ese dato con un intervalo de confianza suficiente para nuestro análisis. Por ejemplo para el cálculo del atributo 3bet  (fuente):

Si asumimos la stat dentro del rango 2-9% (lo cual resulta razonable), entonces no deberíamos permitirnos un error mayor al 0,5%.
Para ello podríamos calcular el peor escenario, que se daría en el 9%, y asumiendo ese rango de error.
Si aplicamos esta fórmula:

para determinar el tamaño muestral que necesitamos.
Calculando para:
p (con techito) = 0.09
E = 0.005
z = 1.96

Entonces llegamos a que necesitamos un tamaño muestral n>=12585 manos.

Y eso aplicado a una stat que es preflop (3bet), imaginemos los stats que ocurren aún con menos frecuencia como un “River continuation Bet” o similar.

Solamente haciendo un análisis similar con todos los atributos que consideremos necesarios para hacer clústering y filtrando con el número de manos más restrictivo de todos ellos, podremos estar seguros que, en caso de no obtener resultados satisfactorios con los algoritmos de clústering, es problema de que los algoritmos no están suficientemente perfeccionados o que no es un problema en el que aplicar clústering nos aporte nada (que podría ser una conclusión errónea de este trabajo).

Otra área muy interesante que nos gustaría haber podido tratar pero no nos ha sido posible por la incoherencia de los resultados obtenidos es la de reglas de asociación. Las reglas de asociación nos permiten atacar por otro bando nuestro problema y nos podrían llegar a dar información muy interesante acerca de cómo se comportan los perfiles de jugadores (en caso de conseguir clusterizar) o jugadores aislados (en caso de no poder clusterizar). Un enfoque que creemos sería muy práctico sería el de ir definiendo acciones claves (a criterio de experto) para ver cómo actúa cada perfil. Por ejemplo el comportamiento de un jugador cuando es robado por un perfil agresor y tiene cartas Premium (KK++) de mano. Ir definiendo numerosas reglas de este estilo e ir llenando nuestro data set con las distintas acciones que nos va respondiendo la base de datos (e.g % de call, raise y fold). Hay que destacar que esta manera de tratar el problema es mucho más compleja que lo que hemos estado haciendo hasta ahora, ya que implica unas sentencias SQL mucho más elaboradas y un agrupamiento en forma de Datasets muy complejo de realizar, pero creemos que es mucho más interesante las reglas que podríamos sacar así que no las reglas que sacaríamos si tratáramos la información como en el Clústering (con tantos por ciento de cada atributo).

Así que el siguiente paso está claro.  Trabajar con un dataset de NL 200+ (ya estoy importando sólo quedan 52 horas XD) y ser menos ambiciosos con el número de atributos a usar y decidir qué cantidad de muestras mínimas necesitamos para ellos (haciendo el cálculo anterior del 3bet para todos ellos). En eso estamos ahora =)  ¿Ideas sobre qué atributos usar?

En el siguiente post, colgaré la preselección y el estudio de cada atributo con el número mínimo de muestras necesarias. A ver que os parece.

Trabajo (report)

Fuente de los datos

Tutorial Weka I y II

  1. July 15th, 2009 at 11:30 | #1

    Interesante trabajo.

    Mucho ánimo y si necesitáis ayuda con el Java ya sabéis donde estoy.

  2. Turing
    July 16th, 2009 at 05:16 | #2

    Hola

    Lo primero es felicitar por este gran trabajo, una buena iniciativa. Me alegra conocer gente que piensa como yo: la mejor forma de desarrollar una estrategia de poker es aplicando las matemáticas :)

    Mi sugerencia es que este análisis profundo de una gran muestra de partidas de poker, debe abordarse o enfocarse desde el punto de vista de la TEORÍA DE JUEGOS.

    Considero que el objetivo no se trata de determinar los valores medios o normales de diferentes estadísticas, o conocer su distribución de probabilidad( de frecuencias para ser más estricto). Se trataría de desarrollar una estrategia de juego que permitiera explotar satifactoriamente la forma de juego global o conjunta que se da en un determinado nivel de mesas de juego: NL50, NL200, etc. Esta es una línea de trabajo que contemplo desarrollar.

    Otra línea de trabajo que también estoy abordando es desarrollar estrategias suficientemente cercanas al equilibrio nash.

    En cualquier caso, cualquier línea de trabajo que se siga es muy compleja, requiere de enormes cálculos, exige tener todas las ideas y los conceptos claros… esto es un trabajo que muy pocas personas están dispuestas a realizar o capacitadas para hacer; en mi caso intentaré llegar todo lo lejos que me permitan los medios de que dispongo.

    Pues mucho ánimo, y a seguir trabajando

    WE CAN

  3. Pachem
    July 17th, 2009 at 15:59 | #3

    Ante todo agradecerte esta labor que estás haciendo por el poquer on-line. Espero que sea muy útil.

    gracias!

  4. July 23rd, 2009 at 17:49 | #4

    ¡Muchas gracias a todos por vuestros ánimos!

  5. October 1st, 2009 at 18:58 | #5

    Buenas:

    Gracias por estudiar poker+IA y enhorabuena, aunque los resultados no hayan sido los mejores, pero eso suele pasar.

    Soy un estudiante de ingeniería informática de la CarlosIII de Madrid.

    Para una asignatura ( http://www.caos.inf.uc3m.es/index.php?option=com_content&task=view&id=19&Itemid=26 )
    necesitamos datos con los que trabajar. Habíamos pensado trabajar sobre el poker, aunque aún no tenemos muy claro el objetivo. Para ello necesitamos manos.

    En la fuente de su trabajo (http://www.hhrepository.org/PSNL50.html) para bajarse las manos hay que pagar. Como en el resto de sitios de internet que hemos visto. También he visto que hablan sobre si es lícito pagar por ello (http://jesusnubiola.com/poker/?p=29#more-29)

    Conocen algún sitio en el que se puedan descargar manos gratuitamente. Si fuéramos una empresa, pagaríamos, pero al ser estudiantes no podemos permitirnos unos gastos por estos motivos.
    ¿Podrían ustedes, por favor, proporcionarnos manos para nuestro trabajo? Les mantendríamos informados de nuestros avances.

    He visto que comentan: “Varios foreros de poker-red se han ofrecido a darme sus databases para colaborar con el proyecto.”
    Yo me había planteado esta idea, pero no sé si lograremos encontrar suficientes manos.

    Muchas gracias.

  1. No trackbacks yet.
Comments are closed.