SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Práctica de Inteligencia Artificial en las Organizaciones


                      IA en el Póker Online




Año Académico:     2009-2010
Convocatoria:      Febrero




    Grupo de prácticas: Grupo 4
    Alumnos:
       Díaz Ponce, Antonio             email: 100055301@alumnos.uc3m.es
       Martínez Fernández, Raúl        email: 100054986@alumnos.uc3m.es
       García-Cuerva Velasco, Javier   email: 100055253@alumnos.uc3m.es
Índice

1.     Introducción ............................................................................................... 3
  1.1.       Descripción del Problema ...................................................................... 3
  1.2.       Objetivos ............................................................................................ 3
2.     Estado del Arte ........................................................................................... 4
  1.      Programas que aprendan a jugar como una persona: ................................... 4
  2.      Clústering para agrupar tipos de jugadores:............................................... 11
3.     Descripción completa de los datos y fuentes empleados .................................. 13
  3.1 Datos de entrada ..................................................................................... 13
  3.2 Datos adicionales ..................................................................................... 16
  3.3        Datos de Salida ................................................................................... 17
4. Descripción de la solución adoptada ................................................................ 18
  1.      Estudio de los datos ................................................................................ 18
  2. Procesado de datos .................................................................................... 18
  3. Selección de atributos................................................................................. 19
5. Resultados de la experimentación ................................................................... 20
6. Análisis de Dificultades, Riesgos y Aplicabilidad ................................................ 21
  6.1        Dificultades en la Obtención de la Solución ............................................. 21
  6.2        Riesgos Previstos ................................................................................ 21
  6.3        Análisis de Implantación ...................................................................... 21
7. Análisis de los resultados y conclusiones .......................................................... 22
8. Trabajos futuros (posibles mejoras) ................................................................ 23




                                                          2
1. Introducción

   1.1. Descripción del Problema

       El problema principal es la toma de decisiones en el juego del Póker, las
principales acciones que se pueden realizar en este juego son:
         o    No ir: Lo que supone que el jugador deja de jugar.
         o    Pasar: El jugador decide no subir ninguna apuesta.
         o 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 dependerá 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.
       Actualmente, la modalidad de Póker a la que más se juega es Texas Hold 'em
Sin Límite, 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 cartas que puede formar con las cartas que se van poniendo en la mesa
(denominadas cartas comunitarias).



   1.2. Objetivos

         El objetivo principal es obtener un jugador 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). 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.




                                           3
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, 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.



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 podemos ver los resultados en el
siguiente enlace.
                      http://www.cs.ualberta.ca/~pokert/2009/index.php
         En televisiones estadounidenses han hecho reportajes referentes a estos:
                       http://www.youtube.com/watch?v=m3fSc_gUNZk
      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:



                                            4
5
6
7
8
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 nosotros 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.



•         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


                                             9
utiliza una lectura más suave. Además, los métodos utilizados para crear la estrategia
han sido optimizados para jugar sin límite.

•     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.




                                         10
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:
                   http://jesusnubiola.com/poker/?p=92#more-92
      Sus resultados no son buenos. Y estadísticamente ya existen otras soluciones
bastantes buenas, pero describiremos 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, llegaron a la conclusión que para su
problema era mejor hacer uso del algoritmo EM en contra de usar el K-medias.
       Otra cosa 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.




                                          11
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).




                                          12
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 utiles 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 varias “pegas”: 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 pokerred 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 el se recogen los datos más importantes
que se deben recoger en una mesa de póker.




                                         13
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>
<startdate>2009-10-20 13:21:35</startdate>           Información de la mano que comienza

<currency>USD</currency>
<nickname>PokerHandScout.com</nickname>
<bets>N/A</bets>
<wins>N/A</wins>                                       Hora de inicio de la mano
<chipsin>N/A</chipsin>
<chipsout>N/A</chipsout>
<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)




                                        14
