SlideShare a Scribd company logo
1 of 62
Download to read offline
LA INTELIGENCIA ARTIFICIAL
EN LAS ORGANIZACIONES
CURSO 2009/2010




      IA en el Póquer Online
      Clasificador de manos Preflop




                  ANTONIO DÍAZ PONCE             100055301
                  RAÚL MARTÍNEZ FERNÁNDEZ        100054986
                  JAVIER GARCÍA-CUERVA VELASCO   100055253
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                                                       2009/2010



ÍNDICE

1.     INTRODUCCIÓN ................................................................................................. 4
     1.1     Descripción del Problema......................................................................................4

     1.2     Objetivos ..............................................................................................................5

     1.3     Posibles aplicaciones.............................................................................................6

2.     ESTADO DEL ARTE .............................................................................................. 7
     2.1     Programas que aprendan a jugar como una persona ..............................................7

     2.2     Clústering para agrupar tipos de jugadores .......................................................... 14

3.     DESCRIPCIÓN COMPLETA DE LOS DATOS Y FUENTES EMPLEADOS .................... 16
     3.1     Datos de entrada ................................................................................................ 16

     3.2     Datos adicionales ................................................................................................ 19

     3.3     Datos de Salida ................................................................................................... 20

4.     PREPROCESADO DE LOS DATOS ....................................................................... 21
     4.1     Estudio de los datos ............................................................................................ 21

     4.2     Procesado de datos ............................................................................................. 21

5.     EXPLORACIÓN DE LOS DATOS .......................................................................... 22
     5.1     Clases ................................................................................................................. 22

     5.2     Clasificadores...................................................................................................... 23

     5.3     Resultados .......................................................................................................... 35

6.     SELECCIÓN DE ATRIBUTOS ............................................................................... 37
     6.1     Técnicas de selección de atributos. ...................................................................... 38

     6.2     Ranker ................................................................................................................ 41

     6.3     Filter................................................................................................................... 43

     6.4     Wrapper ............................................................................................................. 43

     6.5     Comparativa resultados selectores de atributos................................................... 43

     6.6     Aprendizaje de las clases ..................................................................................... 45

7.     EXPERIMENTACIÓN ......................................................................................... 48



IA en el Póquer Online: Clasificador de manos Preflop                                                                      Página 2
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                                                  2009/2010


8. ANÁLISIS DE DIFICULTADES, RIESGOS Y APLICABILIDAD ....................................... 50
     8.1      Dificultades en la Obtención de la Solución.......................................................... 50

     8.2      Riesgos Previstos ................................................................................................ 50

     8.3      Análisis de Implantación ..................................................................................... 51

9.      ANÁLISIS DE LOS RESULTADOS Y CONCLUSIONES ............................................. 52

10. TRABAJOS FUTUROS Y POSIBLES MEJORAS ...................................................... 53

11. REFERENCIAS................................................................................................... 54

12. ANEXO: REGLAS DE PÓKER TEXAS HOLD’EM NO LIMIT ..................................... 55
     12.1 ¿Qué es el póker Texas Hold'em sin límite? ............................................................. 55

     12.2 ¿Es entonces el póker un juego de azar?.................................................................. 55

     12.3 La baraja de póker .................................................................................................. 55

     12.4 Manos de póker ..................................................................................................... 55

     12.5 La mano de No Limit Texas Hold'em ........................................................................ 61

     12.6 Empieza la mano (El Preflop)................................................................................... 61

     12.7 Las Tres Primeras Cartas (El Flop) ............................................................................ 61

     12.8 La Cuarta Carta (El Turn) ......................................................................................... 62

     12.9 La Quinta Carta (El River) ........................................................................................ 62




IA en el Póquer Online: Clasificador de manos Preflop                                                                 Página 3
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010



1. INTRODUCCIÓN
1.1 Descripción del Problema

        El Texas hold 'em Sin Límite [1] es una versión del juego del póquer (ver ANEXO).
Actualmente es la más popular y también es la más jugada en la mayoría de casinos y
campeonatos mundiales. Esta es la modalidad sobre la que realizaremos el estudio. En ella
cada jugador sólo posee dos cartas (cartas personales) y su jugada es la mejor combinación de
5 cartas que puede formar con las cartas que se van poniendo en la mesa (denominadas cartas
comunitarias).

        Hemos decidido realizar el estudio sobre el póquer, porque presenta diversas
características que lo hacen muy interesante para analizarlo desde el punto de vista de la
Inteligencia Artificial:

       •   Información incompleta
       •   No determinista
       •   Varios jugadores
       •   Toma de decisiones bajo incertidumbre
       •   Engaño
       •   Estudio del oponente

        El problema principal es la toma de decisiones en el juego del Póker ya que se basa en
unos razonamientos abstractos muy variantes, en el que el factor humano influye de manera
superlativa en la decisión.

       En una mano de póquer, las principales decisiones que se pueden realizar son:

       •   No ir: Lo que supone que el jugador deja de jugar
       •   Pasar: El jugador decide no subir ninguna apuesta
       •   Subir N: El jugador sube la apuesta del juego una cantidad “N”, podrá subir tanto
           como la cantidad de dinero de la que disponga
        Sin embargo, a pesar de que el conjunto de salida parece reducido, el conjunto de
variables a tomar en cuenta es mucho mayor, ya que, a la hora de tomar una decisión no sólo
depende de las cartas que se poseen, sino que también se tendrá en cuenta la posición que se
ocupa en la mesa y el modo de jugar de los contrincantes.

        Además el tiempo de respuesta también suele influir en el modo de juego de los
jugadores, por ejemplo, un jugador que no tiene segura su jugada tardará más en decidirse
que un jugador que tiene una buena mano.




IA en el Póquer Online: Clasificador de manos Preflop                               Página 4
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                          2009/2010


1.2 Objetivos

        El objetivo principal es obtener un programa o agente, que mediante una técnica de
inteligencia artificial que sea capaz de tomar las mejores decisiones posibles, en la primera
ronda de apuestas del juego (Preflop*1 [2]). Es decir, el programa no jugará una mano entera,
sino que sólo intervendrá en la primera parte. Desarrollaremos un Clasificador de Manos
Preflop, el cuál recibiendo la información de la partida, obtenga como salida una decisión
(Fold, Call, Raise N), que se parezca lo máximo posible a la decisión que tomaría un jugador
profesional.

Hemos decidido centrarnos únicamente en la primera ronda de apuestas porque:

     •   Realizar un agente que juegue todas las rondas sería un proyecto de gran envergadura,
         en el cúal habría que usar probablemente sistemas híbridos para llegar a obtener
         buenos resultados.

     •   La selección de manos preflop es el paso más importante en el Texas Hold’em, porque
         decide el resto de la mano.

     •   Podemos inferir técnicas usadas por profesionales (bluf, semi-bluf, robos, semi-robos,
         squeeze,…) una vez obtenido el clasificador.

     •   En el estado del arte no hemos visto que se haga exactamente lo mismo, aunque sí van
         más allá y desarrollan un jugador que juegue todas las ronas.

       Es cierto, que es complejo de valorar finalmente si hemos creado un buen jugador, o
hemos conseguido aprender las mejores decisiones, ya que el conjunto de posibilidades es
muy grande.

        En nuestro caso sería positivo que con estas decisiones consiguiésemos ganar el mayor
dinero posible cuando realicemos apuestas, y de perder la menor cantidad de dinero posible
cuando la jugada sea mala. Es decir, el objetivo a largo plazo no es ganar manos, sino jugar de
la mejor manera, para ganar el mayor dinero posible. Esto puede parecer contradictorio, pero
no lo es, ya que en el póquer prima la habilidad para ganar dinero, y muchas veces esto se
puede conseguir sin tener la mejor mano.
 1
* Denomina la ronda de apuestas anterior a que se saque el flop, es decir, el momento del juego en que
cada cual cuenta únicamente con las dos cartas cubiertas para tomar una decisión; suele utilizarse
frecuentemente para denominar un tipo de juego, es decir, para explicar cuáles son las estrategias en
cuanto a rango de manos, apuestas etc. que deben seguirse en este punto de la mano. El
comportamiento de los jugadores en el juego preflop es una de las variables más importantes que se
manejan en los trackers*2 ya que proporciona valiosos datos estadísticos que permiten hacerse una
idea del rango de manos con que el contrincante suele permitirse jugar y de qué manera se mueve con
cada tipo de cartas.

*2 La palabra tracker [3] se puede traducir literalmente como “rastreador” y es utilizada, por ejemplo
para referirse a los perros rastreadores. En relación al póker denominamos tracker de manera genérica
a los software utilizados para recoger e interpretar estadísticas de nuestros rivales.



IA en el Póquer Online: Clasificador de manos Preflop                                        Página 5
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


1.3 Posibles aplicaciones

        Si obtuviéremos un buen clasificador, este podría usarse, como complemento en
herramientas que ayudan a los jugadores online a tomar decisiones. Estas herramientas dan
probabilidades, simulando muchas partidas, dándote una buena estimación de qué decisión
tomar. Nuestro agente, podría aconsejar al jugador en función de que haría un jugador
profesional, o por ejemplo que habría hecho él en otra misma ocasión, dependiendo de los
datos con los que se entrene al agente. Siendo de esta manera nuestro agente como una
herramienta de aprendizaje del póquer.

        El agente, también podría usarse como parte de un jugador automático, esto sería
valioso para las casas de apuestas que albergan partidas de Póker Online, ya que, es necesario
un mínimo de jugadores para participar y para que los jugadores tengan un servicio de juego
24h podrían interactuar con estos jugadores creados mediante IA, aunque esto no sería lícito,
y sólo sería usado por salas de baja categoría, poco demandadas por la mayoría de los
usuarios.

        Este jugador automático también sería muy demandado por usuarios cuyo fin no es
aprender a jugar al póker, sino ganar dinero, pudiéndose crear bots, o programas autónomos,
capaces de navegar por las aplicaciones e ir entrando en mesas para jugar. Podrían hasta
colaborar entre ellos, teniendo un sistema multiagentes que crea una rez de agentes, capaz de
comunicarse para intentar ganar el mayor dinero posible. Este tema es penado por las salas de
manera tajante, porque la gente dejaría de jugar en su sala. Aún así, hay bastante controversia
sobre si se puede diseñar un bot capaz de ganar a un humano en el póquer, ya que es un juego
bastante difícil como para aprenderlo con técnicas de inteligencia artificial.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 6
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010



2. ESTADO DEL ARTE

        La Inteligencia Artificial ya se ha adentrado en el campo de la toma de decisiones en el
Póker. Actualmente se dice que es una de las principales amenazas del Póker Online, y esto se
debe a que los jugadores que han sido generados, a pesar de que no son capaces de vencer a
jugadores expertos, sí que son capaces de ganar a jugadores amateur y estándar.

       Es por ello que actualmente se intentan introducir técnicas para poder expulsar a
jugadores automáticos. Técnicas como la resolución de los cada vez más inservibles captchas o
de problemas más específicos como preguntas, etc.

        Además de empresas dedicadas a este propósito también las universidades se
encargan de organizar concursos, uno de los más conocidos es el First Man-Machine Poker
Championship [4], promocionado por la universidad de Alberta (Edmonton, Canadá), los
cuáles también son criticados ya que están realizando programas automáticos que juegan al
póker, pero se defienden diciendo que sus bots ganan a otros bots, pero no a los humanos.

        Debido al secretismo que genera este terreno, por su directa productividad, es difícil
que las empresas comenten su relación con este tipo de investigaciones, y por tanto es difícil
obtener datos de manos y jugadas, así con información relacionada con la aplicación directa de
este tipo de solución.

       A continuación, vamos a describir varios casos que hacen uso de IA en el póker.

2.1 Programas que aprendan a jugar como una persona
       Nos vamos a centrar en los diseñados en el torneo anual de la universidad de Alberta.




        En esta competición, cada jugador tiene que diseñar en Java un jugador, usando las
técnicas oportunas que considere, normalmente IA.

       Respecto a la competición de este año la universidad de Alberta publica los resultados
[5].

      En televisiones estadounidenses han hecho reportajes referentes a estas
competiciones [6].

      A continuación ponemos una pequeña presentación, para conocer mejor la
competición, quién ha ganado este año y que técnicas han usado para hacer sus jugadores:


IA en el Póquer Online: Clasificador de manos Preflop                                 Página 7
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES        2009/2010




IA en el Póquer Online: Clasificador de manos Preflop    Página 8
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES        2009/2010




IA en el Póquer Online: Clasificador de manos Preflop    Página 9
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES        2009/2010




IA en el Póquer Online: Clasificador de manos Preflop   Página 10
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES        2009/2010




IA en el Póquer Online: Clasificador de manos Preflop   Página 11
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


A continuación vamos a describir las técnicas de IA usadas por los ganadores:

•      Limit Bankroll: MANZANA
       Usaron un Perceptrón Multicapa con una capa oculta y tres neuronas de salida.

         Las neuronas de entrada se encargan de codificar las características relevantes de la
situación actual del juego, tales como las cartas de mano, cartas de la mesa y las apuestas
anteriores, mientras que las neuronas de salida están entrenadas para dar P(fold), P(call),
P(raise), siendo P la probabilidad con la que los robots deben retirarse, igualar o subir, en
función del estado actual del juego.

        El entrenamiento se realiza utilizando algoritmos estándares de aprendizaje, mientras
que los ejemplos de entrenamiento se construyeron a partir de las manos del ganador de la
competición del último año.

•      Limit Runoff: GGValuta
        El algoritmo general utilizado para calcular el equilibrio es un CFR (counterfactual
regret minimization) (reducción al mínimo).

        El modelo de abstracción utilizado ha sido ligeramente modificado para cada calle: En
el pre-flop almacenan un nodo para cada posible situación (sin abstracción) y en el
flop/turn/river se utilizó un algoritmo de k-medias modificado para hacer clustering sobre las
manos.

         Cada mano se asigna a un punto de N-dimensiones con una función diferente para
cada calle. Estas fueron elegidas en su mayoría intuitivamente y cada punto se coordina como
(E [HS] o el más bajo (E [HS]) o el más alto (E [HS])), donde el mayor y menor muestran el rango
potencial de que se complete otra carta.

        Para el river se utilizó E [HS] con algunos cambios en las medias del rango potencial de
las rondas anteriores.

•      No Limit Bankroll: Hyperborean-BR
       La técnica Hyperborean-BR empleó una variedad de técnicas diseñadas para explotar
el método tradicional de la lectura de los otros jugadores.

        Se trata de manipular el tamaño del bote, de manera que no se distinga de su
oponente. Con el fin de aprovechar que su oponente realice una exploración en el comienzo
del juego, para crear un modelo en bruto de su oponente.

       Las técnicas en No Limit son más complejas que en Limit, ya que un jugador puede
apostar todas sus fichas y esto hace que se obtengan peores resultados, sobre todo contra
jugadores humanos.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 12
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


•      No Limit Runoff: Hyperborean-EQM
         La técnica Hyperborean-EQM fue creado usando las mismas técnicas utilizadas por la
Universidad de Alberta en el pasado, con la excepción de que ahora utiliza una lectura más
suave. Además, los métodos utilizados para crear la estrategia han sido optimizados para jugar
sin límite.

        A continuación comparamos los resultados [7], en el tercer campeonato de póker de la
Universidad de Alberta, del Hyperborean-BR y del Hyperborean-Eqm, contra todas las parejas
de oponentes, de los diferentes equipos. Las unidades se presentan como pequeñas apuestas
por mano (small bets per hand (sb/h)).




Vemos, que la tasa de ganancia es positiva en todos los casos.

Si por ejemplo comparamos otros dos modelos (akuma y dpp):




Vemos que la tasa de ganancia contra los Hyperborean suele ser negativa.

Esto nos indica que son unos buenos modelos, para la competición.

•      3 player Bankroll && Runoff: Hyperborean-EQM


         Se usó la ejecución de un CFR (counterfactual regret minimization) (reducción al
mínimo), durante varias semanas, para crear tres jugadores. Los jugadores resultantes eran
tan grandes (respecto a estados del juego), que se usó un grano más grueso para construirlos.
Se usan 16 categorías o rangos según la fuerza de la mano, donde el jugador olvida sus rangos
de las rondas anteriores.




IA en el Póquer Online: Clasificador de manos Preflop                              Página 13
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


2.2 Clústering para agrupar tipos de jugadores

       Estas técnicas intentan inferir posibles conjuntos de tipos de jugadores.

       Nos centraremos en la usada por un español [8].

       Sus resultados no son buenos. Y estadísticamente ya existen otras soluciones
bastantes buenas, pero describiremos solamente el funcionamiento de esta.

         Su fuente de información es una inmensa base de datos de más de 22 millones de
manos de Texas Hold’em No Limit 50. A esta base de datos con las 22 millones de manos,
hicieron diferentes filtros para poder tratar mejor la información (preproceso), seleccionando
los atributos más relevantes para después pasar al proceso de clusterización. Mediante el
análisis de tres experimentos, muestran las diferentes posibilidades que ofrecen los distintos
algoritmos más conocidos hoy en día: X-means, K-Means y EM.

        Cometieron muchos errores, el más grave de los cuales fue subestimar el
preprocesamiento de los datos. Antes de lanzarse hacia un ejercicio de
clusterización debieron estudiar concienzudamente los datos a tratar. Si bien es
verdad que su primer error fue tratar con una base de datos demasiado escasa (por
los atributos que querían analizar), no es menos cierto que quizás el nivel escogido
tampoco fue el adecuado. Según palabras del autor:
      “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.“
       Estos aspectos, que deberían haber tenido muy en cuenta antes de lanzarse
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 no han obtenido todo lo que cabía esperar de
sus experimentos, aunque en el último experimento, los resultados han sido muy
esperanzadores porqué se veía dónde estaba el problema y, consecuentemente, se
pasó a filtrar con muchas más manos y menos atributos.
       Aún con todas las dificultades encontradas, gracias a todos los experimentos
realizados, llegaron a la conclusión que para su problema era mejor hacer uso del
algoritmo EM en contra de usar el K-medias.
       Otro aspecto a tener en cuenta es que se enfrentaron 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 los datasets.




IA en el Póquer Online: Clasificador de manos Preflop                              Página 14
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


         Otra área muy interesante que podrían haber tratado, pero no fue posible por la
incoherencia de los resultados obtenidos es la de reglas de asociación. Las reglas de asociación
permiten atacar por otro bando el problema y 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 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 la usada hasta ahora, ya que implica unas sentencias SQL mucho
más elaboradas y un agrupamiento en forma de Datasets muy complejo de realizar, pero es
mucho más interesante las reglas que podrían sacar así que no las reglas que sacarían si
tratáran la información como en el Clústering (con tantos por ciento de cada atributo).




IA en el Póquer Online: Clasificador de manos Preflop                                Página 15
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010



3. DESCRIPCIÓN COMPLETA DE LOS
DATOS Y FUENTES EMPLEADOS
3.1 Datos de entrada
        En este apartado nos centraremos en explicar la fuente principal de los datos, así como
una visión panorámica de los datos utilizados.



        Para la adquisición de los datos hemos tenido diversos problemas, ya que estos datos,