<round no="0">
<action no="1" player="fakinit" type="1" sum="$0.50"/>
<action no="2" player="Hummelx2" type="2" sum="$1"/>
</round>
                                                              Numero de ronda
<round no="1">
<cards type="Pocket" player="BowserJr">c10 s10</cards>
<cards type="Pocket" player="fakinit">dJ cJ</cards>
                                                             Cartas de las que
<action no="3" player="ChandlerMBing" type="0" sum="$ 0"/>   dispone un jugador
<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"/>
<action no="7" player="BowserJr" type="3" sum="$17"/>         Apuestas
</round>
<round no="2">
<cards type="Flop" player="">hJ cA s9</cards>
</round>
<round no="3">
<cards type="Turn" player="">d10</cards>                      Cartas comunes que se
</round>                                                      van poniendo sobre la
                                                              mesa
<round no="4">
<cards type="River" player="">cK</cards>
</round>




                                       15
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.




                                         16
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 que
decisión tomar en cuanto a Retirarse (Fold), Igualar (Call), Subir (Raise), Resubir (Re-
Raise).
       En cuanto a la mano se necesitará toda la información que hemos mencionado
en el apartado 3.1.




                                          17
4. Descripción de la solución adoptada

       A continuación pasaremos a explicar las distintas etapas que hemos seguido
para la realización de la práctica.



     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 los que parte de ellos nos iban a ser realmente utiles
para la práctica. Gracias a ello, 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). Debido a ello, de esas 100000 manos
iniciales, las que realmente nos iban a interesar eran muchas menos.


      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 de
manos útiles, por lo que el número total de manos a utilizar son 10710.



     2. Procesado de datos

       A continuación comenzamos con el procesado de los ficheros XML. Nuestra
intención era seleccionar una serie de atributos y clases para que fuesen introducidas
en WEKA y 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.




                                          18
3. Selección de atributos

       Antes de realizar la evaluación de los datos decidimos utilizar algunas técnicas
de selección de atributos como:


       ♦   CfsSubsetEval con método de búsqueda BestFirst (-D1, -N 5)
       ♦   ChiSquaredAttributeEval con Ranker como método de búsqueda


       Los resultados obtenidos fueron los siguientes:



      Método                 CfsSubsetEval               ChiSquaredAttributeEval
                                                               • ValorSubida1
                                                               • ValorSubida2
                                                               • ValorSubida3
                                                                • ValorCarta2
                              • ValorCarta1                     • ValorCarta1
                              • ValorCarta2                    • ValorSubida4
                             • ValorSubida1                    • ValorSubida5
                             • ValorSubida2                        • Suited
    Atributos
                             • ValorSubida3                  • JugadoresTotales
  seleccionados
                             • ValorSubida4                   • FichasJugador6
                             • ValorSubida5                  • PosicionJugador6
                                                              • FichasJugador5
                                                             • PosicionJugador5
                                                              • FichasJugador4
                                                             • PosicionJugador4




Y las clases a utilizar en WEKA serían:


           •   4 clases {0,1,2,3} -> Valores Continuos (Clasificación)
                  •   0: Apuesta de $0 -> 1048 patrones
                  •   1: Apuesta entre $0 y $2.5 -> 3866 patrones
                  •   2: Apuesta entre $2.5 y $5 -> 4193 patrones
                  •   3: Apuesta superior a $5 -> 1596 patrones




                                           19
5. Resultados de la experimentación

       En la primera etapa de la experimentación se evaluaron los datos con el
perceptrón multicapa y con el árbol de decisión J48. En la siguiente tabla se muestran
los resultados obtenidos:




Método               Capas                                             Error
                                   % aciertos        % fallos
                    ocultas                                          cuadrático

Perceptrón             1           43.6975 %        56.3025 %        98.2544 %
Multicapa
                       2           45.4093 %        54.5907 %        97.7409 %

                       3           46.0317 %        53.9683 %        96.7809 %