comúnmente, son de uso privado, y en caso de querer adquirirlos serian de pago. Debido a
esto, nos resulto muy complicado encontrar datos útiles para el estudio. Por ello pedimos
datos en diversos blogs sobre póker online, así como contactando con los responsables de 3
webs, sin recibir respuesta alguna



        Después decidimos pedir los datos en foros sobre póker online, en los cuales nos
pusieron varios inconvenientes. Nos dijeron que queríamos los datos para hacer trampas, que
no conseguiríamos llegar a ningún sitio con nuestro estudio, que no darían sus manos ya que
son de pago, etc.



        Finalmente, un usuario del foro de poker-red accedió a darnos datos de manos que
disponía. En total eran 100000 manos de póker, con las cuales empezamos nuestro estudio.



       El formato de los datos es XML, y en él se recogen los datos más importantes que se
deben recoger en una mesa de póker.




IA en el Póquer Online: Clasificador de manos Preflop                               Página 16
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                               2009/2010


A continuación explicaremos globalmente el formato de los datos:



<general>

<mode>real</mode>

<gametype>Holdem NL 0.50/1</gametype>

<tablename>Aosta__No_DP_</tablename>

<duration>N/A</duration>

<gamecount>N/A</gamecount>
                                                            Información de la mano que comienza
<startdate>2009-10-20 13:21:35</startdate>

<currency>USD</currency>

<nickname>PokerHandScout.com</nickname>

<bets>N/A</bets>

<wins>N/A</wins>

<chipsin>N/A</chipsin>

<chipsout>N/A</chipsout>
                                                              Hora de inicio de la mano
<ipoints>N/A</ipoints>

</general>



<startdate>2009-10-20 13:58:22</startdate>

<players>

<player seat="4" name="ChandlerMBing" chips="$10000000" dealer="0" win="$0" bet="$0"
/><player seat="3" name="Hummelx2" chips="$10000000" dealer="0" win="$0" bet="$1"
/><player seat="2" name="fakinit" chips="$10000000" dealer="0" win="$39" bet="$20"
/><player seat="1" name="BowserJr" chips="$10000000" dealer="1" win="$0" bet="$20" />

</players>

                                                   Resumen de la mano para cada jugador (lo
                                                   que ha ganado, las fichas que tenia, su
                                                   posición en la mesa, si era mano, si era
                                                   ciega pequeña o grande y su nombre)




IA en el Póquer Online: Clasificador de manos Preflop                           Página 17
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES               2009/2010




<round no="0">                                               Apuesta de ciegas

<action no="1" player="fakinit" type="1" sum="$0.50"/>

<action no="2" player="Hummelx2" type="2" sum="$1"/>
                                                             Numero de ronda
</round>

<round no="1">

<cards type="Pocket" player="BowserJr">c10 s10</cards>
                                                             Cartas de las que
<cards type="Pocket" player="fakinit">dJ cJ</cards>
                                                             dispone un jugador
<action no="3" player="ChandlerMBing" type="0" sum="$ 0"/>

<action no="4" player="BowserJr" type="23" sum="$3"/>

<action no="5" player="fakinit" type="23" sum="$20"/>

<action no="6" player="Hummelx2" type="0" sum="$ 0"/>
                                                               Apuestas
<action no="7" player="BowserJr" type="3" sum="$17"/>

</round>

<round no="2">

<cards type="Flop" player="">hJ cA s9</cards>

</round>

<round no="3">
                                                               Cartas comunes que se
<cards type="Turn" player="">d10</cards>                       van poniendo sobre la
</round>                                                       mesa

<round no="4">

<cards type="River" player="">cK</cards>

</round>




IA en el Póquer Online: Clasificador de manos Preflop           Página 18
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010


3.2 Datos adicionales
Información adicional podría ser otra información que tuviese el jugador, que no fuese sólo la
mesa de juego, los oponentes, las fichas y las cartas, es decir, que no fuese sólo la información
que te da la sala de póker, que es la mínima para poder jugar.

        Existen programas que usan los datos de las manos para generar estadísticas de tus
contrincantes. Y estas estadísticas se pueden mostrar sobreimpresas en la mesa de la sala de
póker online. A esto se llama HUD (head up display).

        A continuación mostramos una mesa sin HUD y después una con HUD:




                                       Figura 1: Mesa de Póker sin HUD




                                      Figura 2: Mesa de Póker con HUD
                                                                                  Estadísticas del HUD


      Esta información define a los jugadores, pudiéndose así saber si el jugador va a muchas
manos o a pocas, si es agresivo o pasivo, etc.

      La ventaja del póker online son estas herramientas que te dan información extra de
mucha utilidad durante el juego.

        Tener esta información podría servir como información adicional a nuestros datos.


IA en el Póquer Online: Clasificador de manos Preflop                                 Página 19
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                 2009/2010


3.3 Datos de Salida

        Los datos de entrada necesitan un procesamiento que se explicará en el siguiente
apartado. De nuestro clasificador se espera que, dada una mano, sepa qué decisión tomar en
cuanto a Retirarse (Fold), Igualar (Call), Subir N(Raise), Resubir N(Re-Raise). Suponemos que
dado que los datos originales son de límites altos en los que juegan profesionales, las
decisiones tomadas serán bastante acertadas.

       En cuanto a la mano se necesitará toda la información que hemos mencionado en el
apartado 3.1.




IA en el Póquer Online: Clasificador de manos Preflop                             Página 20
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010



4. PREPROCESADO DE LOS DATOS
4.1 Estudio de los datos

        El primer paso de nuestra práctica fue estudiar el formato de los datos que nos
proporcionaron, para así saber que parte de ellos nos iban a ser realmente útiles para la
práctica.

        Gracias a este análisis, nos dimos cuenta que los datos correspondían a manos en las
cuales solo se veían las cartas de cada jugador en el caso de que llegasen al showdown
(momento final de la mano). Esto es debido a que los datos son recogidos por aplicaciones que
están 24 horas al día visitando todas las mesas de las salas de póquer online, y almacenando lo
que ocurre en las manos. Estas aplicaciones ven las mesas como un mero espectador, sin
poder ver las cartas de los jugadores, a menos que estos las enseñen. Debido a ello, de esas
100000 manos iniciales, las que realmente nos iban a interesar eran muchas menos. Esto
provocó el desánimo, ya que parecía que iba a ser imposible obtener los datos que
necesitábamos.

        Pero, finalmente, nos percatamos de que, cuando se mostraban las cartas, como
mínimo lo hacían dos jugadores, así que realmente disponíamos del doble o más, manos útiles,
por lo que el número total de manos a utilizar era de 10708.

4.2 Procesado de datos

        A continuación comenzamos con el procesado de los ficheros XML. Nuestro propósito
es seleccionar una serie de atributos y clases, y utilizando la herramienta WEKA, realizar un
estudio de minería de datos. Para ello debíamos transformar los datos dados en el XML al
formato arff de WEKA.

        Para crear nuestro fichero arff programamos en Java un parser que recibiese los
ficheros XML de las manos, seleccionase y transformase los datos necesarios para la
construcción de los atributos, y finalmente construyese el fichero arff con los atributos,
patrones y clases.

        En este procesado nos dimos cuenta de que había errores en las manos. Por ejemplo,
había manos en las que a un jugador se le caía la conexión a internet mientras se jugaba,
teniendo que controlar esto para poder sacar las instancias. Y otra causa de error fue, una
mano en la que jugaban jugadores no pertenecientes a la mano, no aparecían en el resumen
(ver 3.1), pero sí en las apuestas, con lo cual desechamos la mano por estar corrompida.

        Al terminar el procesado vimos que, había muchos atributos que se repetían en todos
los patrones, incluso en varios atributos de un mismo patrón (ejemplo: apuestas), siendo esta
redundancia negativa para el clasificador y posteriormente subsanada con las técnicas de
selección de atributos.


IA en el Póquer Online: Clasificador de manos Preflop                               Página 21
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010



5. EXPLORACIÓN DE LOS DATOS

5.1 Clases

   Trabajamos con el fichero patrones.arff con 10708 patrones, sacados de unas 100.000
manos de póker, de 1795 jugadores.

    Tenemos 4 clases {0,1,2,3} que son valores continuos (0.0,1.0,2.0,3.0) pero los usaremos
para clasificación.




    Un patrón está en una clase u otra en función del nivel de la apuesta del jugador al que
pertenece el patrón.

       •   Clase 0: Apuesta de $0    1050 patrones       9,8%

       •   Clase 1: Apuesta entre $0 y $2.5    3868 patrones      36,1%

       •   Clase 2: Apuesta entre $2.5 y $5    4193 patrones      39,2%

       •   Clase 3: Apuesta superior a $5     1597 patrones     14,9%

    De las 10708 instancias que hay en total, un 9,8% de los datos son de la clase 0, un 36,1%
son de la clase 1, un 39,2% de la clase 2,y un 14,9% de la clase 3. Al no encontrarse en la
misma proporción, están desequilibradas. Y sería bueno, para que se clasifiquen bien, que
estuvieran mejor equilibradas, pero no hemos conseguido ajustar a nivel de apuesta que haga
que estén mejor equilibradas las clases.




IA en el Póquer Online: Clasificador de manos Preflop                              Página 22
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


5.2 Clasificadores

     El primer paso que haremos será probar nuestros datos con una serie de clasificadores
lineales y no lineales, para analizar estos resultados y poder centrarnos en los mejores
clasificadores, para en siguientes apartados filtrar los datos y ajustar mejor los parámetros de
los clasificadores.

    Para realizar las pruebas, Java, muchas veces se quedaba sin memoria:




    Por lo que ampliamos la memoria usada, a 512 Mb, con el comando:

                                       java -jar -Xmx512m weka.jar


     Para todas las pruebas se ha usado la opción de Percentage Split al 66% (train = 66% y test
= 33%) lo que dan 7067 instancias para entrenamiento de las 10708 del total. En algunas
pruebas, como complemento, se ha probado a usar el conjunto de entrenamiento para hacer
el test, y en estas pruebas explicaremos la razón de usarlo.

    Además se ha marcado la opción, de conservar el orden de los patrones, marcada, ya que
si no Weka los desordena aleatoriamente, y esto es innecesario, ya que los datos ya son
aleatorios.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 23
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010


         •   CLASIFICADORES LINEALES: Separan los datos con fronteras de separación
             lineales (plano o hiperplano).


                    o    SMO

                         Soluciona problemas multiclase usando clasificación por parejas. En los
                         casos multi-clase las probabilidades predichas se juntaran usando los
                         métodos de emparejamiento Hastie y Tibshirani.

                         Obtenemos los siguientes resultados:


     === Evaluation on test split ===
     === Summary ===

     Correctly Classified Instances             1793                49.2447 %
     Incorrectly Classified Instances           1848                50.7553 %
     Kappa statistic                               0.1885
     Mean absolute error                           0.3093
     Root mean squared error                       0.3956
     Relative absolute error                      90.2991 %
     Root relative squared error                  95.4496 %
     Total Number of Instances                  3641

     === Detailed Accuracy By Class ===

                        TP Rate   FP Rate    Precision   Recall   F-Measure     ROC Area   Class
                          0         0           0         0          0            0.807     0.0
                          0.67      0.418       0.48      0.67       0.559        0.647     1.0
                          0.644     0.393       0.505     0.644      0.566        0.644     2.0
                          0.002     0           1         0.002      0.004        0.736     3.0
     Weighted Avg.        0.492     0.304       0.514     0.492      0.422        0.675

     === Confusion Matrix ===

        a   b   c       d   <-- classified as
        0 354 33        0 |   a = 0.0
        0 892 440       0 |   b = 1.0
        0 497 900       0 |   c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                                Página 24
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


                 o     Logistic

                       Crea y utiliza un modelo de regresión logística multinomial con un
                       estimador. Hay algunas modificaciones del modelo propuesto por
                       leCessie y van Houwelingen.
                       Obtenemos los siguientes resultados:


       === Evaluation on test split ===
       === Summary ===

       Correctly Classified Instances           1863                 51.1673 %
       Incorrectly Classified Instances         1778                 48.8327 %
       Kappa statistic                             0.2501
       Mean absolute error                         0.303
       Root mean squared error                     0.3886
       Relative absolute error                    88.441 %
       Root relative squared error                93.7416 %
       Total Number of Instances                3641

       === Detailed Accuracy By Class ===

                        TP Rate    FP Rate   Precision    Recall   F-Measure     ROC Area   Class
                          0.282      0.028      0.542      0.282      0.371        0.845     0.0
                          0.58       0.332      0.502      0.58       0.538        0.674     1.0
                          0.631      0.373      0.513      0.631      0.566        0.679     2.0
                          0.19       0.027      0.546      0.19       0.282        0.801     3.0
       Weighted Avg.      0.512      0.271      0.517      0.512      0.494        0.713

       === Confusion Matrix ===

          a   b   c     d   <-- classified as
        109 240 36      2 |   a = 0.0
         81 773 465    13 |   b = 1.0
                 o
         11 437 881    68 |   c = 2.0
                 o

                 o     Simple Logistic

             Clasificador lineal para la construcción de modelos de regresión logística.


       === Evaluation on test split ===
       === Summary ===

       Correctly Classified Instances           1865                 51.2222 %
       Incorrectly Classified Instances         1776                 48.7778 %
       Kappa statistic                             0.2492
       Mean absolute error                         0.3037
       Root mean squared error                     0.3886
       Relative absolute error                    88.6475 %
       Root relative squared error                93.7398 %
       Total Number of Instances                3641

       === Detailed Accuracy By Class ===

                        TP Rate    FP Rate   Precision    Recall   F-Measure     ROC Area   Class
                          0.261      0.026      0.549      0.261      0.354        0.845     0.0
                          0.586      0.333      0.504      0.586      0.541        0.675     1.0
                          0.635      0.375      0.513      0.635      0.567        0.68      2.0
                          0.185      0.026      0.542      0.185      0.276        0.801     3.0
       Weighted Avg.      0.512      0.272      0.518      0.512      0.493        0.713

       === Confusion Matrix ===

          a   b   c     d   <-- classified as
        101 248 36      2 |   a = 0.0
         72 780 467    13 |   b = 1.0
         11 432 887    67 |   c = 2.0



IA en el Póquer Online: Clasificador de manos Preflop                               Página 25
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010


                  o    Perceptron Simple

                      Para este clasificador usamos el Multilayer Perceptron con ninguna
               capa oculta.




                       Obtenemos los siguientes resultados:

       === Evaluation on test split ===
       === Summary ===

       Correctly Classified Instances          1514                41.582     %
       Incorrectly Classified Instances        2127                58.418     %
       Kappa statistic                            0.0788
       Mean absolute error                        0.3018
       Root mean squared error                    0.4482
       Relative absolute error                   88.0926 %
       Root relative squared error              108.1404 %
       Total Number of Instances               3641

       === Detailed Accuracy By Class ===

                        TP Rate   FP Rate   Precision    Recall   F-Measure       ROC Area   Class
                          0.189     0.018      0.557      0.189      0.282          0.826     0.0
                          0.045     0.035      0.426      0.045      0.081          0.598     1.0
                          0.947     0.863      0.406      0.947      0.568          0.58      2.0
                          0.11      0.016      0.532      0.11       0.183          0.734     3.0
       Weighted Avg.      0.416     0.348      0.447      0.416      0.304          0.635

       === Confusion Matrix ===

           a     b    c     d   <-- classified as
          73    36 276      2 |    a = 0.0
          48    60 1210    14 |    b = 1.0
           7    32 1323    35 |    c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                                Página 26
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                2009/2010


                 o     Naive Bayes

                     Clasificador bayesiano cuyos atributos numéricos son modelados como
             una distribución normal. Es un Clasificador discriminador bayes standard. Para
             combinar las probabilidades de los distintos atributos asume que estas son
             independientes entre sí.
                     Obtenemos los siguientes resultados:

       === Evaluation on test split ===
       === Summary ===

       Correctly Classified Instances           1673              45.9489 %
       Incorrectly Classified Instances         1968              54.0511 %
       Kappa statistic                             0.2366
       Mean absolute error                         0.3022
       Root mean squared error                     0.4149
       Relative absolute error                    88.2112 %
       Root relative squared error               100.0884 %
       Total Number of Instances                3641

       === Detailed Accuracy By Class ===

                       TP Rate    FP Rate   Precision   Recall   F-Measure    ROC Area   Class
                         0.817      0.208      0.319     0.817      0.458       0.87      0.0
                         0.491      0.292      0.492     0.491      0.492       0.625     1.0
                         0.448      0.245      0.533     0.448      0.487       0.663     2.0
                         0.147      0.022      0.527     0.147      0.23        0.792     3.0
       Weighted Avg.     0.459      0.226      0.494     0.459      0.448       0.69

       === Confusion Matrix ===

          a   b   c     d   <-- classified as
        316 63    5     3 |   a = 0.0
        409 654 255    14 |   b = 1.0
        227 492 626    52 |   c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                            Página 27
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                 2009/2010


                 o      Bayes Net

                     Red Bayesiana de aprendizaje que utiliza diferentes algoritmos de
             búsqueda y medidas de calidad. Proporciona una serie de estructuras de datos
             (estructura de la red, distribuciones de probabilidad condicional, etc), comunes
             a la Red de aprendizaje de los algoritmos de Bayes como K2 y B.
                     Obtenemos los siguientes resultados:


         === Evaluation on test split ===
         === Summary ===

         Correctly Classified Instances           2019               55.4518 %
         Incorrectly Classified Instances         1622               44.5482 %
         Kappa statistic                             0.3391
         Mean absolute error                         0.2793
         Root mean squared error                     0.3744
         Relative absolute error                    81.5284 %
         Root relative squared error                90.3151 %
         Total Number of Instances                3641

         === Detailed Accuracy By Class ===

                          TP Rate   FP Rate   Precision   Recall   F-Measure     ROC Area   Class
                            0.687     0.061      0.573     0.687      0.625        0.932     0.0
                            0.524     0.226      0.572     0.524      0.547        0.721     1.0
                            0.67      0.344      0.548     0.67       0.603        0.728     2.0
                            0.227     0.042      0.478     0.227      0.307        0.811     3.0
         Weighted Avg.      0.555     0.227      0.549     0.555      0.542        0.759

         === Confusion Matrix ===

            a   b   c     d   <-- classified as
          266 75 45       1 |   a = 0.0
          116 698 466    52 |   b = 1.0
           72 312 936    77 |   c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                              Página 28
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


         •   CLASIFICADORES NO LINEALES: Separan los datos con fronteras de separación
             no lineales.
                  o J48

                     Se trata de una implementación propia de WEKA para el algoritmo
                     C4.5, un algoritmo basado en clasificación por árbol de decisión.

                     Obtenemos los siguientes resultados:


         === Evaluation on test split ===
         === Summary ===

         Correctly Classified Instances           2274                62.4554 %
         Incorrectly Classified Instances         1367                37.5446 %
         Kappa statistic                             0.452
         Mean absolute error                         0.2104
         Root mean squared error                     0.3958
         Relative absolute error                    61.4247 %
         Root relative squared error                95.495 %
         Total Number of Instances                3641

         === Detailed Accuracy By Class ===

                         TP Rate    FP Rate    Precision    Recall   F-Measure    ROC Area   Class
                           0.827      0.027       0.782      0.827      0.804       0.923     0.0
                           0.592      0.197       0.634      0.592      0.612       0.727     1.0
                           0.663      0.259       0.614      0.663      0.638       0.712     2.0
                           0.455      0.077       0.499      0.455      0.476       0.738     3.0
         Weighted Avg.     0.625      0.186       0.623      0.625      0.623       0.743

         === Confusion Matrix ===

            a   b   c   d   <-- classified as
          320 28 28 11 |      a = 0.0
           37 789 404 102 |   b = 1.0
           43 301 926 127 |   c = 2.0

                 o   Ordinal Class Classifier (J48)

                     Meta clasificador que permite que la clasificación estándar de
                     algoritmos sea aplicada a problemas ordinarios de clasificación.
                     Usamos, ahora, el j48. Y vemos que mejora de manera muy superflua:
         === Evaluation on test split ===
         === Summary ===

         Correctly Classified Instances           2275                62.4828 %
         Incorrectly Classified Instances         1366                37.5172 %
         Kappa statistic                             0.4465
         Mean absolute error                         0.2153
         Root mean squared error                     0.3876
         Relative absolute error                    62.8628 %
         Root relative squared error                93.5199 %
         Total Number of Instances                3641

         === Detailed Accuracy By Class ===

                         TP Rate    FP Rate    Precision    Recall   F-Measure    ROC Area   Class
                           0.829      0.012       0.889      0.829      0.858       0.947     0.0
                           0.612      0.196       0.643      0.612      0.627       0.735     1.0
                           0.658      0.299       0.578      0.658      0.615       0.688     2.0
                           0.419      0.065       0.52       0.419      0.464       0.738     3.0
         Weighted Avg.     0.625      0.197       0.627      0.625      0.624       0.74

         === Confusion Matrix ===

            a   b   c   d   <-- classified as
          321 41 21     4 |   a = 0.0
            3 815 439 75 |    b = 1.0
           32 322 919 124 |   c = 2.0