J48                    -           47.8369 %        52.1631 %        110.109 %




                                         20
6. Análisis de Dificultades, Riesgos y Aplicabilidad

   6.1     Dificultades en la Obtención de la Solución

        Describir brevemente en este apartado las dificultades inherentes al problema y
a las técnicas propuestas, analizando las posibles soluciones o mitigaciones.


       La principal dificultad a la hora de realizar el trabajo ha sido la obtención de los
datos preliminares. Debido a que estos datos suelen ser de carácter privado, o en su
defecto de carácter comercial, es muy complicado encontrarlos en la red. Para ello nos
hemos encargado de pedirlos a diversas páginas y particulares, esperando a su
contestación.


         Otra de las dificultades encontradas es la necesidad de tener un gran número
de datos, así como que estos sean de jugadores de un nivel medio-alto, labor bastante
difícil de realizar.
       La tercera dificultad aparecerá a la hora de eliminar datos innecesarios dentro
de los datos preliminares, los cuales pueden desvirtuar el resultado final de no
detectarlos con anterioridad. Esto se arreglará con el análisis con Weka, con el que
nos encargarnos de eliminar estos datos innecesarios.



   6.2     Riesgos Previstos

       La principal incertidumbre que se nos plantea viene determinada por la
obtención de los datos. Esto es debido a que, aparte de necesitar una buena cantidad
de manos para poder realizar la práctica con unos buenos resultados, sería interesante
que estas manos fuesen de buena calidad para que el aprendizaje fuese correcto.


       Otro de los riegos, como en cualquier proyecto de estas características, es que
a la hora de obtener los resultados, estos no sean todo lo buenos que se esperaba, y
nos obligue a replantearnos el procedimiento.



   6.3     Análisis de Implantación

      Para poder llevar a cabo este proyecto necesitaremos un ordenador de nivel
medio para poder llevarlo a cabo. Las especificaciones recomendadas serían:
       Procesador: Intel Pentium4 2,4 Ghz
       Disco duro: 200 Gb
       Memoría RAM: 2 Gb
     El principal problema que se nos planteaba era que Weka tenía un espacio de
memoria limitado, pero se puede ampliar sin problemas.


                                            21
7. Análisis de los resultados y conclusiones

       Como se puede apreciar el porcentaje de aciertos es medio y, por tanto,
mejorable. En la presentación ya comentamos los problemas para obtener los datos y
esto ha hecho que para nosotros la tarea más costosa sea la extracción de los datos
para su posterior manejo.


       Esperamos aumentar la tasa de aciertos hasta un 60 %, mediante la opción
Experimenter de Weka trataremos de encontrar el mejor algoritmo con la mejor
configuración para que el error cuadrático se reduzca drásticamente.




                                        22
8. Trabajos futuros (posibles mejoras)

        De cara a la siguiente entrega, seguiremos probando distintos evaluadores de
atributos y    distintos clasificadores para intentar maximizar la bonanza de los
resultados. Probablemente también utilicemos en el futuro validación cruzada, así
como baterías de pruebas con Experimenter. Entre otras mejoras se incluyen la
posibilidad de añadir nuevos atributos, como por ejemplo “iguales” que indique si las
dos cartas que posee el jugador tienen el mismo valor, es decir, si son dos cincos
estaría a uno y si fuesen distintas valdría cero.


       Queda también en interrogante la posibilidad de que nos ofrezcan más datos,
para así intentar tener mejores resultados.




                                         23

Mais conteúdo relacionado

Semelhante a Memoria intermedia

Historia y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harryHistoria y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harrytefadianis
 
Explicado taller de game design - focalizando en mechanic design
Explicado   taller de game design - focalizando en mechanic designExplicado   taller de game design - focalizando en mechanic design
Explicado taller de game design - focalizando en mechanic designGuillermo Averbuj
 