IA en el Póquer Online: Clasificador de manos Preflop                              Página 29
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


                 o   Multilayer Perceptron (train = 66%)

                     Redes neuronales en formas de perceptrón muliticapa entrenadas con
                     el algoritmo backpropagation.
                     Para este modelo se probó con un 66% de los datos para
                     entrenamiento y un 33% para test. Después se probará también con "
                     Use training set", que hace test con los mismos datos con los que
                     entrena, para ver si hay mucha diferencia en los aciertos, como es
                     lógico esperar. Al tener un 33% para test, los resultados de este serán
                     lógicamente peores, pero comparando los dos tipos podremos saber
                     como de buenos son realmente estos resultados.
                     El número de capas ocultas usado fue el valor por defecto,
                     Y como ya dijimos al principio, conservando el orden original de los
                     datos.

                     Obtenemos los siguientes resultados:


          === Evaluation on test split ===
          === Summary ===

          Correctly Classified Instances         2216                 60.8624 %
          Incorrectly Classified Instances       1425                 39.1376 %
          Kappa statistic                           0.4288
          Mean absolute error                       0.2456
          Root mean squared error                   0.3636
          Relative absolute error                  71.6913 %
          Root relative squared error              87.7141 %
          Total Number of Instances              3641

          === Detailed Accuracy By Class ===

                          TP Rate    FP Rate   Precision    Recall   F-Measure    ROC Area   Class
                            0.804      0.037      0.718      0.804      0.759       0.953     0.0
                            0.523      0.194      0.609      0.523      0.563       0.726     1.0
                            0.689      0.285      0.601      0.689      0.642       0.761     2.0
                            0.467      0.069      0.531      0.467      0.497       0.858     3.0
          Weighted Avg.     0.609      0.194      0.606      0.609      0.605       0.783

          === Confusion Matrix ===

             a   b   c   d   <-- classified as
           311 57    6 13 |    a = 0.0
            76 697 467 92 |    b = 1.0
            28 295 963 111 |   c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                             Página 30
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


                 o   Ordinal Class Classifier (MLP train = 66%)

                     Probamos el mismo meta clasificador que antes, pero usando como
                     algoritmo el perceptrón multicapa, con la misma configuración que en
                     el ejemplo anterior.
                     Observamos que no hay mejora, aunque la variación en el porcentaje
                     de aciertos es muy leve:


          === Evaluation on test split ===
          === Summary ===

          Correctly Classified Instances           2189               60.1208 %
          Incorrectly Classified Instances         1452               39.8792 %
          Kappa statistic                             0.4165
          Mean absolute error                         0.2327
          Root mean squared error                     0.3721
          Relative absolute error                    67.9233 %
          Root relative squared error                89.7618 %
          Total Number of Instances                3641

          === Detailed Accuracy By Class ===

                          TP Rate    FP Rate   Precision    Recall   F-Measure    ROC Area   Class
                            0.822      0.033      0.748      0.822      0.783       0.959     0.0
                            0.519      0.179      0.625      0.519      0.567       0.747     1.0
                            0.686      0.315      0.576      0.686      0.626       0.736     2.0
                            0.421      0.072      0.496      0.421      0.455       0.809     3.0
          Weighted Avg.     0.601      0.2        0.601      0.601      0.597       0.774

          === Confusion Matrix ===

             a   b   c   d   <-- classified as
           318 48 15     6 |   a = 0.0
            58 691 497 86 |    b = 1.0
            32 273 959 133 |   c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                             Página 31
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


                 o   Multilayer Perceptron (test = train)

                     Para este modelo se probó también el MLP, pero con " Use training
                     set", que hace test con los mismos datos con los que entrena.
                     Hicimos esto, para ver si hay mucha diferencia en los aciertos, como es
                     lógico esperar. Ya que si el modelo construido es bueno, si se pone a
                     prueba con los patrones de entrenamiento, debería de obtener unos
                     muy buenos resultados.
                     El número de capas ocultas usado fue el valor por defecto,
                     Y conservando el orden original de los datos.

                     Obtenemos los siguientes resultados:


            === Evaluation on training set ===
            === Summary ===

            Correctly Classified Instances          6618                61.8043 %
            Incorrectly Classified Instances        4090                38.1957 %
            Kappa statistic                            0.4418
            Mean absolute error                        0.2413
            Root mean squared error                    0.3563
            Relative absolute error                   70.5073 %
            Root relative squared error               86.1383 %
            Total Number of Instances              10708

            === Detailed Accuracy By Class ===

                            TP Rate    FP Rate   Precision   Recall   F-Measure     ROC Area   Class
                              0.761      0.021      0.797     0.761      0.779        0.944     0.0
                              0.785      0.375      0.542     0.785      0.641        0.789     1.0
                              0.462      0.112      0.726     0.462      0.564        0.792     2.0
                              0.53       0.065      0.59      0.53       0.559        0.873     3.0
            Weighted Avg.     0.618      0.191      0.646     0.618      0.612        0.818

            === Confusion Matrix ===

                a    b    c     d   <-- classified as
              799 226     9    16 |    a = 0.0
              100 3036 533    199 |    b = 1.0
               66 1818 1936   373 |    c = 2.0



                     Vemos que no hay una mejora sustancial como pensamos que debería
                     suceder.




IA en el Póquer Online: Clasificador de manos Preflop                             Página 32
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                     2009/2010


                 o   Ordinal Class Classifier (test = train)

                     Con el MLP anterior, también decidimos probar el meta clasificador,
                     usando "Use training set" y con la misma configuración que en el
                     ejemplo anterior.
                     Observamos que hay mejora, aunque la variación en el porcentaje de
                     aciertos es muy pequeña, vemos en la matriz de confusión que clasifica
                     mejor, y suele tener menos fallos:


          === Evaluation on training set ===
          === Summary ===

          Correctly Classified Instances            6906                 64.4938 %
          Incorrectly Classified Instances          3802                 35.5062 %
          Kappa statistic                              0.4722
          Mean absolute error                          0.2181
          Root mean squared error                      0.3483
          Relative absolute error                     63.7474 %
          Root relative squared error                 84.2101 %
          Total Number of Instances                10708

          === Detailed Accuracy By Class ===

                          TP Rate     FP Rate    Precision     Recall   F-Measure    ROC Area   Class
                            0.83        0.024       0.792       0.83       0.811       0.963     0.0
                            0.795       0.345       0.566       0.795      0.661       0.801     1.0
                            0.557       0.155       0.699       0.557      0.62        0.802     2.0
                            0.389       0.022       0.755       0.389      0.514       0.863     3.0
          Weighted Avg.     0.645       0.191       0.668       0.645      0.638       0.827

          === Confusion Matrix ===

              a    b    c     d   <-- classified as
            872 163    11     4 |    a = 0.0
            135 3076 582     75 |    b = 1.0
             60 1674 2336   123 |    c = 2.0




IA en el Póquer Online: Clasificador de manos Preflop                                Página 33
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                  2009/2010


                 o      RBFNetwork

                     Redes de funciones de base radial. Con train = 66% y conservando el
              orden original. Tenemos los resultados:


         === Evaluation on test split ===
         === Summary ===

         Correctly Classified Instances           1902                52.2384 %
         Incorrectly Classified Instances         1739                47.7616 %
         Kappa statistic                             0.2885
         Mean absolute error                         0.2978
         Root mean squared error                     0.3858
         Relative absolute error                    86.9388 %
         Root relative squared error                93.0714 %
         Total Number of Instances                3641

         === Detailed Accuracy By Class ===

                          TP Rate    FP Rate   Precision   Recall   F-Measure     ROC Area   Class
                            0.677      0.081      0.497     0.677      0.573        0.915     0.0
                            0.52       0.261      0.535     0.52       0.528        0.687     1.0
                            0.626      0.363      0.518     0.626      0.567        0.682     2.0
                            0.137      0.018      0.558     0.137      0.22         0.767     3.0
         Weighted Avg.      0.522      0.246      0.528     0.522      0.503        0.721

         === Confusion Matrix ===

            a   b   c     d   <-- classified as
          262 110 13      2 |   a = 0.0
          161 693 465    13 |   b = 1.0
           80 400 875    42 |   c = 2.0


                 o      REPTree

                        Es un método de aprendizaje rápido mediante árboles de decisión.
                        Construye un árbol de decisión usando la información de varianza y lo
                        poda usando como criterio la reducción del error. Solamente clasifica
                        valores para atributos numéricos una vez. Los valores que faltan se
                        obtienen partiendo las correspondientes instancias. Vemos que:

         === Evaluation on test split ===
         === Summary ===

         Correctly Classified Instances           2143                58.8575 %
         Incorrectly Classified Instances         1498                41.1425 %
         Kappa statistic                             0.401
         Mean absolute error                         0.2519
         Root mean squared error                     0.3771
         Relative absolute error                    73.5421 %
         Root relative squared error                90.9842 %
         Total Number of Instances                3641

         === Detailed Accuracy By Class ===

                          TP Rate    FP Rate   Precision   Recall   F-Measure     ROC Area   Class
                            0.755      0.046      0.661     0.755      0.704        0.921     0.0
                            0.573      0.237      0.582     0.573      0.577        0.726     1.0
                            0.609      0.256      0.597     0.609      0.603        0.723     2.0
                            0.451      0.073      0.512     0.451      0.48         0.814     3.0
         Weighted Avg.      0.589      0.2        0.586     0.589      0.587        0.758

         === Confusion Matrix ===

            a   b   c   d   <-- classified as
          292 75 17     3 |   a = 0.0
          101 763 402 66 |    b = 1.0
           41 348 851 157 |   c = 2.0



IA en el Póquer Online: Clasificador de manos Preflop                               Página 34
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                2009/2010


5.3 Resultados
En resumen, tenemos los siguientes resultados:


 Clasificadores Lineales              Algoritmo             % Aciertos     % Error Absoluto
 Media Aciertos =49,1028%                SMO                49.2447 %         90.2991 %
 Media Error = 87,5366%                 Logistic            51.1673 %         88.441 %
                                   Simple Logistic          51.2222 %         88.6475 %
                                 Perceptrón Simple          41.582 %          88.0926 %
                                    Naive Bayes             45.9489 %         88.2112 %
                                      Bayes Net             55.4518 %         81.5284 %
 Clasificadores No Lineales           Algoritmo             % Aciertos     % Error Absoluto
 Media Aciertos = 60,4144%                J48               62.4554 %         61.4247 %
 Media Error =69,8297%          OrdinalClassClassifier      62.4828 %         62.8628 %
                                         (J48)
                                Multilayer Perceptron       60.8624 %         71.6913 %
                                     (train=66%)
                                OrdinalClassClassifier      60.1208 %         67.9233 %
                                  (MLP train=66%)
                                Multilayer Perceptron       61.8043 %         70.5073 %
                                     (test=train)
                                OrdinalClassClassifier      64.4938 %         63.7474 %
                                  (MLP test=train)
                                    RBFNetwork              52.2384 %         86.9388 %
                                       REPTree              58.8575 %         73.5421 %

        Con los nuevos atributos (MiPosición, Pareja, Consecutivas) los resultados mejoran
notablemente a las pruebas iniciales que hicimos con los atributos antiguos, en la entrega
intermedia, del cuatrimestre. En estas teníamos entre un 43 y 46% con MLP, y con J48
teníamos 47.8369 %, usando 70% de train y 30% de test. La diferencia en los aciertos es
sustancial.

         Como vemos en los resultados, para nuestro problema, los clasificadores no lineales
han tenido una media de aciertos mayor que la de los clasificadores lineales. Cualquier
clasificador no lineal, mejora al mejor de los clasificadores lineales.

        Las pruebas de MLP y su meta clasificador, con test igual que entrenamiento, nos las
tendremos en cuenta para la comparativa final, ya que son los únicos que han sido testados
con el mismo conjunto de entrenamiento.

       Si tuviéramos que elegir un algoritmo, de entre todos los probados, para resolver el
problema nos quedaríamos con el J48 por diversos motivos:
           o Aunque el MLP (train = 66%) y su MetaClasificador del MLP (train = 66%) son
               bastante buenos, no mejoran al J48, ni a su meta clasificador.
           o Con el J48 podemos interpretar los resultados leyendo el árbol.
           o El tiempo de ejecución del MLP es mayor y hace más incómodas las pruebas.
           o No elegimos el metaclasificador del J48, ya que no entendemos muy bien el
               funcionamiento de estos algoritmos, pero de lo que si estamos seguros es de
               que no son una gran mejora.




IA en el Póquer Online: Clasificador de manos Preflop                            Página 35
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


       Aunque, elegiremos el algoritmo J48 y el MLP para continuar la exploración de los
datos, ya que son los mejores en los resultados, y queremos seguir comparándolos y
puliéndolos para mejorar más sus resultados.

       Con los resultados obtenidos no podemos considerar que los resultados obtenidos son
buenos, porque los errores son muy grandes. Pero teniendo en cuenta que las clases están
desequilibradas, los resultados son algo más aceptables.

       Además el problema es bastante complicado para los pocos patrones de los que
disponemos.

         Si tenemos en cuenta que los datos no son de un solo jugador, sino de 1795, lo que
significa que el comportamiento que se está intentando predecir es un comportamiento muy
general, donde el factor humano altera mucho el aprendizaje de los clasificadores.

        Además, aún los datos no han sido filtrados, y como ya sabemos, tenemos muchos
datos superfluos e incorrectos, como el stack de los jugadores.

        Una primera aproximación a decir que atributos son los más relevantes para la tarea
de clasificación, y así poder descartar otras sería ver que atributos están en la cima del árbol
que nos da el J48. Esto, en cambio, no se podría hacer con el MLP.

      También podríamos decrementar el Confidence Factor para obtener un árbol más
pequeño y así poder estudiarlo mejor




IA en el Póquer Online: Clasificador de manos Preflop                                Página 36
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010



 6. SELECCIÓN DE ATRIBUTOS
       Podemos dividir los métodos de selección de atributos en:

               1. Evaluación individual de atributos (Ranker)

               2. Evaluación de subconjuntos de atributos

                          a. Filter: se evalúan los atributos de manera individual, pero tiene en
                             cuenta la redundancia entre atributos.

                          b. Wrapper: se evalúan de manera conjunta.

       Hay que definir:

          •   Una manera de moverse por el espacio de búsqueda (lo que llamaremos
              método de búsqueda).

          •   Una manera (medida) de evaluar subconjuntos de atributos (lo que llamaremos
              evaluador de atributos).




IA en el Póquer Online: Clasificador de manos Preflop                                 Página 37
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                2009/2010



6.1 Técnicas de selección de atributos.
       A continuación explicamos las técnicas usadas y sus resultados:

          •   Selección Ranker:

                  o   Evaluador de atributos: ChiSquaredAttributeEval.

                  o   Método de búsqueda: Ranker.

                  o   Modo de selección de atributos: Use training set.

              ChiSquaredAttributeEval: usa el estadístico Chi-squared para evaluar el valor
              predictivo del atributo.

              Obtenemos los atributos, seleccionados de manera individual por el valor de
              correlación del atributo, ordenados de mejor a peor. No detecta correlación
              conjunta. Y al contrario que Filter, no detecta redundancias en los atributos:

                === Attribute Selection on all input data ===

                Search Method:
                       Attribute ranking.

                Attribute Evaluator (supervised, Class (nominal): 31 class):
                       Chi-squared Ranking Filter

                Ranked attributes:
                1354.5475   18 MiPosicion
                 960.8091   26 ValorSubida1
                 952.3952   27 ValorSubida2
                 883.6841   28 ValorSubida3
                 816.5711   22 ValorCarta2
                 787.1046   20 ValorCarta1
                 728.5459   29 ValorSubida4
                 525.3871   24 Pareja
                 197.4389   30 ValorSubida5
                 167.0821   23 Suited
                  52.7871    5 JugadoresTotales
                  52.7871    7 FichasJugador6
                  52.7871    6 PosicionJugador6
                  28.0305   25 Consecutivas
                  26.5342    9 FichasJugador5
                  26.5342    8 PosicionJugador5
                  22.037    11 FichasJugador4
                  22.037    10 PosicionJugador4
                   0         2 CiegaGrande.
                .
                .
                Selected attributes:
                18,26,27,28,22,20,29,24,30,23,5,7,6,25,9,8,11,10,2,1,4,3,17,16,21,19,13,12,15,
                14 : 30




IA en el Póquer Online: Clasificador de manos Preflop                            Página 38
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                2009/2010


         •   Selección Filter:

                 o   Evaluador de atributos: CfsSubsetEval.

                 o   Método de búsqueda: GreedyStepwise.

                 o   Modo de selección de atributos: Use training set.

             Filter es una técnica de evaluación de subcojuntos de atributos, pero no detecta
             correlación conjunta.

             Obtenemos un subconjunto, de atributos correlacionados entre sí, de los
             mejores atributos:

               === Attribute Selection on all input data ===

               Search Method:
                      Greedy Stepwise (forwards).
                      Start set: no attributes
                      Merit of best subset found:       0.09

               Attribute Subset Evaluator (supervised, Class (nominal): 31 class):
                      CFS Subset Evaluator
                      Including locally predictive attributes

               Selected attributes: 18,20,22,24,26,27,28,29,30 : 9
                                    MiPosicion
                                    ValorCarta1
                                    ValorCarta2
                                    Pareja
                                    ValorSubida1
                                    ValorSubida2
                                    ValorSubida3
                                    ValorSubida4
                                    ValorSubida5



             Filter penaliza los atributos redundantes. Tener atributos redundantes es como
             tener el mismo atributo repetido. Así se le está dando más peso al atributo, y
             esto no es correcto.