Pediccion victorias futbol_local_argentina
Pediccion victorias futbol_local_argentinaPediccion victorias futbol_local_argentina
Pediccion victorias futbol_local_argentinaPablo Tempone
 
Revista unidad iii teoria de los juegos
Revista unidad iii teoria de los juegosRevista unidad iii teoria de los juegos
Revista unidad iii teoria de los juegosYackelin Angulo
 
Alejandro tfm
Alejandro tfmAlejandro tfm
Alejandro tfmmpaljacar
 
Investigación de operaciones III
Investigación de operaciones IIIInvestigación de operaciones III
Investigación de operaciones IIIMaestros Online
 
Juegos de Producción y Estadística para la Promoción de las Metodologías Ágiles
Juegos de Producción y Estadística para laPromoción de las Metodologías ÁgilesJuegos de Producción y Estadística para laPromoción de las Metodologías Ágiles
Juegos de Producción y Estadística para la Promoción de las Metodologías ÁgilesLuiz C. Parzianello
 
Diseño y Análisis Agente autónomo videojuego Super Mario Bros
Diseño y Análisis Agente autónomo videojuego Super Mario BrosDiseño y Análisis Agente autónomo videojuego Super Mario Bros
Diseño y Análisis Agente autónomo videojuego Super Mario Brosrosahb
 
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...NORKY'S
 
Focalizando en Mechanic Design para prototipos.pdf
Focalizando en Mechanic Design para prototipos.pdfFocalizando en Mechanic Design para prototipos.pdf
Focalizando en Mechanic Design para prototipos.pdfLucreciaFinke
 
Guía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdfGuía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdfRoySaavedraJimenez2
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Restahepavien
 
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3  desarrollo de habilidades de pensamiento - trabajo grupalPeriodo 3  desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalAndrsSinisterra1
 
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3  desarrollo de habilidades de pensamiento - trabajo grupalPeriodo 3  desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupalmarianasanchez183
 

Semelhante a Memoria intermedia (20)

Cuarto programacion1
Cuarto programacion1Cuarto programacion1
Cuarto programacion1
 
Historia y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harryHistoria y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harry
 
Explicado taller de game design - focalizando en mechanic design
Explicado   taller de game design - focalizando en mechanic designExplicado   taller de game design - focalizando en mechanic design
Explicado taller de game design - focalizando en mechanic design
 
M2 programacion grafica_2ed
M2 programacion grafica_2edM2 programacion grafica_2ed
M2 programacion grafica_2ed
 
Pediccion victorias futbol_local_argentina
Pediccion victorias futbol_local_argentinaPediccion victorias futbol_local_argentina
Pediccion victorias futbol_local_argentina
 
Revista unidad iii teoria de los juegos
Revista unidad iii teoria de los juegosRevista unidad iii teoria de los juegos
Revista unidad iii teoria de los juegos
 
Alejandro tfm
Alejandro tfmAlejandro tfm
Alejandro tfm
 
Investigación de operaciones III
Investigación de operaciones IIIInvestigación de operaciones III
Investigación de operaciones III
 
Juegos de Producción y Estadística para la Promoción de las Metodologías Ágiles
Juegos de Producción y Estadística para laPromoción de las Metodologías ÁgilesJuegos de Producción y Estadística para laPromoción de las Metodologías Ágiles
Juegos de Producción y Estadística para la Promoción de las Metodologías Ágiles
 
Diseño y Análisis Agente autónomo videojuego Super Mario Bros
Diseño y Análisis Agente autónomo videojuego Super Mario BrosDiseño y Análisis Agente autónomo videojuego Super Mario Bros
Diseño y Análisis Agente autónomo videojuego Super Mario Bros
 
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...
19779072 tesis-analisis-diseno-e-implementacion-de-un-administrador-de-torneo...
 
Focalizando en Mechanic Design para prototipos.pdf
Focalizando en Mechanic Design para prototipos.pdfFocalizando en Mechanic Design para prototipos.pdf
Focalizando en Mechanic Design para prototipos.pdf
 