IA en el Póquer Online: Clasificador de manos Preflop                             Página 39
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                               2009/2010


         •   Selección Wrapper:

                 o   Evaluador de atributos: ClassifierSubsetEval.

                             Usando PART como clasificador.

                             Usando el conjunto de entrenamiento para calcular los
                             aciertos.

                 o   Método de búsqueda: GreedyStepwise.

                 o   Modo de selección de atributos: Use training set

              Esta es una técnica de evaluación de subconjuntos de atributos, como Filter,
              pero mucho más lenta, aunque más eficaz. Evalúa el subconjunto de atributos
              ejecutando un algoritmo de minearía de datos concreto, sobre un conjunto de
              entrenamiento. El algoritmo elegido ha sido PART.

              Después de 12 horas ejecutando conseguimos que terminase, con el siguiente
              subconjunto de atributos seleccionados:

               === Attribute Selection on all input data ===
               === Attribute Selection on all input data ===

               Search Method:
                      Greedy Stepwise (forwards).
                      Start set: no attributes
                      Merit of best subset found:        0.089

               Attribute Subset Evaluator (supervised, Class (nominal): 31 class):
                      Classifier Subset Evaluator
                      Learning scheme: weka.classifiers.rules.PART
                      Scheme options: -M 2 -C 0.25 -Q 1
                      Hold out/test set: Training data
                      Accuracy estimation: classification error

               Selected attributes: 3,4,5,18,19,20,21,22,23,24,25,26,27,28,29,30 : 16
                                    Hora
                                    Minuto
                                    JugadoresTotales
                                    MiPosicion
                                    PaloCarta1
                                    ValorCarta1
                                    PaloCarta2
                                    ValorCarta2
                                    Suited
                                    Pareja
                                    Consecutivas
                                    ValorSubida1
                                    ValorSubida2
                                    ValorSubida3
                                    ValorSubida4


             Esta técnica es más lenta en ejecución que Filter y Ranker, pero da mejores
             resultados. Para problemas sencillos, no haría falta y aparentemente no merece
             la pena porque el tiempo que necesita es muy elevado, pero pensamos que en
             nuestro problema, al haber tantos atributos que siempre tenían el mismo valor,
             iba a ser importante hacer una selección buena de los atributos. Con las
             pruebas siguientes corroboraremos si ha merecido la pena la espera.




IA en el Póquer Online: Clasificador de manos Preflop                           Página 40
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                2009/2010


6.2 Ranker

       A continuación, utilizando Ranker, realizaremos una gráfica que muestre como varía el
porcentaje de aciertos en función del número de atributos considerados. La gráfica tiene un
punto cada 5 atributos. Esto quiere decir que la gráfica tendrá 30/5 = 6 puntos.


       Para realizar las pruebas en Weka, en Reprocess aplicamos un filtro a los patrones,en
       Attribute Selection y como evaluador elegimos ChiSquaredAttributeEval y como
       método de búsqueda Ranker. También en Select Attributes podríamos habernos
       guardado los datos después de haber hecho la selección de atributos, ya que Weka te
       da esa opción.

       Después vamos cogiendo grupos de atributos, múltiplos de 5 y ejecutando los
       algoritmos de clasificación (J48 y MLP).

                 Número Atributos      % Aciertos J48    % Aciertos MLP
                        5                 53.337 %          44.9602 %
                        10                59.1046 %         52.3483 %
                        15                64.0483 %         60.7525 %
                        20                64.3505 %         62.8673 %
                        25                62.1533 %         61.8511 %
                        30                62.0983 %         60.3406 %

       Si mostramos en una gráfica los datos, podemos ver como varia el porcentaje de
       aciertos en función del número de atributos considerados.




       Vemos que el J48 siempre va por delante del MLP. Al principio, las dos gráficas van
       aumentando progresivamente, hasta alcanzar un máximo, para después estabilizarse e
       ir decrementando poco a poco. Seleccionando los mejores 20 atributos del Ranker,
       vemos que obtenemos los mejores resultados para ambos clasificadores.



IA en el Póquer Online: Clasificador de manos Preflop                            Página 41
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010


       Después de ver estos buenos resultados, decidimos intentar ver de manera gráfica la
       separación entre las clases utilizando alguna pareja de los mejores atributos
       seleccionados.

       Ejecutamos el clasificador (J48) con los dos mejores atributos seleccionados con
       Ranker (MiPosicion eje X y ValorSubida1 eje Y).

       En Visualize podemos ver la separación de los patrones en clases (0, 1, 2 y 3):




       No se ven conjuntos claramente repartidos, ya que se entremezclan bastantes los
       patrones. La visualización no es la mejor, quizás una vista en tres dimensiones nos
       ayudaría más a ver la separación. Lo que se puede apreciar es en cada montículo una
       base de la clase 2, acompañada a veces por la clase 0, pero esto es sólo en algunos
       valores de ValorSubida1. En la parte intermedia la clase 1. Y en la parte más superior
       sobre todo la clase 3. El hecho de elegir los dos mejores atributos es el que favorece
       que se separen mejor los datos, ya que hicimos pruebas con otras parejas de entre los
       mejores atributos y los patrones se entremezclaban mucho más en la gráfica.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 42
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010


6.3 Filter

       Ahora, probamos a utilizar Filter para comparar los dos clasificadores (J48 y MLP).

       Filter nos arrojaba los 9 mejores atributos, que nos da unos aciertos:



                             % Aciertos J48     % Aciertos MLP
                                58.83 %            52.4032 %


       Vemos que son unos resultados bastante pobres, aunque de nuevo el J48 mejora al
       MLP, en aciertos y en todas las ventajas adicionales que este modelo conlleva.




6.4 Wrapper

       Finalmente, probamos con el último selector de atributos, el cual nos da mayores
esperanzas de obtener unos muy buenos resultados.

       Wrapper nos daba los mejores 16 atributos de entre los 31, tardando 12 horas en
darnos este subconjunto.



                             % Aciertos J48     % Aciertos MLP
                                61.5216 %          61.4392 %


       Vemos que los resultados son bueno, y que el J48 está muy parejo a los resultados del
       MLP.

6.5 Comparativa resultados selectores de atributos

       Para ver que selector o selectores son mejores y poder elegir estos para trabajar con el
       experimenter, realizamos una comparativa.

               Selector de atributos      % Aciertos J48      % Aciertos MLP
                Ranker (20 atributos)        64.3505 %           62.8673 %
                  Filter (9 atributos)        58.83 %            52.4032 %
               Wrapper (16 atributos)        61.5216 %           61.4392 %
                   Sin selección de          62.4554 %           60.8624 %
               atributos (30 atributos)


       Además de los selectores se incluyen los resultados en la exploración, con todos los
       atributos, es decir, con los datos originales.


IA en el Póquer Online: Clasificador de manos Preflop                               Página 43
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                     2009/2010




       Para cada gráfica por separado, vemos que el Filter es el peor selector, incluso
       comparándolo con los resultados de los datos originales. Con lo cuál no lo usaremos
       para el experimenter de Weka.

       El Ranker y Wrapper, son bastante parecidos en los resultados, aunque el Ranker ha
       resultado mejor. Incluso el Wrapper no mejora los resultados originales. A priori,
       pensábamos que el Wrapper iba a dar mejores resultados, ya que este es muy lento,
       pero muy potente. Vemos que no ha merecido la pena esperar tanto tiempo por el
       Wrapper, pero los atributos que nos arrojaba, a simple vista parecían bastante
       interesantes, desde el punto de vista de un jugador profesional.




                                    Importantes para saber cuando los jugadores piensan más sus
Hora                                acciones, siendo más racionales o las piensan menos siendo más
Minuto                              irracionales
JugadoresTotales                    Cuántos son nuestros adversarios es muy importante
MiPosicion                          Saber donde estoy situado en la mesa es primordial, ya que si
PaloCarta1                          hablo más tarde tengo ventaja sobre los demás
ValorCarta1
PaloCarta2                          Las cartas son con lo segundo con lo que se gana en el póker

ValorCarta2
                                    Estas propiedades nos darán mayor expectativa, ayudándonos a
Suited                              ligar jugadas fuertes, siendo un buen aliciente para jugar las
Pareja                              cartas
Consecutivas
ValorSubida1                        Con las apuestas es lo primero con lo que se gana en el póker,
ValorSubida2                        así que tengo que saber las apuestas de los otros jugadores para
ValorSubida3                        saber como de buenas son sus cartas
ValorSubida4

       Cabe destacar que aunque la hora si puede influir en las cartas con las que jugar, no
       entendemos muy bien porque el minuto le parece al Wrapper que es importante.
       Suponemos que habrá obtenido una buena razón para llegar a esta conclusión.



IA en el Póquer Online: Clasificador de manos Preflop                                 Página 44
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                        2009/2010


6.6 Aprendizaje de las clases
       En este apartado veremos si las distintas clases se aprenden de manera desequilibrada
       y cuáles se aprenden mejor. Usaremos el Ranker con 20 atributos, ya que es el que
       ofrece mejores resultados, tanto para el J48, como para el MLP.

       Al estar las clases desequilibradas, la clase que tenga más representación en los datos
       va a tener más aciertos en el test.

       Como vimos en el primer punto de la experimentación, un 9,8% de los datos son de la
       clase 0, un 36,1% son de la clase 1, un 39,2% de la clase 2, y un 14,9% de la clase 3.

       En la matriz de confusión podemos ver cuanto se equivoca y acierta el clasificador, en
       el test, que coge un 33% de los datos (3641 instancias). En la primera fila están los
       patrones que son de la clase 0 y que fueron clasificados como de la clase 0, 1,2 y 3. La
       segunda fila con la clase 1, la tercera con la clase 2 y la cuarta con la clase 3. En la
       diagonal central, se pueden ver los aciertos. Y en los bordes los fallos.

                        J48                                               MLP
        === Confusion Matrix ===                      === Confusion Matrix ===

           a   b   c   d       <--   classified as        a      b    c     d       <-- classified as
         329 26 27     5   |     a   = 0.0              334     36   15     2   |      a = 0.0
          36 831 367 98    |     b   = 1.0               84    678 520     50   |      b = 1.0
          36 280 949 132   |     c   = 2.0               40    219 1072    66   |      c = 2.0
           8 130 153 234   |     d   = 3.0               28     92 200    205   |      d = 3.0


       También nos ayuda el porcentaje de aciertos (TP Rate) de cada clase:

       J48
        === Detailed Accuracy By Class ===

                        TP Rate       FP Rate   Precision     Recall   F-Measure      ROC Area   Class
                          0.85          0.025      0.804       0.85       0.827         0.934     0.0
                          0.624         0.189      0.656       0.624      0.639         0.771     1.0
                          0.679         0.244      0.634       0.679      0.656         0.75      2.0
                          0.446         0.075      0.499       0.446      0.471         0.791     3.0
        Weighted Avg.     0.644         0.176      0.641       0.644      0.641         0.783


       MLP
        === Detailed Accuracy By Class ===

                        TP Rate       FP Rate   Precision     Recall   F-Measure      ROC Area   Class
                          0.863         0.047      0.687       0.863      0.765         0.965     0.0
                          0.509         0.15       0.661       0.509      0.575         0.776     1.0
                          0.767         0.328      0.593       0.767      0.669         0.787     2.0
                          0.39          0.038      0.635       0.39       0.483         0.853     3.0
        Weighted Avg.     0.629         0.191      0.634       0.629      0.618         0.812

       El TP Rate se calcula dividiendo el número de casos en que acertó, entre el número de
       casos totales. Para la clase 0,en el J48, sería: 329/(329+26+27+5)=0.85. Nos dice que el
       porcentaje de aciertos en los test, para los patrones de la clase 0 es del 85%




IA en el Póquer Online: Clasificador de manos Preflop                                    Página 45
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                       2009/2010


       Las clases que tenían más representación en los datos eran la 1 y la 2. Pero aún así no
       son las clases que mejor se aprenden, teniendo más aciertos, ya que es la clase 0, la
       que mejor se aprenden (J48 y MLP).

       Podríamos equilibrar el porcentaje de aciertos de las distintas clases usando un
       metaclasificador. Nosotros usamos MetaCost. La mayoría de maneras existentes de
       equilibrar o balacear los datos, usan costos haciendo una modificación al algoritmo de
       clasificación, pero Metacost utiliza los costos fuera de este, con una técnica de
       envoltura (wrapping). En MetaCost se crean réplicas del conjunto de entrenamiento
       con bootstrap y hace un ensamble con bagging (con votación) para calcular la
       probabilidad de clase de cada ejemplo (utiliza la fracción de los votos del ensamble
       que corresponde a cada clase). Después se reetiqueta cada ejemplo con la clase
       óptima estimada al incluir una matriz de costos (multiplica la probabilidad del ejemplo
       de pertenecer a la clase óptima por el costo asociado) y reaplica el clasificador al
       conjunto reetiquetado.

       Como parámetros hay que pasarle el clasificador que estamos usando (J48 y MLP) para
       la exploración de los datos y la matriz de costos, formada por probabilidades (números
       decimales entre 0 y 1).

       En la matriz de costos daremos menos probabilidad a las clases más desequilibrada
       (con menos datos) y más probabilidad a las clases con más datos. En nuestro caso, un
       9,8% de los datos son de la clase 0, un 36,1% son de la clase 1, un 39,2% de la clase 2, y
       un 14,9% de la clase 3. Por lo tanto a la clase 0 y 3, le daremos menos probabilidad, ya
       que tiene menos datos. La matriz de costos que usamos es la siguiente:




       Damos un 25% a la clase 0, porque es la que tiene instancias, así el clasificador
       intentará clasificar más patrones como de esta clase. A las clases 1 y 2 les damos un
       75%, ya que son las dos clases que tiene más datos, casi igualmente repartidos. Y
       finalmente a la clase 3 le daremos un 50% ya que tiene más datos que la clase 0, pero
       pocos con respecto a la clase 1 y 2.

       Si comparamos los resultados aplicando nuestros clasificadores, sin Metacost, con los
       resultados obtenidos después de aplicarlo, tenemos:

               J48 (sin metacost)                               J48 (con metacost)
        === Confusion Matrix ===                      === Confusion Matrix ===

           a   b   c   d       <--   classified as       a   b   c   d       <--   classified as
         329 26 27     5   |     a   = 0.0             341 25 14     7   |     a   = 0.0
          36 831 367 98    |     b   = 1.0              37 773 369 153   |     b   = 1.0
          36 280 949 132   |     c   = 2.0              45 289 913 150   |     c   = 2.0
           8 130 153 234   |     d   = 3.0               7 98 121 299    |     d   = 3.0




IA en el Póquer Online: Clasificador de manos Preflop                                   Página 46
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010


               MLP (sin metacost)                            MLP (con metacost)
  === Confusion Matrix ===                         === Confusion Matrix ===

      a     b    c     d       <-- classified as      a   b   c   d       <--   classified as
    334    36   15     2   |      a = 0.0           325 37    7 18    |     a   = 0.0
     84   678 520     50   |      b = 1.0           108 650 412 162   |     b   = 1.0
     40   219 1072    66   |      c = 2.0            43 223 928 203   |     c   = 2.0
     28    92 200    205   |      d = 3.0            29 64 106 326    |     d   = 3.0



       Vemos que el porcentaje de aciertos de las clases 0 y 3 aumenta, y en cambio para las
       clases 1 y 2 disminuye. Vemos que a costa de empeorar la clase 1 y 2, se puede
       conseguir que las clases 0 y 3 mejoren. Datos que antes se etiquetaban como de las
       clases 1 y 2, ahora los etiqueta como de las clases 0 y 3.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 47
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                   2009/2010



7. EXPERIMENTACIÓN
        A continuación, usando el Experimenter de Weka, haremos una experimentación con
los mejores algoritmos encontrados en la fase de exploración. El objetivo es comprobar si
alguno de los algoritmos es mejor de manera significativa que los demás. Probaremos los
mismos algoritmos cambiando el conjunto de datos, haciendo validación cruzada, y
especialmente, utilizándolos junto con algoritmos de selección de atributos, ya que estos
funcionaron bastante bien.

      El Experimenter de Weka sirve para aplicar varios algoritmos de aprendizaje
automático sobre distintos conjuntos de datos. Y determinar de manera estadística cual se
comporta mejor.

       En la fase de exploración conseguimos los mejores porcentajes de aciertos con un
grupo de los 20 mejores atributos obtenidos con Ranker y con los 16 atributos obtenidos con
Wrapper. Así que probaremos dos tipos de conjuntos de datos, que fueron filtrados de esta
manera, siendo el primero de ellos el del Wrapper y el segundo el del Ranker. Con esto
podremos realizar un contraste de hipótesis y ver que las diferencias son verdaderas, para así
poder descartar la casualidad.

         Usamos Cross-Validation, con un tamaño de celda (Fold) de 10. Cada experimento se