Guía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdfGuía #8 - Ciclos Iterativos Anidados.pdf
Guía #8 - Ciclos Iterativos Anidados.pdf
 
Ensayo Compilador Suma y Resta
Ensayo Compilador Suma y RestaEnsayo Compilador Suma y Resta
Ensayo Compilador Suma y Resta
 
Cabezagrafias
CabezagrafiasCabezagrafias
Cabezagrafias
 
Casos de estudio para diagramas de clases
Casos de estudio para diagramas de clasesCasos de estudio para diagramas de clases
Casos de estudio para diagramas de clases
 
Teoria del juego
Teoria del juegoTeoria del juego
Teoria del juego
 
Cabezagrafias
CabezagrafiasCabezagrafias
Cabezagrafias
 
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3  desarrollo de habilidades de pensamiento - trabajo grupalPeriodo 3  desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
 
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3  desarrollo de habilidades de pensamiento - trabajo grupalPeriodo 3  desarrollo de habilidades de pensamiento - trabajo grupal
Periodo 3 desarrollo de habilidades de pensamiento - trabajo grupal
 

Memoria intermedia

  • 1. Práctica de Inteligencia Artificial en las Organizaciones IA en el Póker Online Año Académico: 2009-2010 Convocatoria: Febrero Grupo de prácticas: Grupo 4 Alumnos: Díaz Ponce, Antonio email: 100055301@alumnos.uc3m.es Martínez Fernández, Raúl email: 100054986@alumnos.uc3m.es García-Cuerva Velasco, Javier email: 100055253@alumnos.uc3m.es
  • 2. Índice 1. Introducción ............................................................................................... 3 1.1. Descripción del Problema ...................................................................... 3 1.2. Objetivos ............................................................................................ 3 2. Estado del Arte ........................................................................................... 4 1. Programas que aprendan a jugar como una persona: ................................... 4 2. Clústering para agrupar tipos de jugadores:............................................... 11 3. Descripción completa de los datos y fuentes empleados .................................. 13 3.1 Datos de entrada ..................................................................................... 13 3.2 Datos adicionales ..................................................................................... 16 3.3 Datos de Salida ................................................................................... 17 4. Descripción de la solución adoptada ................................................................ 18 1. Estudio de los datos ................................................................................ 18 2. Procesado de datos .................................................................................... 18 3. Selección de atributos................................................................................. 19 5. Resultados de la experimentación ................................................................... 20 6. Análisis de Dificultades, Riesgos y Aplicabilidad ................................................ 21 6.1 Dificultades en la Obtención de la Solución ............................................. 21 6.2 Riesgos Previstos ................................................................................ 21 6.3 Análisis de Implantación ...................................................................... 21 7. Análisis de los resultados y conclusiones .......................................................... 22 8. Trabajos futuros (posibles mejoras) ................................................................ 23 2
  • 3. 1. Introducción 1.1. Descripción del Problema El problema principal es la toma de decisiones en el juego del Póker, las principales acciones que se pueden realizar en este juego son: o No ir: Lo que supone que el jugador deja de jugar. o Pasar: El jugador decide no subir ninguna apuesta. o 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 dependerá 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. Actualmente, la modalidad de Póker a la que más se juega es Texas Hold 'em Sin Límite, 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 cartas que puede formar con las cartas que se van poniendo en la mesa (denominadas cartas comunitarias). 1.2. Objetivos El objetivo principal es obtener un jugador 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). 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. 3
  • 4. 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, 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. 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 podemos ver los resultados en el siguiente enlace. http://www.cs.ualberta.ca/~pokert/2009/index.php En televisiones estadounidenses han hecho reportajes referentes a estos: http://www.youtube.com/watch?v=m3fSc_gUNZk 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: 4
  • 5. 5
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. 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 nosotros 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. • 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 9
  • 10. utiliza una lectura más suave. Además, los métodos utilizados para crear la estrategia han sido optimizados para jugar sin límite. • 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. 10
  • 11. 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: http://jesusnubiola.com/poker/?p=92#more-92 Sus resultados no son buenos. Y estadísticamente ya existen otras soluciones bastantes buenas, pero describiremos 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, llegaron a la conclusión que para su problema era mejor hacer uso del algoritmo EM en contra de usar el K-medias. Otra cosa 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. 11
  • 12. 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). 12
  • 13. 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 utiles 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 varias “pegas”: 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 pokerred 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 el se recogen los datos más importantes que se deben recoger en una mesa de póker. 13
  • 14. 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> <startdate>2009-10-20 13:21:35</startdate> Información de la mano que comienza <currency>USD</currency> <nickname>PokerHandScout.com</nickname> <bets>N/A</bets> <wins>N/A</wins> Hora de inicio de la mano <chipsin>N/A</chipsin> <chipsout>N/A</chipsout> <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) 14
  • 15. <round no="0"> <action no="1" player="fakinit" type="1" sum="$0.50"/> <action no="2" player="Hummelx2" type="2" sum="$1"/> </round> Numero de ronda <round no="1"> <cards type="Pocket" player="BowserJr">c10 s10</cards> <cards type="Pocket" player="fakinit">dJ cJ</cards> Cartas de las que <action no="3" player="ChandlerMBing" type="0" sum="$ 0"/> dispone un jugador <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"/> <action no="7" player="BowserJr" type="3" sum="$17"/> Apuestas </round> <round no="2"> <cards type="Flop" player="">hJ cA s9</cards> </round> <round no="3"> <cards type="Turn" player="">d10</cards> Cartas comunes que se </round> van poniendo sobre la mesa <round no="4"> <cards type="River" player="">cK</cards> </round> 15
  • 16. 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. 16
  • 17. 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 que decisión tomar en cuanto a Retirarse (Fold), Igualar (Call), Subir (Raise), Resubir (Re- Raise). En cuanto a la mano se necesitará toda la información que hemos mencionado en el apartado 3.1. 17
  • 18. 4. Descripción de la solución adoptada A continuación pasaremos a explicar las distintas etapas que hemos seguido para la realización de la práctica. 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 los que parte de ellos nos iban a ser realmente utiles para la práctica. Gracias a ello, 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). Debido a ello, de esas 100000 manos iniciales, las que realmente nos iban a interesar eran muchas menos. 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 de manos útiles, por lo que el número total de manos a utilizar son 10710. 2. Procesado de datos A continuación comenzamos con el procesado de los ficheros XML. Nuestra intención era seleccionar una serie de atributos y clases para que fuesen introducidas en WEKA y 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. 18
  • 19. 3. Selección de atributos Antes de realizar la evaluación de los datos decidimos utilizar algunas técnicas de selección de atributos como: ♦ CfsSubsetEval con método de búsqueda BestFirst (-D1, -N 5) ♦ ChiSquaredAttributeEval con Ranker como método de búsqueda Los resultados obtenidos fueron los siguientes: Método CfsSubsetEval ChiSquaredAttributeEval • ValorSubida1 • ValorSubida2 • ValorSubida3 • ValorCarta2 • ValorCarta1 • ValorCarta1 • ValorCarta2 • ValorSubida4 • ValorSubida1 • ValorSubida5 • ValorSubida2 • Suited Atributos • ValorSubida3 • JugadoresTotales seleccionados • ValorSubida4 • FichasJugador6 • ValorSubida5 • PosicionJugador6 • FichasJugador5 • PosicionJugador5 • FichasJugador4 • PosicionJugador4 Y las clases a utilizar en WEKA serían: • 4 clases {0,1,2,3} -> Valores Continuos (Clasificación) • 0: Apuesta de $0 -> 1048 patrones • 1: Apuesta entre $0 y $2.5 -> 3866 patrones • 2: Apuesta entre $2.5 y $5 -> 4193 patrones • 3: Apuesta superior a $5 -> 1596 patrones 19
  • 20. 5. Resultados de la experimentación En la primera etapa de la experimentación se evaluaron los datos con el perceptrón multicapa y con el árbol de decisión J48. En la siguiente tabla se muestran los resultados obtenidos: Método Capas Error % aciertos % fallos ocultas cuadrático Perceptrón 1 43.6975 % 56.3025 % 98.2544 % Multicapa 2 45.4093 % 54.5907 % 97.7409 % 3 46.0317 % 53.9683 % 96.7809 % J48 - 47.8369 % 52.1631 % 110.109 % 20
  • 21. 6. Análisis de Dificultades, Riesgos y Aplicabilidad 6.1 Dificultades en la Obtención de la Solución Describir brevemente en este apartado las dificultades inherentes al problema y a las técnicas propuestas, analizando las posibles soluciones o mitigaciones. La principal dificultad a la hora de realizar el trabajo ha sido la obtención de los datos preliminares. Debido a que estos datos suelen ser de carácter privado, o en su defecto de carácter comercial, es muy complicado encontrarlos en la red. Para ello nos hemos encargado de pedirlos a diversas páginas y particulares, esperando a su contestación. Otra de las dificultades encontradas es la necesidad de tener un gran número de datos, así como que estos sean de jugadores de un nivel medio-alto, labor bastante difícil de realizar. La tercera dificultad aparecerá a la hora de eliminar datos innecesarios dentro de los datos preliminares, los cuales pueden desvirtuar el resultado final de no detectarlos con anterioridad. Esto se arreglará con el análisis con Weka, con el que nos encargarnos de eliminar estos datos innecesarios. 6.2 Riesgos Previstos La principal incertidumbre que se nos plantea viene determinada por la obtención de los datos. Esto es debido a que, aparte de necesitar una buena cantidad de manos para poder realizar la práctica con unos buenos resultados, sería interesante que estas manos fuesen de buena calidad para que el aprendizaje fuese correcto. Otro de los riegos, como en cualquier proyecto de estas características, es que a la hora de obtener los resultados, estos no sean todo lo buenos que se esperaba, y nos obligue a replantearnos el procedimiento. 6.3 Análisis de Implantación Para poder llevar a cabo este proyecto necesitaremos un ordenador de nivel medio para poder llevarlo a cabo. Las especificaciones recomendadas serían: Procesador: Intel Pentium4 2,4 Ghz Disco duro: 200 Gb Memoría RAM: 2 Gb El principal problema que se nos planteaba era que Weka tenía un espacio de memoria limitado, pero se puede ampliar sin problemas. 21
  • 22. 7. Análisis de los resultados y conclusiones Como se puede apreciar el porcentaje de aciertos es medio y, por tanto, mejorable. En la presentación ya comentamos los problemas para obtener los datos y esto ha hecho que para nosotros la tarea más costosa sea la extracción de los datos para su posterior manejo. Esperamos aumentar la tasa de aciertos hasta un 60 %, mediante la opción Experimenter de Weka trataremos de encontrar el mejor algoritmo con la mejor configuración para que el error cuadrático se reduzca drásticamente. 22
  • 23. 8. Trabajos futuros (posibles mejoras) De cara a la siguiente entrega, seguiremos probando distintos evaluadores de atributos y distintos clasificadores para intentar maximizar la bonanza de los resultados. Probablemente también utilicemos en el futuro validación cruzada, así como baterías de pruebas con Experimenter. Entre otras mejoras se incluyen la posibilidad de añadir nuevos atributos, como por ejemplo “iguales” que indique si las dos cartas que posee el jugador tienen el mismo valor, es decir, si son dos cincos estaría a uno y si fuesen distintas valdría cero. Queda también en interrogante la posibilidad de que nos ofrezcan más datos, para así intentar tener mejores resultados. 23