repitió 10 veces. Y tomamos como algoritmo base el J48, ya que es el que nos ha dado mejores
resultados. Como algoritmo para comparar con el base tenemos el MLP, con hidden = a, que es
el segundo mejor algoritmo, para nuestro problema.

       Después de más de 6 horas, obtenemos:


            Dataset                   (1) trees.J48 '-C | (2) functions.M
            --------------------------------------------------------------
            'PatronesNL100-weka.filte(100)   61.52(1.50) |   61.60(1.78)
            'PatronesNL100-weka.filte(100)   64.34(1.46) |   61.43(1.67) *
            --------------------------------------------------------------
                                                 (v/ /*) |         (0/1/1)



         La nomenclatura (X,Y,Z), dice que X es el número de datasets en los que el algoritmo es
significativamente mejor que el algoritmo base. Y, que no es ni mejor ni peor. Y Z, que es
significativamente peor.

        Como vemos, los resultados están bastante más igualados, que los resultados que
obtuvimos en la fase de exploración. El MLP llega a mejorar algo al J48 en los experimentos
con el conjunto de datos de Wrapper, pero empeora con los datos de los mejores 20 atributos
del Ranker.

        Con estos resultados podemos descartar que la casualidad nos hiciera obtener los
resultados que obtuvimos en la fase de exploración de los datos, así que vamos a comparar
los resultados que obtuvimos en Explorer con los del Experimenter, tenemos:




IA en el Póquer Online: Clasificador de manos Preflop                                Página 48
LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES                                    2009/2010




                       Técnica usada                      J48               MLP
                     %Aciertos Explorer                61.5216 %         61.4392 %
                         (Wrapper)
                   %Aciertos Experimenter               61.52 %           61.60%
                         (Wrapper)
                     %Aciertos Explorer                64.3505 %         62.8673 %
                          (Ranker)
                   %Aciertos Experimenter               64.34 %           61.43 %
                          (Ranker)



        Los resultados del Experimenter son bastante parecidos a los del Explorer. En el
Explorer obteníamos que el mejor resultado era el Ranker, y con el Experimenter también. En
el Explorer también obteníamos resultados bastante parecidos entre J48 y MLP, aunque
siempre era superior el J48, pero en el Experimenter, con el Wrapper, el MLP llega a mejorar al
J48. Aunque finalmente vemos que el mejor resultado sigue siendo el J48, con los 20 mejores
atributos del Ranker.




IA en el Póquer Online: Clasificador de manos Preflop                                Página 49
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final
Memoria final

More Related Content

What's hot (16)

Latinobarometer Survey 07
Latinobarometer Survey  07Latinobarometer Survey  07
Latinobarometer Survey 07
 
Psicología del Consumidor: El Caso de Condones Durex
Psicología del Consumidor: El Caso de Condones DurexPsicología del Consumidor: El Caso de Condones Durex
Psicología del Consumidor: El Caso de Condones Durex
 
Manual Sn G 2da Edicion
Manual  Sn G 2da   EdicionManual  Sn G 2da   Edicion
Manual Sn G 2da Edicion
 
Estudio Tendencias Tablets
Estudio Tendencias Tablets Estudio Tendencias Tablets
Estudio Tendencias Tablets
 
Apunts dintel ligencia_artificial
Apunts dintel ligencia_artificialApunts dintel ligencia_artificial
Apunts dintel ligencia_artificial
 
Lógica y programación orientada a objetos:Un enfoque basado en problemas
Lógica y programación orientada a objetos:Un enfoque basado en problemasLógica y programación orientada a objetos:Un enfoque basado en problemas
Lógica y programación orientada a objetos:Un enfoque basado en problemas
 
239 mc meco
239 mc meco239 mc meco
239 mc meco
 
Whats new
Whats newWhats new
Whats new
 
proyecto final de carrera con kinect
proyecto final de carrera con kinectproyecto final de carrera con kinect
proyecto final de carrera con kinect
 
Libro tecnicas de estudio 2222222
Libro tecnicas de estudio 2222222Libro tecnicas de estudio 2222222
Libro tecnicas de estudio 2222222
 
Libro 1 metodologia de la investigacion y sistemica
Libro 1   metodologia de la investigacion y sistemicaLibro 1   metodologia de la investigacion y sistemica
Libro 1 metodologia de la investigacion y sistemica
 
Memoria intermedia
Memoria intermediaMemoria intermedia
Memoria intermedia
 
Algebra
AlgebraAlgebra
Algebra
 
Problemasresueltosioi c
Problemasresueltosioi cProblemasresueltosioi c
Problemasresueltosioi c
 
60 pasos para ser analista delictivo
60 pasos para ser analista delictivo60 pasos para ser analista delictivo
60 pasos para ser analista delictivo
 
Libro cs1
Libro cs1Libro cs1
Libro cs1
 

Viewers also liked

Taller n° 7 - Curso La Web Social
Taller n° 7 - Curso La Web SocialTaller n° 7 - Curso La Web Social
Taller n° 7 - Curso La Web SocialBruno Bustos
 
Exposicion Taxonomia
Exposicion TaxonomiaExposicion Taxonomia
Exposicion Taxonomiadokeosla
 
Taller 7. Diseño de etrategias
Taller 7. Diseño de etrategiasTaller 7. Diseño de etrategias
Taller 7. Diseño de etrategiasBruno Bustos
 
Economia Carbonifera Historia Jose Montecino Parra
Economia Carbonifera Historia Jose Montecino ParraEconomia Carbonifera Historia Jose Montecino Parra
Economia Carbonifera Historia Jose Montecino ParraJose Montecino Parra
 
Actividad II: Tecnicas para dimension de valores
Actividad II: Tecnicas para dimension de valoresActividad II: Tecnicas para dimension de valores
Actividad II: Tecnicas para dimension de valoresYesid Unimag
 
GuíA Nº 3
GuíA Nº 3GuíA Nº 3
GuíA Nº 3corifina
 
Bitcoin: la moneda virtual
Bitcoin: la moneda virtualBitcoin: la moneda virtual
Bitcoin: la moneda virtualSofia Square
 
Historietas 4A
Historietas 4AHistorietas 4A
Historietas 4Asbprimaria
 
Design of field regulators for dc shunt generators
Design of field regulators   for dc shunt generatorsDesign of field regulators   for dc shunt generators
Design of field regulators for dc shunt generatorsNisarg Amin
 
Taller 3 - Curso La Web Social
Taller 3 - Curso La Web SocialTaller 3 - Curso La Web Social
Taller 3 - Curso La Web SocialBruno Bustos
 
Ara Balears: reptes de la banca
Ara Balears: reptes de la bancaAra Balears: reptes de la banca
Ara Balears: reptes de la bancaSofia Square
 
Taller 3- El aula expandida
Taller 3- El aula expandidaTaller 3- El aula expandida
Taller 3- El aula expandidaBruno Bustos
 

Viewers also liked (19)

Programa de Gobierno PNP 2008 (2009-2012)
Programa de Gobierno PNP 2008 (2009-2012)Programa de Gobierno PNP 2008 (2009-2012)
Programa de Gobierno PNP 2008 (2009-2012)
 
Clark L Hull
Clark  L  HullClark  L  Hull
Clark L Hull
 
Taller n° 7 - Curso La Web Social
Taller n° 7 - Curso La Web SocialTaller n° 7 - Curso La Web Social
Taller n° 7 - Curso La Web Social
 
Google
GoogleGoogle
Google
 
Exposicion Taxonomia
Exposicion TaxonomiaExposicion Taxonomia
Exposicion Taxonomia
 
Taller 7. Diseño de etrategias
Taller 7. Diseño de etrategiasTaller 7. Diseño de etrategias
Taller 7. Diseño de etrategias
 
Heavy Metal3390
Heavy Metal3390Heavy Metal3390
Heavy Metal3390
 
Economia Carbonifera Historia Jose Montecino Parra
Economia Carbonifera Historia Jose Montecino ParraEconomia Carbonifera Historia Jose Montecino Parra
Economia Carbonifera Historia Jose Montecino Parra
 
Actividad II: Tecnicas para dimension de valores
Actividad II: Tecnicas para dimension de valoresActividad II: Tecnicas para dimension de valores
Actividad II: Tecnicas para dimension de valores
 
GuíA Nº 3
GuíA Nº 3GuíA Nº 3
GuíA Nº 3
 
Apsijurfp presentación 2012
Apsijurfp presentación 2012Apsijurfp presentación 2012
Apsijurfp presentación 2012
 
Torrel et al.,2010
Torrel et al.,2010Torrel et al.,2010
Torrel et al.,2010
 
Bitcoin: la moneda virtual
Bitcoin: la moneda virtualBitcoin: la moneda virtual
Bitcoin: la moneda virtual
 
Historietas 4A
Historietas 4AHistorietas 4A
Historietas 4A
 
Manual firmas digitales
Manual firmas digitalesManual firmas digitales
Manual firmas digitales
 
Design of field regulators for dc shunt generators
Design of field regulators   for dc shunt generatorsDesign of field regulators   for dc shunt generators
Design of field regulators for dc shunt generators
 
Taller 3 - Curso La Web Social
Taller 3 - Curso La Web SocialTaller 3 - Curso La Web Social
Taller 3 - Curso La Web Social
 
Ara Balears: reptes de la banca
Ara Balears: reptes de la bancaAra Balears: reptes de la banca
Ara Balears: reptes de la banca
 
Taller 3- El aula expandida
Taller 3- El aula expandidaTaller 3- El aula expandida
Taller 3- El aula expandida
 

Similar to Memoria final

Memoria inicial
Memoria inicialMemoria inicial
Memoria inicialsinchan607
 
Powerpoint
PowerpointPowerpoint
Powerpointleargo
 
Powerpoint
PowerpointPowerpoint
Powerpointleargo
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1merodaya
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Zully Carvache
 
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02Gina Santos
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1tatiitap
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1lilibeth1995
 
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02fernandiitaParrales
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1NARCISA REZABALA
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Gina Santos
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1geraldine becerra
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1elvinaza
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1lilibeth1995
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1intoducion a la educacion
 
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...CIMAT
 

Similar to Memoria final (20)

Memoria inicial
Memoria inicialMemoria inicial
Memoria inicial
 
El juego.
El juego.El juego.
El juego.
 
El juego.
El juego.El juego.
El juego.
 
El juego.
El juego.El juego.
El juego.
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1Desarrollo de habilidades del pensamiento. leccion 1
Desarrollo de habilidades del pensamiento. leccion 1
 
Videojuegos
VideojuegosVideojuegos
Videojuegos
 
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
Algoritmo de Reconocimiento de Objetos en Escenas Complejas para Aplicaciones...
 

Memoria final

  • 1. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES CURSO 2009/2010 IA en el Póquer Online Clasificador de manos Preflop ANTONIO DÍAZ PONCE 100055301 RAÚL MARTÍNEZ FERNÁNDEZ 100054986 JAVIER GARCÍA-CUERVA VELASCO 100055253
  • 2. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 ÍNDICE 1. INTRODUCCIÓN ................................................................................................. 4 1.1 Descripción del Problema......................................................................................4 1.2 Objetivos ..............................................................................................................5 1.3 Posibles aplicaciones.............................................................................................6 2. ESTADO DEL ARTE .............................................................................................. 7 2.1 Programas que aprendan a jugar como una persona ..............................................7 2.2 Clústering para agrupar tipos de jugadores .......................................................... 14 3. DESCRIPCIÓN COMPLETA DE LOS DATOS Y FUENTES EMPLEADOS .................... 16 3.1 Datos de entrada ................................................................................................ 16 3.2 Datos adicionales ................................................................................................ 19 3.3 Datos de Salida ................................................................................................... 20 4. PREPROCESADO DE LOS DATOS ....................................................................... 21 4.1 Estudio de los datos ............................................................................................ 21 4.2 Procesado de datos ............................................................................................. 21 5. EXPLORACIÓN DE LOS DATOS .......................................................................... 22 5.1 Clases ................................................................................................................. 22 5.2 Clasificadores...................................................................................................... 23 5.3 Resultados .......................................................................................................... 35 6. SELECCIÓN DE ATRIBUTOS ............................................................................... 37 6.1 Técnicas de selección de atributos. ...................................................................... 38 6.2 Ranker ................................................................................................................ 41 6.3 Filter................................................................................................................... 43 6.4 Wrapper ............................................................................................................. 43 6.5 Comparativa resultados selectores de atributos................................................... 43 6.6 Aprendizaje de las clases ..................................................................................... 45 7. EXPERIMENTACIÓN ......................................................................................... 48 IA en el Póquer Online: Clasificador de manos Preflop Página 2
  • 3. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 8. ANÁLISIS DE DIFICULTADES, RIESGOS Y APLICABILIDAD ....................................... 50 8.1 Dificultades en la Obtención de la Solución.......................................................... 50 8.2 Riesgos Previstos ................................................................................................ 50 8.3 Análisis de Implantación ..................................................................................... 51 9. ANÁLISIS DE LOS RESULTADOS Y CONCLUSIONES ............................................. 52 10. TRABAJOS FUTUROS Y POSIBLES MEJORAS ...................................................... 53 11. REFERENCIAS................................................................................................... 54 12. ANEXO: REGLAS DE PÓKER TEXAS HOLD’EM NO LIMIT ..................................... 55 12.1 ¿Qué es el póker Texas Hold'em sin límite? ............................................................. 55 12.2 ¿Es entonces el póker un juego de azar?.................................................................. 55 12.3 La baraja de póker .................................................................................................. 55 12.4 Manos de póker ..................................................................................................... 55 12.5 La mano de No Limit Texas Hold'em ........................................................................ 61 12.6 Empieza la mano (El Preflop)................................................................................... 61 12.7 Las Tres Primeras Cartas (El Flop) ............................................................................ 61 12.8 La Cuarta Carta (El Turn) ......................................................................................... 62 12.9 La Quinta Carta (El River) ........................................................................................ 62 IA en el Póquer Online: Clasificador de manos Preflop Página 3
  • 4. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 1. INTRODUCCIÓN 1.1 Descripción del Problema El Texas hold 'em Sin Límite [1] es una versión del juego del póquer (ver ANEXO). Actualmente es la más popular y también es la más jugada en la mayoría de casinos y campeonatos mundiales. Esta es la modalidad sobre la que realizaremos el estudio. En ella cada jugador sólo posee dos cartas (cartas personales) y su jugada es la mejor combinación de 5 cartas que puede formar con las cartas que se van poniendo en la mesa (denominadas cartas comunitarias). Hemos decidido realizar el estudio sobre el póquer, porque presenta diversas características que lo hacen muy interesante para analizarlo desde el punto de vista de la Inteligencia Artificial: • Información incompleta • No determinista • Varios jugadores • Toma de decisiones bajo incertidumbre • Engaño • Estudio del oponente El problema principal es la toma de decisiones en el juego del Póker ya que se basa en unos razonamientos abstractos muy variantes, en el que el factor humano influye de manera superlativa en la decisión. En una mano de póquer, las principales decisiones que se pueden realizar son: • No ir: Lo que supone que el jugador deja de jugar • Pasar: El jugador decide no subir ninguna apuesta • Subir N: El jugador sube la apuesta del juego una cantidad “N”, podrá subir tanto como la cantidad de dinero de la que disponga Sin embargo, a pesar de que el conjunto de salida parece reducido, el conjunto de variables a tomar en cuenta es mucho mayor, ya que, a la hora de tomar una decisión no sólo depende de las cartas que se poseen, sino que también se tendrá en cuenta la posición que se ocupa en la mesa y el modo de jugar de los contrincantes. Además el tiempo de respuesta también suele influir en el modo de juego de los jugadores, por ejemplo, un jugador que no tiene segura su jugada tardará más en decidirse que un jugador que tiene una buena mano. IA en el Póquer Online: Clasificador de manos Preflop Página 4
  • 5. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 1.2 Objetivos El objetivo principal es obtener un programa o agente, que mediante una técnica de inteligencia artificial que sea capaz de tomar las mejores decisiones posibles, en la primera ronda de apuestas del juego (Preflop*1 [2]). Es decir, el programa no jugará una mano entera, sino que sólo intervendrá en la primera parte. Desarrollaremos un Clasificador de Manos Preflop, el cuál recibiendo la información de la partida, obtenga como salida una decisión (Fold, Call, Raise N), que se parezca lo máximo posible a la decisión que tomaría un jugador profesional. Hemos decidido centrarnos únicamente en la primera ronda de apuestas porque: • Realizar un agente que juegue todas las rondas sería un proyecto de gran envergadura, en el cúal habría que usar probablemente sistemas híbridos para llegar a obtener buenos resultados. • La selección de manos preflop es el paso más importante en el Texas Hold’em, porque decide el resto de la mano. • Podemos inferir técnicas usadas por profesionales (bluf, semi-bluf, robos, semi-robos, squeeze,…) una vez obtenido el clasificador. • En el estado del arte no hemos visto que se haga exactamente lo mismo, aunque sí van más allá y desarrollan un jugador que juegue todas las ronas. Es cierto, que es complejo de valorar finalmente si hemos creado un buen jugador, o hemos conseguido aprender las mejores decisiones, ya que el conjunto de posibilidades es muy grande. En nuestro caso sería positivo que con estas decisiones consiguiésemos ganar el mayor dinero posible cuando realicemos apuestas, y de perder la menor cantidad de dinero posible cuando la jugada sea mala. Es decir, el objetivo a largo plazo no es ganar manos, sino jugar de la mejor manera, para ganar el mayor dinero posible. Esto puede parecer contradictorio, pero no lo es, ya que en el póquer prima la habilidad para ganar dinero, y muchas veces esto se puede conseguir sin tener la mejor mano. 1 * Denomina la ronda de apuestas anterior a que se saque el flop, es decir, el momento del juego en que cada cual cuenta únicamente con las dos cartas cubiertas para tomar una decisión; suele utilizarse frecuentemente para denominar un tipo de juego, es decir, para explicar cuáles son las estrategias en cuanto a rango de manos, apuestas etc. que deben seguirse en este punto de la mano. El comportamiento de los jugadores en el juego preflop es una de las variables más importantes que se manejan en los trackers*2 ya que proporciona valiosos datos estadísticos que permiten hacerse una idea del rango de manos con que el contrincante suele permitirse jugar y de qué manera se mueve con cada tipo de cartas. *2 La palabra tracker [3] se puede traducir literalmente como “rastreador” y es utilizada, por ejemplo para referirse a los perros rastreadores. En relación al póker denominamos tracker de manera genérica a los software utilizados para recoger e interpretar estadísticas de nuestros rivales. IA en el Póquer Online: Clasificador de manos Preflop Página 5
  • 6. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 1.3 Posibles aplicaciones Si obtuviéremos un buen clasificador, este podría usarse, como complemento en herramientas que ayudan a los jugadores online a tomar decisiones. Estas herramientas dan probabilidades, simulando muchas partidas, dándote una buena estimación de qué decisión tomar. Nuestro agente, podría aconsejar al jugador en función de que haría un jugador profesional, o por ejemplo que habría hecho él en otra misma ocasión, dependiendo de los datos con los que se entrene al agente. Siendo de esta manera nuestro agente como una herramienta de aprendizaje del póquer. El agente, también podría usarse como parte de un jugador automático, esto sería valioso para las casas de apuestas que albergan partidas de Póker Online, ya que, es necesario un mínimo de jugadores para participar y para que los jugadores tengan un servicio de juego 24h podrían interactuar con estos jugadores creados mediante IA, aunque esto no sería lícito, y sólo sería usado por salas de baja categoría, poco demandadas por la mayoría de los usuarios. Este jugador automático también sería muy demandado por usuarios cuyo fin no es aprender a jugar al póker, sino ganar dinero, pudiéndose crear bots, o programas autónomos, capaces de navegar por las aplicaciones e ir entrando en mesas para jugar. Podrían hasta colaborar entre ellos, teniendo un sistema multiagentes que crea una rez de agentes, capaz de comunicarse para intentar ganar el mayor dinero posible. Este tema es penado por las salas de manera tajante, porque la gente dejaría de jugar en su sala. Aún así, hay bastante controversia sobre si se puede diseñar un bot capaz de ganar a un humano en el póquer, ya que es un juego bastante difícil como para aprenderlo con técnicas de inteligencia artificial. IA en el Póquer Online: Clasificador de manos Preflop Página 6
  • 7. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 2. ESTADO DEL ARTE La Inteligencia Artificial ya se ha adentrado en el campo de la toma de decisiones en el Póker. Actualmente se dice que es una de las principales amenazas del Póker Online, y esto se debe a que los jugadores que han sido generados, a pesar de que no son capaces de vencer a jugadores expertos, sí que son capaces de ganar a jugadores amateur y estándar. Es por ello que actualmente se intentan introducir técnicas para poder expulsar a jugadores automáticos. Técnicas como la resolución de los cada vez más inservibles captchas o de problemas más específicos como preguntas, etc. Además de empresas dedicadas a este propósito también las universidades se encargan de organizar concursos, uno de los más conocidos es el First Man-Machine Poker Championship [4], promocionado por la universidad de Alberta (Edmonton, Canadá), los cuáles también son criticados ya que están realizando programas automáticos que juegan al póker, pero se defienden diciendo que sus bots ganan a otros bots, pero no a los humanos. Debido al secretismo que genera este terreno, por su directa productividad, es difícil que las empresas comenten su relación con este tipo de investigaciones, y por tanto es difícil obtener datos de manos y jugadas, así con información relacionada con la aplicación directa de este tipo de solución. A continuación, vamos a describir varios casos que hacen uso de IA en el póker. 2.1 Programas que aprendan a jugar como una persona Nos vamos a centrar en los diseñados en el torneo anual de la universidad de Alberta. En esta competición, cada jugador tiene que diseñar en Java un jugador, usando las técnicas oportunas que considere, normalmente IA. Respecto a la competición de este año la universidad de Alberta publica los resultados [5]. En televisiones estadounidenses han hecho reportajes referentes a estas competiciones [6]. A continuación ponemos una pequeña presentación, para conocer mejor la competición, quién ha ganado este año y que técnicas han usado para hacer sus jugadores: IA en el Póquer Online: Clasificador de manos Preflop Página 7
  • 8. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 IA en el Póquer Online: Clasificador de manos Preflop Página 8
  • 9. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 IA en el Póquer Online: Clasificador de manos Preflop Página 9
  • 10. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 IA en el Póquer Online: Clasificador de manos Preflop Página 10
  • 11. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 IA en el Póquer Online: Clasificador de manos Preflop Página 11
  • 12. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 A continuación vamos a describir las técnicas de IA usadas por los ganadores: • Limit Bankroll: MANZANA Usaron un Perceptrón Multicapa con una capa oculta y tres neuronas de salida. Las neuronas de entrada se encargan de codificar las características relevantes de la situación actual del juego, tales como las cartas de mano, cartas de la mesa y las apuestas anteriores, mientras que las neuronas de salida están entrenadas para dar P(fold), P(call), P(raise), siendo P la probabilidad con la que los robots deben retirarse, igualar o subir, en función del estado actual del juego. El entrenamiento se realiza utilizando algoritmos estándares de aprendizaje, mientras que los ejemplos de entrenamiento se construyeron a partir de las manos del ganador de la competición del último año. • Limit Runoff: GGValuta El algoritmo general utilizado para calcular el equilibrio es un CFR (counterfactual regret minimization) (reducción al mínimo). El modelo de abstracción utilizado ha sido ligeramente modificado para cada calle: En el pre-flop almacenan un nodo para cada posible situación (sin abstracción) y en el flop/turn/river se utilizó un algoritmo de k-medias modificado para hacer clustering sobre las manos. Cada mano se asigna a un punto de N-dimensiones con una función diferente para cada calle. Estas fueron elegidas en su mayoría intuitivamente y cada punto se coordina como (E [HS] o el más bajo (E [HS]) o el más alto (E [HS])), donde el mayor y menor muestran el rango potencial de que se complete otra carta. Para el river se utilizó E [HS] con algunos cambios en las medias del rango potencial de las rondas anteriores. • No Limit Bankroll: Hyperborean-BR La técnica Hyperborean-BR empleó una variedad de técnicas diseñadas para explotar el método tradicional de la lectura de los otros jugadores. Se trata de manipular el tamaño del bote, de manera que no se distinga de su oponente. Con el fin de aprovechar que su oponente realice una exploración en el comienzo del juego, para crear un modelo en bruto de su oponente. Las técnicas en No Limit son más complejas que en Limit, ya que un jugador puede apostar todas sus fichas y esto hace que se obtengan peores resultados, sobre todo contra jugadores humanos. IA en el Póquer Online: Clasificador de manos Preflop Página 12
  • 13. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 • No Limit Runoff: Hyperborean-EQM La técnica Hyperborean-EQM fue creado usando las mismas técnicas utilizadas por la Universidad de Alberta en el pasado, con la excepción de que ahora utiliza una lectura más suave. Además, los métodos utilizados para crear la estrategia han sido optimizados para jugar sin límite. A continuación comparamos los resultados [7], en el tercer campeonato de póker de la Universidad de Alberta, del Hyperborean-BR y del Hyperborean-Eqm, contra todas las parejas de oponentes, de los diferentes equipos. Las unidades se presentan como pequeñas apuestas por mano (small bets per hand (sb/h)). Vemos, que la tasa de ganancia es positiva en todos los casos. Si por ejemplo comparamos otros dos modelos (akuma y dpp): Vemos que la tasa de ganancia contra los Hyperborean suele ser negativa. Esto nos indica que son unos buenos modelos, para la competición. • 3 player Bankroll && Runoff: Hyperborean-EQM Se usó la ejecución de un CFR (counterfactual regret minimization) (reducción al mínimo), durante varias semanas, para crear tres jugadores. Los jugadores resultantes eran tan grandes (respecto a estados del juego), que se usó un grano más grueso para construirlos. Se usan 16 categorías o rangos según la fuerza de la mano, donde el jugador olvida sus rangos de las rondas anteriores. IA en el Póquer Online: Clasificador de manos Preflop Página 13
  • 14. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 2.2 Clústering para agrupar tipos de jugadores Estas técnicas intentan inferir posibles conjuntos de tipos de jugadores. Nos centraremos en la usada por un español [8]. Sus resultados no son buenos. Y estadísticamente ya existen otras soluciones bastantes buenas, pero describiremos solamente el funcionamiento de esta. Su fuente de información es una inmensa base de datos de más de 22 millones de manos de Texas Hold’em No Limit 50. A esta base de datos con las 22 millones de manos, hicieron diferentes filtros para poder tratar mejor la información (preproceso), seleccionando los atributos más relevantes para después pasar al proceso de clusterización. Mediante el análisis de tres experimentos, muestran las diferentes posibilidades que ofrecen los distintos algoritmos más conocidos hoy en día: X-means, K-Means y EM. Cometieron muchos errores, el más grave de los cuales fue subestimar el preprocesamiento de los datos. Antes de lanzarse hacia un ejercicio de clusterización debieron estudiar concienzudamente los datos a tratar. Si bien es verdad que su primer error fue tratar con una base de datos demasiado escasa (por los atributos que querían analizar), no es menos cierto que quizás el nivel escogido tampoco fue el adecuado. Según palabras del autor: “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.“ Estos aspectos, que deberían haber tenido muy en cuenta antes de lanzarse 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 no han obtenido todo lo que cabía esperar de sus experimentos, aunque en el último experimento, los resultados han sido muy esperanzadores porqué se veía dónde estaba el problema y, consecuentemente, se pasó a filtrar con muchas más manos y menos atributos. Aún con todas las dificultades encontradas, gracias a todos los experimentos realizados, llegaron a la conclusión que para su problema era mejor hacer uso del algoritmo EM en contra de usar el K-medias. Otro aspecto a tener en cuenta es que se enfrentaron 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 los datasets. IA en el Póquer Online: Clasificador de manos Preflop Página 14
  • 15. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Otra área muy interesante que podrían haber tratado, pero no fue posible por la incoherencia de los resultados obtenidos es la de reglas de asociación. Las reglas de asociación permiten atacar por otro bando el problema y 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 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 la usada hasta ahora, ya que implica unas sentencias SQL mucho más elaboradas y un agrupamiento en forma de Datasets muy complejo de realizar, pero es mucho más interesante las reglas que podrían sacar así que no las reglas que sacarían si tratáran la información como en el Clústering (con tantos por ciento de cada atributo). IA en el Póquer Online: Clasificador de manos Preflop Página 15
  • 16. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 3. DESCRIPCIÓN COMPLETA DE LOS DATOS Y FUENTES EMPLEADOS 3.1 Datos de entrada En este apartado nos centraremos en explicar la fuente principal de los datos, así como una visión panorámica de los datos utilizados. Para la adquisición de los datos hemos tenido diversos problemas, ya que estos datos, comúnmente, son de uso privado, y en caso de querer adquirirlos serian de pago. Debido a esto, nos resulto muy complicado encontrar datos útiles para el estudio. Por ello pedimos datos en diversos blogs sobre póker online, así como contactando con los responsables de 3 webs, sin recibir respuesta alguna Después decidimos pedir los datos en foros sobre póker online, en los cuales nos pusieron varios inconvenientes. Nos dijeron que queríamos los datos para hacer trampas, que no conseguiríamos llegar a ningún sitio con nuestro estudio, que no darían sus manos ya que son de pago, etc. Finalmente, un usuario del foro de poker-red accedió a darnos datos de manos que disponía. En total eran 100000 manos de póker, con las cuales empezamos nuestro estudio. El formato de los datos es XML, y en él se recogen los datos más importantes que se deben recoger en una mesa de póker. IA en el Póquer Online: Clasificador de manos Preflop Página 16
  • 17. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 A continuación explicaremos globalmente el formato de los datos: <general> <mode>real</mode> <gametype>Holdem NL 0.50/1</gametype> <tablename>Aosta__No_DP_</tablename> <duration>N/A</duration> <gamecount>N/A</gamecount> Información de la mano que comienza <startdate>2009-10-20 13:21:35</startdate> <currency>USD</currency> <nickname>PokerHandScout.com</nickname> <bets>N/A</bets> <wins>N/A</wins> <chipsin>N/A</chipsin> <chipsout>N/A</chipsout> Hora de inicio de la mano <ipoints>N/A</ipoints> </general> <startdate>2009-10-20 13:58:22</startdate> <players> <player seat="4" name="ChandlerMBing" chips="$10000000" dealer="0" win="$0" bet="$0" /><player seat="3" name="Hummelx2" chips="$10000000" dealer="0" win="$0" bet="$1" /><player seat="2" name="fakinit" chips="$10000000" dealer="0" win="$39" bet="$20" /><player seat="1" name="BowserJr" chips="$10000000" dealer="1" win="$0" bet="$20" /> </players> Resumen de la mano para cada jugador (lo que ha ganado, las fichas que tenia, su posición en la mesa, si era mano, si era ciega pequeña o grande y su nombre) IA en el Póquer Online: Clasificador de manos Preflop Página 17
  • 18. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 <round no="0"> Apuesta de ciegas <action no="1" player="fakinit" type="1" sum="$0.50"/> <action no="2" player="Hummelx2" type="2" sum="$1"/> Numero de ronda </round> <round no="1"> <cards type="Pocket" player="BowserJr">c10 s10</cards> Cartas de las que <cards type="Pocket" player="fakinit">dJ cJ</cards> dispone un jugador <action no="3" player="ChandlerMBing" type="0" sum="$ 0"/> <action no="4" player="BowserJr" type="23" sum="$3"/> <action no="5" player="fakinit" type="23" sum="$20"/> <action no="6" player="Hummelx2" type="0" sum="$ 0"/> Apuestas <action no="7" player="BowserJr" type="3" sum="$17"/> </round> <round no="2"> <cards type="Flop" player="">hJ cA s9</cards> </round> <round no="3"> Cartas comunes que se <cards type="Turn" player="">d10</cards> van poniendo sobre la </round> mesa <round no="4"> <cards type="River" player="">cK</cards> </round> IA en el Póquer Online: Clasificador de manos Preflop Página 18
  • 19. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 3.2 Datos adicionales Información adicional podría ser otra información que tuviese el jugador, que no fuese sólo la mesa de juego, los oponentes, las fichas y las cartas, es decir, que no fuese sólo la información que te da la sala de póker, que es la mínima para poder jugar. Existen programas que usan los datos de las manos para generar estadísticas de tus contrincantes. Y estas estadísticas se pueden mostrar sobreimpresas en la mesa de la sala de póker online. A esto se llama HUD (head up display). A continuación mostramos una mesa sin HUD y después una con HUD: Figura 1: Mesa de Póker sin HUD Figura 2: Mesa de Póker con HUD Estadísticas del HUD Esta información define a los jugadores, pudiéndose así saber si el jugador va a muchas manos o a pocas, si es agresivo o pasivo, etc. La ventaja del póker online son estas herramientas que te dan información extra de mucha utilidad durante el juego. Tener esta información podría servir como información adicional a nuestros datos. IA en el Póquer Online: Clasificador de manos Preflop Página 19
  • 20. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 3.3 Datos de Salida Los datos de entrada necesitan un procesamiento que se explicará en el siguiente apartado. De nuestro clasificador se espera que, dada una mano, sepa qué decisión tomar en cuanto a Retirarse (Fold), Igualar (Call), Subir N(Raise), Resubir N(Re-Raise). Suponemos que dado que los datos originales son de límites altos en los que juegan profesionales, las decisiones tomadas serán bastante acertadas. En cuanto a la mano se necesitará toda la información que hemos mencionado en el apartado 3.1. IA en el Póquer Online: Clasificador de manos Preflop Página 20
  • 21. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 4. PREPROCESADO DE LOS DATOS 4.1 Estudio de los datos El primer paso de nuestra práctica fue estudiar el formato de los datos que nos proporcionaron, para así saber que parte de ellos nos iban a ser realmente útiles para la práctica. Gracias a este análisis, nos dimos cuenta que los datos correspondían a manos en las cuales solo se veían las cartas de cada jugador en el caso de que llegasen al showdown (momento final de la mano). Esto es debido a que los datos son recogidos por aplicaciones que están 24 horas al día visitando todas las mesas de las salas de póquer online, y almacenando lo que ocurre en las manos. Estas aplicaciones ven las mesas como un mero espectador, sin poder ver las cartas de los jugadores, a menos que estos las enseñen. Debido a ello, de esas 100000 manos iniciales, las que realmente nos iban a interesar eran muchas menos. Esto provocó el desánimo, ya que parecía que iba a ser imposible obtener los datos que necesitábamos. Pero, finalmente, nos percatamos de que, cuando se mostraban las cartas, como mínimo lo hacían dos jugadores, así que realmente disponíamos del doble o más, manos útiles, por lo que el número total de manos a utilizar era de 10708. 4.2 Procesado de datos A continuación comenzamos con el procesado de los ficheros XML. Nuestro propósito es seleccionar una serie de atributos y clases, y utilizando la herramienta WEKA, realizar un estudio de minería de datos. Para ello debíamos transformar los datos dados en el XML al formato arff de WEKA. Para crear nuestro fichero arff programamos en Java un parser que recibiese los ficheros XML de las manos, seleccionase y transformase los datos necesarios para la construcción de los atributos, y finalmente construyese el fichero arff con los atributos, patrones y clases. En este procesado nos dimos cuenta de que había errores en las manos. Por ejemplo, había manos en las que a un jugador se le caía la conexión a internet mientras se jugaba, teniendo que controlar esto para poder sacar las instancias. Y otra causa de error fue, una mano en la que jugaban jugadores no pertenecientes a la mano, no aparecían en el resumen (ver 3.1), pero sí en las apuestas, con lo cual desechamos la mano por estar corrompida. Al terminar el procesado vimos que, había muchos atributos que se repetían en todos los patrones, incluso en varios atributos de un mismo patrón (ejemplo: apuestas), siendo esta redundancia negativa para el clasificador y posteriormente subsanada con las técnicas de selección de atributos. IA en el Póquer Online: Clasificador de manos Preflop Página 21
  • 22. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 5. EXPLORACIÓN DE LOS DATOS 5.1 Clases Trabajamos con el fichero patrones.arff con 10708 patrones, sacados de unas 100.000 manos de póker, de 1795 jugadores. Tenemos 4 clases {0,1,2,3} que son valores continuos (0.0,1.0,2.0,3.0) pero los usaremos para clasificación. Un patrón está en una clase u otra en función del nivel de la apuesta del jugador al que pertenece el patrón. • Clase 0: Apuesta de $0 1050 patrones 9,8% • Clase 1: Apuesta entre $0 y $2.5 3868 patrones 36,1% • Clase 2: Apuesta entre $2.5 y $5 4193 patrones 39,2% • Clase 3: Apuesta superior a $5 1597 patrones 14,9% De las 10708 instancias que hay en total, un 9,8% de los datos son de la clase 0, un 36,1% son de la clase 1, un 39,2% de la clase 2,y un 14,9% de la clase 3. Al no encontrarse en la misma proporción, están desequilibradas. Y sería bueno, para que se clasifiquen bien, que estuvieran mejor equilibradas, pero no hemos conseguido ajustar a nivel de apuesta que haga que estén mejor equilibradas las clases. IA en el Póquer Online: Clasificador de manos Preflop Página 22
  • 23. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 5.2 Clasificadores El primer paso que haremos será probar nuestros datos con una serie de clasificadores lineales y no lineales, para analizar estos resultados y poder centrarnos en los mejores clasificadores, para en siguientes apartados filtrar los datos y ajustar mejor los parámetros de los clasificadores. Para realizar las pruebas, Java, muchas veces se quedaba sin memoria: Por lo que ampliamos la memoria usada, a 512 Mb, con el comando: java -jar -Xmx512m weka.jar Para todas las pruebas se ha usado la opción de Percentage Split al 66% (train = 66% y test = 33%) lo que dan 7067 instancias para entrenamiento de las 10708 del total. En algunas pruebas, como complemento, se ha probado a usar el conjunto de entrenamiento para hacer el test, y en estas pruebas explicaremos la razón de usarlo. Además se ha marcado la opción, de conservar el orden de los patrones, marcada, ya que si no Weka los desordena aleatoriamente, y esto es innecesario, ya que los datos ya son aleatorios. IA en el Póquer Online: Clasificador de manos Preflop Página 23
  • 24. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 • CLASIFICADORES LINEALES: Separan los datos con fronteras de separación lineales (plano o hiperplano). o SMO Soluciona problemas multiclase usando clasificación por parejas. En los casos multi-clase las probabilidades predichas se juntaran usando los métodos de emparejamiento Hastie y Tibshirani. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 1793 49.2447 % Incorrectly Classified Instances 1848 50.7553 % Kappa statistic 0.1885 Mean absolute error 0.3093 Root mean squared error 0.3956 Relative absolute error 90.2991 % Root relative squared error 95.4496 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0 0 0 0 0 0.807 0.0 0.67 0.418 0.48 0.67 0.559 0.647 1.0 0.644 0.393 0.505 0.644 0.566 0.644 2.0 0.002 0 1 0.002 0.004 0.736 3.0 Weighted Avg. 0.492 0.304 0.514 0.492 0.422 0.675 === Confusion Matrix === a b c d <-- classified as 0 354 33 0 | a = 0.0 0 892 440 0 | b = 1.0 0 497 900 0 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 24
  • 25. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Logistic Crea y utiliza un modelo de regresión logística multinomial con un estimador. Hay algunas modificaciones del modelo propuesto por leCessie y van Houwelingen. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 1863 51.1673 % Incorrectly Classified Instances 1778 48.8327 % Kappa statistic 0.2501 Mean absolute error 0.303 Root mean squared error 0.3886 Relative absolute error 88.441 % Root relative squared error 93.7416 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.282 0.028 0.542 0.282 0.371 0.845 0.0 0.58 0.332 0.502 0.58 0.538 0.674 1.0 0.631 0.373 0.513 0.631 0.566 0.679 2.0 0.19 0.027 0.546 0.19 0.282 0.801 3.0 Weighted Avg. 0.512 0.271 0.517 0.512 0.494 0.713 === Confusion Matrix === a b c d <-- classified as 109 240 36 2 | a = 0.0 81 773 465 13 | b = 1.0 o 11 437 881 68 | c = 2.0 o o Simple Logistic Clasificador lineal para la construcción de modelos de regresión logística. === Evaluation on test split === === Summary === Correctly Classified Instances 1865 51.2222 % Incorrectly Classified Instances 1776 48.7778 % Kappa statistic 0.2492 Mean absolute error 0.3037 Root mean squared error 0.3886 Relative absolute error 88.6475 % Root relative squared error 93.7398 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.261 0.026 0.549 0.261 0.354 0.845 0.0 0.586 0.333 0.504 0.586 0.541 0.675 1.0 0.635 0.375 0.513 0.635 0.567 0.68 2.0 0.185 0.026 0.542 0.185 0.276 0.801 3.0 Weighted Avg. 0.512 0.272 0.518 0.512 0.493 0.713 === Confusion Matrix === a b c d <-- classified as 101 248 36 2 | a = 0.0 72 780 467 13 | b = 1.0 11 432 887 67 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 25
  • 26. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Perceptron Simple Para este clasificador usamos el Multilayer Perceptron con ninguna capa oculta. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 1514 41.582 % Incorrectly Classified Instances 2127 58.418 % Kappa statistic 0.0788 Mean absolute error 0.3018 Root mean squared error 0.4482 Relative absolute error 88.0926 % Root relative squared error 108.1404 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.189 0.018 0.557 0.189 0.282 0.826 0.0 0.045 0.035 0.426 0.045 0.081 0.598 1.0 0.947 0.863 0.406 0.947 0.568 0.58 2.0 0.11 0.016 0.532 0.11 0.183 0.734 3.0 Weighted Avg. 0.416 0.348 0.447 0.416 0.304 0.635 === Confusion Matrix === a b c d <-- classified as 73 36 276 2 | a = 0.0 48 60 1210 14 | b = 1.0 7 32 1323 35 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 26
  • 27. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Naive Bayes Clasificador bayesiano cuyos atributos numéricos son modelados como una distribución normal. Es un Clasificador discriminador bayes standard. Para combinar las probabilidades de los distintos atributos asume que estas son independientes entre sí. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 1673 45.9489 % Incorrectly Classified Instances 1968 54.0511 % Kappa statistic 0.2366 Mean absolute error 0.3022 Root mean squared error 0.4149 Relative absolute error 88.2112 % Root relative squared error 100.0884 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.817 0.208 0.319 0.817 0.458 0.87 0.0 0.491 0.292 0.492 0.491 0.492 0.625 1.0 0.448 0.245 0.533 0.448 0.487 0.663 2.0 0.147 0.022 0.527 0.147 0.23 0.792 3.0 Weighted Avg. 0.459 0.226 0.494 0.459 0.448 0.69 === Confusion Matrix === a b c d <-- classified as 316 63 5 3 | a = 0.0 409 654 255 14 | b = 1.0 227 492 626 52 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 27
  • 28. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Bayes Net Red Bayesiana de aprendizaje que utiliza diferentes algoritmos de búsqueda y medidas de calidad. Proporciona una serie de estructuras de datos (estructura de la red, distribuciones de probabilidad condicional, etc), comunes a la Red de aprendizaje de los algoritmos de Bayes como K2 y B. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 2019 55.4518 % Incorrectly Classified Instances 1622 44.5482 % Kappa statistic 0.3391 Mean absolute error 0.2793 Root mean squared error 0.3744 Relative absolute error 81.5284 % Root relative squared error 90.3151 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.687 0.061 0.573 0.687 0.625 0.932 0.0 0.524 0.226 0.572 0.524 0.547 0.721 1.0 0.67 0.344 0.548 0.67 0.603 0.728 2.0 0.227 0.042 0.478 0.227 0.307 0.811 3.0 Weighted Avg. 0.555 0.227 0.549 0.555 0.542 0.759 === Confusion Matrix === a b c d <-- classified as 266 75 45 1 | a = 0.0 116 698 466 52 | b = 1.0 72 312 936 77 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 28
  • 29. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 • CLASIFICADORES NO LINEALES: Separan los datos con fronteras de separación no lineales. o J48 Se trata de una implementación propia de WEKA para el algoritmo C4.5, un algoritmo basado en clasificación por árbol de decisión. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 2274 62.4554 % Incorrectly Classified Instances 1367 37.5446 % Kappa statistic 0.452 Mean absolute error 0.2104 Root mean squared error 0.3958 Relative absolute error 61.4247 % Root relative squared error 95.495 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.827 0.027 0.782 0.827 0.804 0.923 0.0 0.592 0.197 0.634 0.592 0.612 0.727 1.0 0.663 0.259 0.614 0.663 0.638 0.712 2.0 0.455 0.077 0.499 0.455 0.476 0.738 3.0 Weighted Avg. 0.625 0.186 0.623 0.625 0.623 0.743 === Confusion Matrix === a b c d <-- classified as 320 28 28 11 | a = 0.0 37 789 404 102 | b = 1.0 43 301 926 127 | c = 2.0 o Ordinal Class Classifier (J48) Meta clasificador que permite que la clasificación estándar de algoritmos sea aplicada a problemas ordinarios de clasificación. Usamos, ahora, el j48. Y vemos que mejora de manera muy superflua: === Evaluation on test split === === Summary === Correctly Classified Instances 2275 62.4828 % Incorrectly Classified Instances 1366 37.5172 % Kappa statistic 0.4465 Mean absolute error 0.2153 Root mean squared error 0.3876 Relative absolute error 62.8628 % Root relative squared error 93.5199 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.829 0.012 0.889 0.829 0.858 0.947 0.0 0.612 0.196 0.643 0.612 0.627 0.735 1.0 0.658 0.299 0.578 0.658 0.615 0.688 2.0 0.419 0.065 0.52 0.419 0.464 0.738 3.0 Weighted Avg. 0.625 0.197 0.627 0.625 0.624 0.74 === Confusion Matrix === a b c d <-- classified as 321 41 21 4 | a = 0.0 3 815 439 75 | b = 1.0 32 322 919 124 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 29
  • 30. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Multilayer Perceptron (train = 66%) Redes neuronales en formas de perceptrón muliticapa entrenadas con el algoritmo backpropagation. Para este modelo se probó con un 66% de los datos para entrenamiento y un 33% para test. Después se probará también con " Use training set", que hace test con los mismos datos con los que entrena, para ver si hay mucha diferencia en los aciertos, como es lógico esperar. Al tener un 33% para test, los resultados de este serán lógicamente peores, pero comparando los dos tipos podremos saber como de buenos son realmente estos resultados. El número de capas ocultas usado fue el valor por defecto, Y como ya dijimos al principio, conservando el orden original de los datos. Obtenemos los siguientes resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 2216 60.8624 % Incorrectly Classified Instances 1425 39.1376 % Kappa statistic 0.4288 Mean absolute error 0.2456 Root mean squared error 0.3636 Relative absolute error 71.6913 % Root relative squared error 87.7141 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.804 0.037 0.718 0.804 0.759 0.953 0.0 0.523 0.194 0.609 0.523 0.563 0.726 1.0 0.689 0.285 0.601 0.689 0.642 0.761 2.0 0.467 0.069 0.531 0.467 0.497 0.858 3.0 Weighted Avg. 0.609 0.194 0.606 0.609 0.605 0.783 === Confusion Matrix === a b c d <-- classified as 311 57 6 13 | a = 0.0 76 697 467 92 | b = 1.0 28 295 963 111 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 30
  • 31. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Ordinal Class Classifier (MLP train = 66%) Probamos el mismo meta clasificador que antes, pero usando como algoritmo el perceptrón multicapa, con la misma configuración que en el ejemplo anterior. Observamos que no hay mejora, aunque la variación en el porcentaje de aciertos es muy leve: === Evaluation on test split === === Summary === Correctly Classified Instances 2189 60.1208 % Incorrectly Classified Instances 1452 39.8792 % Kappa statistic 0.4165 Mean absolute error 0.2327 Root mean squared error 0.3721 Relative absolute error 67.9233 % Root relative squared error 89.7618 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.822 0.033 0.748 0.822 0.783 0.959 0.0 0.519 0.179 0.625 0.519 0.567 0.747 1.0 0.686 0.315 0.576 0.686 0.626 0.736 2.0 0.421 0.072 0.496 0.421 0.455 0.809 3.0 Weighted Avg. 0.601 0.2 0.601 0.601 0.597 0.774 === Confusion Matrix === a b c d <-- classified as 318 48 15 6 | a = 0.0 58 691 497 86 | b = 1.0 32 273 959 133 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 31
  • 32. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Multilayer Perceptron (test = train) Para este modelo se probó también el MLP, pero con " Use training set", que hace test con los mismos datos con los que entrena. Hicimos esto, para ver si hay mucha diferencia en los aciertos, como es lógico esperar. Ya que si el modelo construido es bueno, si se pone a prueba con los patrones de entrenamiento, debería de obtener unos muy buenos resultados. El número de capas ocultas usado fue el valor por defecto, Y conservando el orden original de los datos. Obtenemos los siguientes resultados: === Evaluation on training set === === Summary === Correctly Classified Instances 6618 61.8043 % Incorrectly Classified Instances 4090 38.1957 % Kappa statistic 0.4418 Mean absolute error 0.2413 Root mean squared error 0.3563 Relative absolute error 70.5073 % Root relative squared error 86.1383 % Total Number of Instances 10708 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.761 0.021 0.797 0.761 0.779 0.944 0.0 0.785 0.375 0.542 0.785 0.641 0.789 1.0 0.462 0.112 0.726 0.462 0.564 0.792 2.0 0.53 0.065 0.59 0.53 0.559 0.873 3.0 Weighted Avg. 0.618 0.191 0.646 0.618 0.612 0.818 === Confusion Matrix === a b c d <-- classified as 799 226 9 16 | a = 0.0 100 3036 533 199 | b = 1.0 66 1818 1936 373 | c = 2.0 Vemos que no hay una mejora sustancial como pensamos que debería suceder. IA en el Póquer Online: Clasificador de manos Preflop Página 32
  • 33. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o Ordinal Class Classifier (test = train) Con el MLP anterior, también decidimos probar el meta clasificador, usando "Use training set" y con la misma configuración que en el ejemplo anterior. Observamos que hay mejora, aunque la variación en el porcentaje de aciertos es muy pequeña, vemos en la matriz de confusión que clasifica mejor, y suele tener menos fallos: === Evaluation on training set === === Summary === Correctly Classified Instances 6906 64.4938 % Incorrectly Classified Instances 3802 35.5062 % Kappa statistic 0.4722 Mean absolute error 0.2181 Root mean squared error 0.3483 Relative absolute error 63.7474 % Root relative squared error 84.2101 % Total Number of Instances 10708 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.83 0.024 0.792 0.83 0.811 0.963 0.0 0.795 0.345 0.566 0.795 0.661 0.801 1.0 0.557 0.155 0.699 0.557 0.62 0.802 2.0 0.389 0.022 0.755 0.389 0.514 0.863 3.0 Weighted Avg. 0.645 0.191 0.668 0.645 0.638 0.827 === Confusion Matrix === a b c d <-- classified as 872 163 11 4 | a = 0.0 135 3076 582 75 | b = 1.0 60 1674 2336 123 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 33
  • 34. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 o RBFNetwork Redes de funciones de base radial. Con train = 66% y conservando el orden original. Tenemos los resultados: === Evaluation on test split === === Summary === Correctly Classified Instances 1902 52.2384 % Incorrectly Classified Instances 1739 47.7616 % Kappa statistic 0.2885 Mean absolute error 0.2978 Root mean squared error 0.3858 Relative absolute error 86.9388 % Root relative squared error 93.0714 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.677 0.081 0.497 0.677 0.573 0.915 0.0 0.52 0.261 0.535 0.52 0.528 0.687 1.0 0.626 0.363 0.518 0.626 0.567 0.682 2.0 0.137 0.018 0.558 0.137 0.22 0.767 3.0 Weighted Avg. 0.522 0.246 0.528 0.522 0.503 0.721 === Confusion Matrix === a b c d <-- classified as 262 110 13 2 | a = 0.0 161 693 465 13 | b = 1.0 80 400 875 42 | c = 2.0 o REPTree Es un método de aprendizaje rápido mediante árboles de decisión. Construye un árbol de decisión usando la información de varianza y lo poda usando como criterio la reducción del error. Solamente clasifica valores para atributos numéricos una vez. Los valores que faltan se obtienen partiendo las correspondientes instancias. Vemos que: === Evaluation on test split === === Summary === Correctly Classified Instances 2143 58.8575 % Incorrectly Classified Instances 1498 41.1425 % Kappa statistic 0.401 Mean absolute error 0.2519 Root mean squared error 0.3771 Relative absolute error 73.5421 % Root relative squared error 90.9842 % Total Number of Instances 3641 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.755 0.046 0.661 0.755 0.704 0.921 0.0 0.573 0.237 0.582 0.573 0.577 0.726 1.0 0.609 0.256 0.597 0.609 0.603 0.723 2.0 0.451 0.073 0.512 0.451 0.48 0.814 3.0 Weighted Avg. 0.589 0.2 0.586 0.589 0.587 0.758 === Confusion Matrix === a b c d <-- classified as 292 75 17 3 | a = 0.0 101 763 402 66 | b = 1.0 41 348 851 157 | c = 2.0 IA en el Póquer Online: Clasificador de manos Preflop Página 34
  • 35. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 5.3 Resultados En resumen, tenemos los siguientes resultados: Clasificadores Lineales Algoritmo % Aciertos % Error Absoluto Media Aciertos =49,1028% SMO 49.2447 % 90.2991 % Media Error = 87,5366% Logistic 51.1673 % 88.441 % Simple Logistic 51.2222 % 88.6475 % Perceptrón Simple 41.582 % 88.0926 % Naive Bayes 45.9489 % 88.2112 % Bayes Net 55.4518 % 81.5284 % Clasificadores No Lineales Algoritmo % Aciertos % Error Absoluto Media Aciertos = 60,4144% J48 62.4554 % 61.4247 % Media Error =69,8297% OrdinalClassClassifier 62.4828 % 62.8628 % (J48) Multilayer Perceptron 60.8624 % 71.6913 % (train=66%) OrdinalClassClassifier 60.1208 % 67.9233 % (MLP train=66%) Multilayer Perceptron 61.8043 % 70.5073 % (test=train) OrdinalClassClassifier 64.4938 % 63.7474 % (MLP test=train) RBFNetwork 52.2384 % 86.9388 % REPTree 58.8575 % 73.5421 % Con los nuevos atributos (MiPosición, Pareja, Consecutivas) los resultados mejoran notablemente a las pruebas iniciales que hicimos con los atributos antiguos, en la entrega intermedia, del cuatrimestre. En estas teníamos entre un 43 y 46% con MLP, y con J48 teníamos 47.8369 %, usando 70% de train y 30% de test. La diferencia en los aciertos es sustancial. Como vemos en los resultados, para nuestro problema, los clasificadores no lineales han tenido una media de aciertos mayor que la de los clasificadores lineales. Cualquier clasificador no lineal, mejora al mejor de los clasificadores lineales. Las pruebas de MLP y su meta clasificador, con test igual que entrenamiento, nos las tendremos en cuenta para la comparativa final, ya que son los únicos que han sido testados con el mismo conjunto de entrenamiento. Si tuviéramos que elegir un algoritmo, de entre todos los probados, para resolver el problema nos quedaríamos con el J48 por diversos motivos: o Aunque el MLP (train = 66%) y su MetaClasificador del MLP (train = 66%) son bastante buenos, no mejoran al J48, ni a su meta clasificador. o Con el J48 podemos interpretar los resultados leyendo el árbol. o El tiempo de ejecución del MLP es mayor y hace más incómodas las pruebas. o No elegimos el metaclasificador del J48, ya que no entendemos muy bien el funcionamiento de estos algoritmos, pero de lo que si estamos seguros es de que no son una gran mejora. IA en el Póquer Online: Clasificador de manos Preflop Página 35
  • 36. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Aunque, elegiremos el algoritmo J48 y el MLP para continuar la exploración de los datos, ya que son los mejores en los resultados, y queremos seguir comparándolos y puliéndolos para mejorar más sus resultados. Con los resultados obtenidos no podemos considerar que los resultados obtenidos son buenos, porque los errores son muy grandes. Pero teniendo en cuenta que las clases están desequilibradas, los resultados son algo más aceptables. Además el problema es bastante complicado para los pocos patrones de los que disponemos. Si tenemos en cuenta que los datos no son de un solo jugador, sino de 1795, lo que significa que el comportamiento que se está intentando predecir es un comportamiento muy general, donde el factor humano altera mucho el aprendizaje de los clasificadores. Además, aún los datos no han sido filtrados, y como ya sabemos, tenemos muchos datos superfluos e incorrectos, como el stack de los jugadores. Una primera aproximación a decir que atributos son los más relevantes para la tarea de clasificación, y así poder descartar otras sería ver que atributos están en la cima del árbol que nos da el J48. Esto, en cambio, no se podría hacer con el MLP. También podríamos decrementar el Confidence Factor para obtener un árbol más pequeño y así poder estudiarlo mejor IA en el Póquer Online: Clasificador de manos Preflop Página 36
  • 37. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 6. SELECCIÓN DE ATRIBUTOS Podemos dividir los métodos de selección de atributos en: 1. Evaluación individual de atributos (Ranker) 2. Evaluación de subconjuntos de atributos a. Filter: se evalúan los atributos de manera individual, pero tiene en cuenta la redundancia entre atributos. b. Wrapper: se evalúan de manera conjunta. Hay que definir: • Una manera de moverse por el espacio de búsqueda (lo que llamaremos método de búsqueda). • Una manera (medida) de evaluar subconjuntos de atributos (lo que llamaremos evaluador de atributos). IA en el Póquer Online: Clasificador de manos Preflop Página 37
  • 38. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 6.1 Técnicas de selección de atributos. A continuación explicamos las técnicas usadas y sus resultados: • Selección Ranker: o Evaluador de atributos: ChiSquaredAttributeEval. o Método de búsqueda: Ranker. o Modo de selección de atributos: Use training set. ChiSquaredAttributeEval: usa el estadístico Chi-squared para evaluar el valor predictivo del atributo. Obtenemos los atributos, seleccionados de manera individual por el valor de correlación del atributo, ordenados de mejor a peor. No detecta correlación conjunta. Y al contrario que Filter, no detecta redundancias en los atributos: === Attribute Selection on all input data === Search Method: Attribute ranking. Attribute Evaluator (supervised, Class (nominal): 31 class): Chi-squared Ranking Filter Ranked attributes: 1354.5475 18 MiPosicion 960.8091 26 ValorSubida1 952.3952 27 ValorSubida2 883.6841 28 ValorSubida3 816.5711 22 ValorCarta2 787.1046 20 ValorCarta1 728.5459 29 ValorSubida4 525.3871 24 Pareja 197.4389 30 ValorSubida5 167.0821 23 Suited 52.7871 5 JugadoresTotales 52.7871 7 FichasJugador6 52.7871 6 PosicionJugador6 28.0305 25 Consecutivas 26.5342 9 FichasJugador5 26.5342 8 PosicionJugador5 22.037 11 FichasJugador4 22.037 10 PosicionJugador4 0 2 CiegaGrande. . . Selected attributes: 18,26,27,28,22,20,29,24,30,23,5,7,6,25,9,8,11,10,2,1,4,3,17,16,21,19,13,12,15, 14 : 30 IA en el Póquer Online: Clasificador de manos Preflop Página 38
  • 39. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 • Selección Filter: o Evaluador de atributos: CfsSubsetEval. o Método de búsqueda: GreedyStepwise. o Modo de selección de atributos: Use training set. Filter es una técnica de evaluación de subcojuntos de atributos, pero no detecta correlación conjunta. Obtenemos un subconjunto, de atributos correlacionados entre sí, de los mejores atributos: === Attribute Selection on all input data === Search Method: Greedy Stepwise (forwards). Start set: no attributes Merit of best subset found: 0.09 Attribute Subset Evaluator (supervised, Class (nominal): 31 class): CFS Subset Evaluator Including locally predictive attributes Selected attributes: 18,20,22,24,26,27,28,29,30 : 9 MiPosicion ValorCarta1 ValorCarta2 Pareja ValorSubida1 ValorSubida2 ValorSubida3 ValorSubida4 ValorSubida5 Filter penaliza los atributos redundantes. Tener atributos redundantes es como tener el mismo atributo repetido. Así se le está dando más peso al atributo, y esto no es correcto. IA en el Póquer Online: Clasificador de manos Preflop Página 39
  • 40. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 • Selección Wrapper: o Evaluador de atributos: ClassifierSubsetEval. Usando PART como clasificador. Usando el conjunto de entrenamiento para calcular los aciertos. o Método de búsqueda: GreedyStepwise. o Modo de selección de atributos: Use training set Esta es una técnica de evaluación de subconjuntos de atributos, como Filter, pero mucho más lenta, aunque más eficaz. Evalúa el subconjunto de atributos ejecutando un algoritmo de minearía de datos concreto, sobre un conjunto de entrenamiento. El algoritmo elegido ha sido PART. Después de 12 horas ejecutando conseguimos que terminase, con el siguiente subconjunto de atributos seleccionados: === Attribute Selection on all input data === === Attribute Selection on all input data === Search Method: Greedy Stepwise (forwards). Start set: no attributes Merit of best subset found: 0.089 Attribute Subset Evaluator (supervised, Class (nominal): 31 class): Classifier Subset Evaluator Learning scheme: weka.classifiers.rules.PART Scheme options: -M 2 -C 0.25 -Q 1 Hold out/test set: Training data Accuracy estimation: classification error Selected attributes: 3,4,5,18,19,20,21,22,23,24,25,26,27,28,29,30 : 16 Hora Minuto JugadoresTotales MiPosicion PaloCarta1 ValorCarta1 PaloCarta2 ValorCarta2 Suited Pareja Consecutivas ValorSubida1 ValorSubida2 ValorSubida3 ValorSubida4 Esta técnica es más lenta en ejecución que Filter y Ranker, pero da mejores resultados. Para problemas sencillos, no haría falta y aparentemente no merece la pena porque el tiempo que necesita es muy elevado, pero pensamos que en nuestro problema, al haber tantos atributos que siempre tenían el mismo valor, iba a ser importante hacer una selección buena de los atributos. Con las pruebas siguientes corroboraremos si ha merecido la pena la espera. IA en el Póquer Online: Clasificador de manos Preflop Página 40
  • 41. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 6.2 Ranker A continuación, utilizando Ranker, realizaremos una gráfica que muestre como varía el porcentaje de aciertos en función del número de atributos considerados. La gráfica tiene un punto cada 5 atributos. Esto quiere decir que la gráfica tendrá 30/5 = 6 puntos. Para realizar las pruebas en Weka, en Reprocess aplicamos un filtro a los patrones,en Attribute Selection y como evaluador elegimos ChiSquaredAttributeEval y como método de búsqueda Ranker. También en Select Attributes podríamos habernos guardado los datos después de haber hecho la selección de atributos, ya que Weka te da esa opción. Después vamos cogiendo grupos de atributos, múltiplos de 5 y ejecutando los algoritmos de clasificación (J48 y MLP). Número Atributos % Aciertos J48 % Aciertos MLP 5 53.337 % 44.9602 % 10 59.1046 % 52.3483 % 15 64.0483 % 60.7525 % 20 64.3505 % 62.8673 % 25 62.1533 % 61.8511 % 30 62.0983 % 60.3406 % Si mostramos en una gráfica los datos, podemos ver como varia el porcentaje de aciertos en función del número de atributos considerados. Vemos que el J48 siempre va por delante del MLP. Al principio, las dos gráficas van aumentando progresivamente, hasta alcanzar un máximo, para después estabilizarse e ir decrementando poco a poco. Seleccionando los mejores 20 atributos del Ranker, vemos que obtenemos los mejores resultados para ambos clasificadores. IA en el Póquer Online: Clasificador de manos Preflop Página 41
  • 42. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Después de ver estos buenos resultados, decidimos intentar ver de manera gráfica la separación entre las clases utilizando alguna pareja de los mejores atributos seleccionados. Ejecutamos el clasificador (J48) con los dos mejores atributos seleccionados con Ranker (MiPosicion eje X y ValorSubida1 eje Y). En Visualize podemos ver la separación de los patrones en clases (0, 1, 2 y 3): No se ven conjuntos claramente repartidos, ya que se entremezclan bastantes los patrones. La visualización no es la mejor, quizás una vista en tres dimensiones nos ayudaría más a ver la separación. Lo que se puede apreciar es en cada montículo una base de la clase 2, acompañada a veces por la clase 0, pero esto es sólo en algunos valores de ValorSubida1. En la parte intermedia la clase 1. Y en la parte más superior sobre todo la clase 3. El hecho de elegir los dos mejores atributos es el que favorece que se separen mejor los datos, ya que hicimos pruebas con otras parejas de entre los mejores atributos y los patrones se entremezclaban mucho más en la gráfica. IA en el Póquer Online: Clasificador de manos Preflop Página 42
  • 43. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 6.3 Filter Ahora, probamos a utilizar Filter para comparar los dos clasificadores (J48 y MLP). Filter nos arrojaba los 9 mejores atributos, que nos da unos aciertos: % Aciertos J48 % Aciertos MLP 58.83 % 52.4032 % Vemos que son unos resultados bastante pobres, aunque de nuevo el J48 mejora al MLP, en aciertos y en todas las ventajas adicionales que este modelo conlleva. 6.4 Wrapper Finalmente, probamos con el último selector de atributos, el cual nos da mayores esperanzas de obtener unos muy buenos resultados. Wrapper nos daba los mejores 16 atributos de entre los 31, tardando 12 horas en darnos este subconjunto. % Aciertos J48 % Aciertos MLP 61.5216 % 61.4392 % Vemos que los resultados son bueno, y que el J48 está muy parejo a los resultados del MLP. 6.5 Comparativa resultados selectores de atributos Para ver que selector o selectores son mejores y poder elegir estos para trabajar con el experimenter, realizamos una comparativa. Selector de atributos % Aciertos J48 % Aciertos MLP Ranker (20 atributos) 64.3505 % 62.8673 % Filter (9 atributos) 58.83 % 52.4032 % Wrapper (16 atributos) 61.5216 % 61.4392 % Sin selección de 62.4554 % 60.8624 % atributos (30 atributos) Además de los selectores se incluyen los resultados en la exploración, con todos los atributos, es decir, con los datos originales. IA en el Póquer Online: Clasificador de manos Preflop Página 43
  • 44. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Para cada gráfica por separado, vemos que el Filter es el peor selector, incluso comparándolo con los resultados de los datos originales. Con lo cuál no lo usaremos para el experimenter de Weka. El Ranker y Wrapper, son bastante parecidos en los resultados, aunque el Ranker ha resultado mejor. Incluso el Wrapper no mejora los resultados originales. A priori, pensábamos que el Wrapper iba a dar mejores resultados, ya que este es muy lento, pero muy potente. Vemos que no ha merecido la pena esperar tanto tiempo por el Wrapper, pero los atributos que nos arrojaba, a simple vista parecían bastante interesantes, desde el punto de vista de un jugador profesional. Importantes para saber cuando los jugadores piensan más sus Hora acciones, siendo más racionales o las piensan menos siendo más Minuto irracionales JugadoresTotales Cuántos son nuestros adversarios es muy importante MiPosicion Saber donde estoy situado en la mesa es primordial, ya que si PaloCarta1 hablo más tarde tengo ventaja sobre los demás ValorCarta1 PaloCarta2 Las cartas son con lo segundo con lo que se gana en el póker ValorCarta2 Estas propiedades nos darán mayor expectativa, ayudándonos a Suited ligar jugadas fuertes, siendo un buen aliciente para jugar las Pareja cartas Consecutivas ValorSubida1 Con las apuestas es lo primero con lo que se gana en el póker, ValorSubida2 así que tengo que saber las apuestas de los otros jugadores para ValorSubida3 saber como de buenas son sus cartas ValorSubida4 Cabe destacar que aunque la hora si puede influir en las cartas con las que jugar, no entendemos muy bien porque el minuto le parece al Wrapper que es importante. Suponemos que habrá obtenido una buena razón para llegar a esta conclusión. IA en el Póquer Online: Clasificador de manos Preflop Página 44
  • 45. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 6.6 Aprendizaje de las clases En este apartado veremos si las distintas clases se aprenden de manera desequilibrada y cuáles se aprenden mejor. Usaremos el Ranker con 20 atributos, ya que es el que ofrece mejores resultados, tanto para el J48, como para el MLP. Al estar las clases desequilibradas, la clase que tenga más representación en los datos va a tener más aciertos en el test. Como vimos en el primer punto de la experimentación, un 9,8% de los datos son de la clase 0, un 36,1% son de la clase 1, un 39,2% de la clase 2, y un 14,9% de la clase 3. En la matriz de confusión podemos ver cuanto se equivoca y acierta el clasificador, en el test, que coge un 33% de los datos (3641 instancias). En la primera fila están los patrones que son de la clase 0 y que fueron clasificados como de la clase 0, 1,2 y 3. La segunda fila con la clase 1, la tercera con la clase 2 y la cuarta con la clase 3. En la diagonal central, se pueden ver los aciertos. Y en los bordes los fallos. J48 MLP === Confusion Matrix === === Confusion Matrix === a b c d <-- classified as a b c d <-- classified as 329 26 27 5 | a = 0.0 334 36 15 2 | a = 0.0 36 831 367 98 | b = 1.0 84 678 520 50 | b = 1.0 36 280 949 132 | c = 2.0 40 219 1072 66 | c = 2.0 8 130 153 234 | d = 3.0 28 92 200 205 | d = 3.0 También nos ayuda el porcentaje de aciertos (TP Rate) de cada clase: J48 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.85 0.025 0.804 0.85 0.827 0.934 0.0 0.624 0.189 0.656 0.624 0.639 0.771 1.0 0.679 0.244 0.634 0.679 0.656 0.75 2.0 0.446 0.075 0.499 0.446 0.471 0.791 3.0 Weighted Avg. 0.644 0.176 0.641 0.644 0.641 0.783 MLP === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure ROC Area Class 0.863 0.047 0.687 0.863 0.765 0.965 0.0 0.509 0.15 0.661 0.509 0.575 0.776 1.0 0.767 0.328 0.593 0.767 0.669 0.787 2.0 0.39 0.038 0.635 0.39 0.483 0.853 3.0 Weighted Avg. 0.629 0.191 0.634 0.629 0.618 0.812 El TP Rate se calcula dividiendo el número de casos en que acertó, entre el número de casos totales. Para la clase 0,en el J48, sería: 329/(329+26+27+5)=0.85. Nos dice que el porcentaje de aciertos en los test, para los patrones de la clase 0 es del 85% IA en el Póquer Online: Clasificador de manos Preflop Página 45
  • 46. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Las clases que tenían más representación en los datos eran la 1 y la 2. Pero aún así no son las clases que mejor se aprenden, teniendo más aciertos, ya que es la clase 0, la que mejor se aprenden (J48 y MLP). Podríamos equilibrar el porcentaje de aciertos de las distintas clases usando un metaclasificador. Nosotros usamos MetaCost. La mayoría de maneras existentes de equilibrar o balacear los datos, usan costos haciendo una modificación al algoritmo de clasificación, pero Metacost utiliza los costos fuera de este, con una técnica de envoltura (wrapping). En MetaCost se crean réplicas del conjunto de entrenamiento con bootstrap y hace un ensamble con bagging (con votación) para calcular la probabilidad de clase de cada ejemplo (utiliza la fracción de los votos del ensamble que corresponde a cada clase). Después se reetiqueta cada ejemplo con la clase óptima estimada al incluir una matriz de costos (multiplica la probabilidad del ejemplo de pertenecer a la clase óptima por el costo asociado) y reaplica el clasificador al conjunto reetiquetado. Como parámetros hay que pasarle el clasificador que estamos usando (J48 y MLP) para la exploración de los datos y la matriz de costos, formada por probabilidades (números decimales entre 0 y 1). En la matriz de costos daremos menos probabilidad a las clases más desequilibrada (con menos datos) y más probabilidad a las clases con más datos. En nuestro caso, un 9,8% de los datos son de la clase 0, un 36,1% son de la clase 1, un 39,2% de la clase 2, y un 14,9% de la clase 3. Por lo tanto a la clase 0 y 3, le daremos menos probabilidad, ya que tiene menos datos. La matriz de costos que usamos es la siguiente: Damos un 25% a la clase 0, porque es la que tiene instancias, así el clasificador intentará clasificar más patrones como de esta clase. A las clases 1 y 2 les damos un 75%, ya que son las dos clases que tiene más datos, casi igualmente repartidos. Y finalmente a la clase 3 le daremos un 50% ya que tiene más datos que la clase 0, pero pocos con respecto a la clase 1 y 2. Si comparamos los resultados aplicando nuestros clasificadores, sin Metacost, con los resultados obtenidos después de aplicarlo, tenemos: J48 (sin metacost) J48 (con metacost) === Confusion Matrix === === Confusion Matrix === a b c d <-- classified as a b c d <-- classified as 329 26 27 5 | a = 0.0 341 25 14 7 | a = 0.0 36 831 367 98 | b = 1.0 37 773 369 153 | b = 1.0 36 280 949 132 | c = 2.0 45 289 913 150 | c = 2.0 8 130 153 234 | d = 3.0 7 98 121 299 | d = 3.0 IA en el Póquer Online: Clasificador de manos Preflop Página 46
  • 47. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 MLP (sin metacost) MLP (con metacost) === Confusion Matrix === === Confusion Matrix === a b c d <-- classified as a b c d <-- classified as 334 36 15 2 | a = 0.0 325 37 7 18 | a = 0.0 84 678 520 50 | b = 1.0 108 650 412 162 | b = 1.0 40 219 1072 66 | c = 2.0 43 223 928 203 | c = 2.0 28 92 200 205 | d = 3.0 29 64 106 326 | d = 3.0 Vemos que el porcentaje de aciertos de las clases 0 y 3 aumenta, y en cambio para las clases 1 y 2 disminuye. Vemos que a costa de empeorar la clase 1 y 2, se puede conseguir que las clases 0 y 3 mejoren. Datos que antes se etiquetaban como de las clases 1 y 2, ahora los etiqueta como de las clases 0 y 3. IA en el Póquer Online: Clasificador de manos Preflop Página 47
  • 48. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 7. EXPERIMENTACIÓN A continuación, usando el Experimenter de Weka, haremos una experimentación con los mejores algoritmos encontrados en la fase de exploración. El objetivo es comprobar si alguno de los algoritmos es mejor de manera significativa que los demás. Probaremos los mismos algoritmos cambiando el conjunto de datos, haciendo validación cruzada, y especialmente, utilizándolos junto con algoritmos de selección de atributos, ya que estos funcionaron bastante bien. El Experimenter de Weka sirve para aplicar varios algoritmos de aprendizaje automático sobre distintos conjuntos de datos. Y determinar de manera estadística cual se comporta mejor. En la fase de exploración conseguimos los mejores porcentajes de aciertos con un grupo de los 20 mejores atributos obtenidos con Ranker y con los 16 atributos obtenidos con Wrapper. Así que probaremos dos tipos de conjuntos de datos, que fueron filtrados de esta manera, siendo el primero de ellos el del Wrapper y el segundo el del Ranker. Con esto podremos realizar un contraste de hipótesis y ver que las diferencias son verdaderas, para así poder descartar la casualidad. Usamos Cross-Validation, con un tamaño de celda (Fold) de 10. Cada experimento se repitió 10 veces. Y tomamos como algoritmo base el J48, ya que es el que nos ha dado mejores resultados. Como algoritmo para comparar con el base tenemos el MLP, con hidden = a, que es el segundo mejor algoritmo, para nuestro problema. Después de más de 6 horas, obtenemos: Dataset (1) trees.J48 '-C | (2) functions.M -------------------------------------------------------------- 'PatronesNL100-weka.filte(100) 61.52(1.50) | 61.60(1.78) 'PatronesNL100-weka.filte(100) 64.34(1.46) | 61.43(1.67) * -------------------------------------------------------------- (v/ /*) | (0/1/1) La nomenclatura (X,Y,Z), dice que X es el número de datasets en los que el algoritmo es significativamente mejor que el algoritmo base. Y, que no es ni mejor ni peor. Y Z, que es significativamente peor. Como vemos, los resultados están bastante más igualados, que los resultados que obtuvimos en la fase de exploración. El MLP llega a mejorar algo al J48 en los experimentos con el conjunto de datos de Wrapper, pero empeora con los datos de los mejores 20 atributos del Ranker. Con estos resultados podemos descartar que la casualidad nos hiciera obtener los resultados que obtuvimos en la fase de exploración de los datos, así que vamos a comparar los resultados que obtuvimos en Explorer con los del Experimenter, tenemos: IA en el Póquer Online: Clasificador de manos Preflop Página 48
  • 49. LA INTELIGENCIA ARTIFICIAL EN LAS ORGANIZACIONES 2009/2010 Técnica usada J48 MLP %Aciertos Explorer 61.5216 % 61.4392 % (Wrapper) %Aciertos Experimenter 61.52 % 61.60% (Wrapper) %Aciertos Explorer 64.3505 % 62.8673 % (Ranker) %Aciertos Experimenter 64.34 % 61.43 % (Ranker) Los resultados del Experimenter son bastante parecidos a los del Explorer. En el Explorer obteníamos que el mejor resultado era el Ranker, y con el Experimenter también. En el Explorer también obteníamos resultados bastante parecidos entre J48 y MLP, aunque siempre era superior el J48, pero en el Experimenter, con el Wrapper, el MLP llega a mejorar al J48. Aunque finalmente vemos que el mejor resultado sigue siendo el J48, con los 20 mejores atributos del Ranker. IA en el Póquer Online: Clasificador de manos Preflop Página 49