+ All Categories
Home > Documents > Aníbal León León Máster en Ingeniería Informática...

Aníbal León León Máster en Ingeniería Informática...

Date post: 10-Apr-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
27
Aníbal León León Máster en Ingeniería Informática Desarrollo de Sistemas Inteligentes
Transcript
Page 1: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León

Máster en Ingeniería Informática

Desarrollo de Sistemas Inteligentes

Page 2: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 2

CONTENIDO PÁGINA/S

1. Descripción del problema a tratar..……………………………………………………..3

2. Alcance y límites…….…………………………………..……………………………………….4

3. Minería de datos…………………………………………………………………………………5

4. Estudio de viabilidad…………………...…………………………………………………6-12

5. Entrevistas con el experto..…………………………………………………………..13-15

6. Búsqueda de patrones de comportamiento………………………………….16-17

7. Prototipo..………………………………………………………………………………………...18

8. Implementación del prototipo…………………………………………………………..19

9. Ejemplo de funcionamiento..…………………………………………………………….20

10. Verificación del sistema………………………………………………………………….21

10. Código fuente…………………………………………………………………………….22-26

11. Objetivos futuros……………………………………………………………………………27

Page 3: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 3

Descripción del problema a tratar

Se desea realizar un sistema experto de ayuda a la decisión que guíe al usuario a la

hora de realizar apuestas deportivas relacionadas con la liga Estadounidense de

baloncesto NBA (National Basketball Association). Este sistema se denominará NBiA.

Para ello el sistema hará pronósticos basándose en razonamientos inferidos de los

datos a través del proceso KDD (Knownledge Discovery from Databases), cuyas fases se

verán modificadas por razonamientos propios de un experto en apuestas de dicha liga.

Mientras que el experto tendrá una visión profunda de la liga basada en su experiencia

adquirida que deberemos plasmar lo más fielmente en nuestro sistema, mediante

minería de datos accederemos a gran cantidad de datos que nos permiten relacionar

resultados anteriores del equipo y los jugadores con el entorno que rodeaba a dichos

resultados, formado por todo tipo de variables influyentes positiva o negativamente

en el desarrollo de los partidos.

Por tratarse de un juego en el que tiene mucha relevancia el azar, nunca

conseguiremos un sistema que consiga acertar siempre quién ganará, por lo tanto el

objetivo será crear un sistema que acierte el mayor número posible de veces y sirva

como complemento o ayuda al usuario que desee apostar.

Una vez se consiga un prototipo funcional, el objetivo será el de mejorar la fiabilidad

del sistema analizando la concordancia entre resultados esperados y resultados

obtenidos. El proceso de mejora tendrá el fin de acercar lo más posible a 100% los

resultados obtenidos en cuanto a porcentaje de aciertos. Para conseguir esto

podremos afinar el sistema tanto con nuevas reglas obtenidas del experto como

teniendo en cuenta nuevas variables que puedan influir en los resultados a la hora de

realizar la minería de datos, creando un sistema con la mayor completitud posible.

Page 4: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 4

Alcance y límites

El objetivo del sistema es que trate los resultados de cualquier partido que se dé entre

los 30 equipos de la NBA a partir de la jornada 10 de la temporada regular del curso

actual (2012-2013), donde 10 será el número de jornadas que dejaremos para que el

sistema “aprenda” de resultados anteriores.

El sistema tendrá los siguientes parámetros de entrada y de salida:

-Entradas: Patrones inferidos a través del proceso KDD y preguntas que el usuario del

sistema deberá responder referentes al partido que desea pronosticar.

-Salidas: Para un partido A vs B, el objetivo es que el sistema obtenga la similitud con el

patrón de comportamiento que se da cuando el equipo A gana y cuando el equipo A

pierde así como el patrón de comportamiento cuando el equipo B gana y cuando el

equipo B pierde y calcule el porcentaje de concordancia con cada uno de ellos. Una vez

hecho esto se normalizarán los resultados respecto a los casos favorables para el

equipo A y los favorables para el equipo B para obtener un porcentaje de probabilidad

de victoria para cada equipo.

Respecto al funcionamiento del sistema:

El proceso KDD obtendrá todos los datos susceptibles de ser analizados de la

página web stats.nba.com, todos ellos de libre acceso, buscando patrones de

comportamiento en la consecución de las victorias y las derrotas del equipo.

El experto tendrá como objetivo proporcionarnos información menos tangible,

como es el peso específico de todas las estadísticas y datos que tenemos en el

resultado de un partido.

Hay que recordar que los resultados obtenidos por el sistema son parte de un proceso

de inferencia y no tienen por qué coincidir con los resultados reales, por lo tanto debe

tomarse como un sistema de referencia o ayuda bajo la responsabilidad del usuario.

Page 5: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 5

Minería de datos

La minería de datos es la etapa de análisis de “Knowledge Discovery in Databases” o

KDD en el campo de las ciencias de la computación, que pretende descubrir patrones

en grandes volúmenes de conjuntos de datos. Utiliza los métodos de la inteligencia

artificial, aprendizaje automático, estadística y sistemas de bases de datos.

A través de los datos obtenidos en la página stats.nba.com y de libre acceso, y por

supuesto ayudándonos de las reglas obtenidas del experto, el objetivo es crear dos

grupos bien diferenciados, correspondientes a “ganar” y “perder”, para más tarde inferir si

la situación del equipo respecto al partido que se desea pronosticar se acerca más al

patrón de comportamiento que se da cuando el equipo gana o a cuando el equipo

pierde.

Cluster “ganar”. Deberemos obtener aquellas similitudes que se hayan producido

cuando el equipo ha ganado y también similitudes cuando el oponente ha perdido.

Para definirlo:

Estudiaremos patrones de comportamiento del equipo en las últimas victorias.

Estudiaremos patrones de comportamiento del oponente en sus últimas derrotas.

Cluster “perder”. Deberemos obtener aquellas similitudes que se hayan producido

cuando el equipo ha perdido y también similitudes cuando el oponente ha ganado.

Para definirlo:

Estudiaremos patrones de comportamiento del equipo en las últimas derrotas.

Estudiaremos patrones de comportamiento del oponente en las últimas victorias.

Una vez tengamos bien determinados los dos patrones, procederemos a obtener unos

resultados esperados tanto del equipo como del oponente, los cuales compararemos

con los 4 grupos o clusters (tendremos dos cluster ganar y dos cluster perder, 2 por

equipo) para ver a cuál de ellos se acercan más los resultados esperados. Estos

resultados “esperados” serán calculados respecto a la progresión del equipo en los

últimos 3 partidos.

Una vez introducido el concepto de minería de datos y justificada su aplicación en el

proyecto NBiA, a continuación se realiza el estudio de la viabilidad de este proyecto.

Page 6: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 6

Estudio de viabilidad

Mediante el plan de viabilidad realizado a continuación, pretendemos asegurarnos e intentar demostrar que el sistema NBiA es factible. De esta forma podremos justificar una posible financiación del proyecto.

Se ha elegido el “test de Slagel” como metodología a aplicar en el desarrollo del estudio. Se realizarán las siguientes etapas para determinar si el sistema es viable:

Definición de las características.

Asignación de pesos.

Evaluación de cada aplicación candidata.

En cuanto a la definición de características, el test que se va a realizar consta de las siguientes dimensiones:

Plausibilidad. Determina si se cuenta con los medios necesarios desde el punto de vista de la ingeniería del conocimiento. (Existencia de expertos, dificultad, estructuración de la tarea…)

Justificación. Analiza si está justificado el desarrollo del sistema. Hay que tener en cuenta conceptos como la necesidad de la experiencia, la inversión necesaria o la existencia de soluciones alternativas.

Adecuación. Se determina si el sistema es abordable desde el punto de vista de la ingeniería del conocimiento. Para ello se tienen en cuenta la naturaleza, la complejidad y el tipo de tarea.

Éxito. Posibilidades a priori de que el sistema tenga éxito.

Tarea

Deseable

Dimensión (P.E. valor práctico) Expertos

Esencial(valor>7)

Directivos/Usuarios

Page 7: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 7

Evaluación de la aplicación: PLAUSIBILIDAD

Categoría Identificador Peso Valor Característica Tipo

Expertos P1 10 9

Existen expertos. Hay suficientes

expertos en este ámbito, el único

problema es la accesibilidad a ellos.

E

Expertos P2 10 8

El experto asignado es genuino.

La mayoría de expertos en NBA son

genuinos.

E

Expertos P3 8 8

El experto es cooperativo. Tiene

una buena capacidad de

cooperación.

D

Expertos P4 7 7

El experto es capaz de articular

sus métodos pero no categoriza.

A pesar de no ser un tema fácil de

explicar, el experto no categoriza

demasiado.

D

Tareas P5 10 10

Existen suficientes casos de

prueba; normales, típicos,

ejemplares, correosos, etc. Los

casos de prueba en este sentido son

muy diversos.

E

Tareas P6 10 9

La tarea está bien estructurada y

se entiende. No es del todo

estructurada, pero si lo deseable.

D

Tareas P7 10 8

Sólo requiere habilidad

cognoscitiva. El sistema requiere

razonamiento experto, no se trata

de una tarea trivial.

D

Tareas P8 9 8

No precisan resultados

verdaderamente comprometidos

con el proyecto. No son precisos

resultados comprometidos.

D

Tareas P9 9 9 La tarea no requiere sentido

común. Es una tarea compleja. D

Page 8: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 8

Directivos/Ususarios P10 7 9

Los directivos están

verdaderamente comprometidos

con el proyecto. Los directivos ven

la utilidad del proyecto y lo apoyan

firmemente.

D

Evaluación de la aplicación: JUSTIFICACIÓN

Categoría Identificador Peso Valor Característica Tipo

Expertos J1 10 7

El experto no está disponible. La

disponibilidad del experto no es la que

convendría pero si lo suficiente.

E

Expertos J2 10 8 Hay escasez de experiencia humana.

El conocimiento en este tema es escaso. D

Tareas J3 8 9

Existe necesidad de experiencia

humana en muchos lugares. En todo

el mundo convendría utilizar un sistema

de este tipo.

D

Tareas J4 10 7

Necesidad de experiencia en

entornos hostiles, penosos y/o poco

gratificantes. El sistema podría

utilizarse en cualquier momento.

E

Tareas J5 8 9

No existen soluciones alternativas

admisibles. Actualmente no existen

sistemas de este tipo abiertos al

público.

E

Directivos/Ususarios J6 7 9

Se espera una alta tasa de

recuperación de la inversión. El

público objetivo podría ser

suficientemente grande.

D

Directivos/Ususarios J7 8 7

Resuelve una tarea útil y necesaria.

Sobre todo goza de utilidad para el

grueso de gente que apuesta en este

tipo de partidos.

E

Page 9: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 9

Evaluación de la aplicación: ADECUACIÓN

Categoría Identificador Peso Valor Característica Tipo

Expertos A1 5 6

La experiencia del experto está poco

organizada. Su experiencia no esta del

todo estructurada.

D

Tareas A2 6 7 Tiene valor práctico. Se trata de un

sistema práctico y útil. D

Tareas A3 7 7 Es más táctica que estratégica. Es una

tarea eminentemente práctica. D

Tareas A4 7 9

Sirve a necesidades a largo plazo. El

sistema puede utilizarse en cualquier

temporada venidera de la NBA.

E

Tareas A5 5 10

La tarea, que no es demasiado fácil,

pero es de conocimiento intensivo,

tanto propio del dominio, como de

manipulación de la información. La

tarea requiere de un conocimiento

intensivo así como de manipulación de la

información estadística de la liga.

D

Tareas A6 6 9

Es de tamaño manejable, y/o es posible

un enfoque gradual y/o, una

descomposición en subtareas. El

conjunto de datos a utilizar se encuentra

muy estructurado en la página web, y

permite una división factible en subtareas.

D

Expertos A7 7 7

La transferencia de experiencia entre

humanos es factible. La transferencia es

algo costosa pero tampoco se torna

compleja.

E

Tareas A8 6 7

Estaba identificado como un problema

en el área y los efectos de la

introducción de un SE pueden

planificarse. Los efectos no son

planificables pero sí que es un problema

extendido en el área.

D

Page 10: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 10

Tareas A9 9 10

No requiere respuestas en tiempo real

inmediato. El sistema no tiene ni requiere

capacidad de decisión en tiempo real.

E

Tareas A10 9 10

La tarea no requiere investigación

básica o conlleva poca generación y

entendimiento del lenguaje natural. La

investigación básica es nula y el

entendimiento del lenguaje natural no se

necesita en el sistema.

E

Tareas A11 5 5

El experto usa básicamente

razonamiento simbólico que implica

valores subjetivos. El razonamiento es

algo simbólico.

D

Tareas A12 5 5

Es esencialmente de tipo heurístico. El

sistema se basa sobre todo en estadísticas

precedentes.

D

Evaluación de la aplicación: ÉXITO

Categoría Identificador Peso Valor Característica Tipo

Expertos E1 8 6

No se sienten amenazados por el proyecto, pueden sentirse

intelectualmente unidos a él. El sistema no amenaza su trabajo, solo apoya sus

pronósticos.

D

Expertos E2 6 7 Tienen un brillante historial. Los expertos

de este tipo gozan de buenos resultados gracias a su dilatada experiencia.

D

Expertos E3 5 5 Acuerdos constituyen buena solución. No

siempre se da esta premisa. D

Expertos E4 5 7 La única justificación para dar un paso en

la solución es la calidad. Se buscan las soluciones mejor apoyadas.

D

Expertos E5 6 9 No hay un plazo de finalización escrito, ni

proyectos dependientes. No existen dependencias ni hay plazos previstos.

D

Page 11: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 11

Tareas E6 7 10 No está influenciada políticamente. La

política no influye en el sistema ni los resultados.

E

Tareas E7 8 7 Existen SSEE similares. Si los hay no son

conocidos a nivel público. D

Tareas E8 8 10

Hay cambios mínimos en los procedimientos habituales. Los

procedimientos que usa el sistema son invariables.

D

Tareas E9 5 8 Las soluciones son explicables. La

explicación de las mismas vendrá dada por el conocimiento del usuario.

D

Tareas E10 7 8 La tarea es de I+D o de carácter práctico,

no ambas simultáneas. Es una tarea de carácter eminentemente práctico.

E

Directivos/Ususarios E11 6 9 Están mentalizados y son realistas con el

alcance y las limitaciones. Los objetivos son claros y concisos.

D

Directivos/Ususarios E12 7 10 No rechazan esta tecnología. No hay

ningún tipo de rechazo por parte de directivos ni usuarios.

E

Directivos/Ususarios E13 6 8

El sistema interactúa inteligente y amistosamente con el usuario. La

interacción es suficientemente amigable y las peticiones y soluciones de cara al usuario

claras.

D

Directivos/Ususarios E14 9 6

El sistema es capaz de explicar su razonamiento. La explicación del proceso de razonamiento no es un objetivo primario en el

sistema.

D

Directivos/Ususarios E15 8 9 La inserción se efectúa sin traumas. No

hay objeciones por parte de nadie. D

Directivos/Ususarios E16 6 9 Están comprometidos incluso después de

la implantación. El compromiso con el sistema es el adecuado.

D

Directivos/Ususarios E17 8 8 Adecuada transferencia tecnológica. La

transferencia tecnológica es la ideal. E

Page 12: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 12

Con los datos de las tablas anteriores se procede a evaluar la viabilidad del sistema:

Viabilidad Plausibilidad

((9//7)*(8//7)*(10//7))*

((10*9)*(10*8)*(8*8)*(7*7)*(10*10)*(10*9)*(10*8)*(9*8)*(9*9)*(7*9))1/10

=75,44(Máximo 89,16)

Viabilidad Justificación

((7//7)(7//7)(9//7)(7//7))*

((10*7)*(10*8)*(8*9)*(10*7)*(8*9)*(7*9)*(8*7))1/7

=68,51(Máximo 86,21)

Viabilidad Adecuación

((9//7)(7//7)(10//7)(10//7))*

((5*6)*(6*7)*(7*7)*(7*9)*(5*10)*(6*9)*(7*7)*(6*7)*(9*10)*(9*10)*(5*5)*(5*5))1/12

=46,76(Máximo 62,78)

Viabilidad Éxito

((10//7)(8//7)(10//7)(8//7))*

((8*6)*(6*7)*(5*5)*(5*7)*(6*9)*(7*10)*(8*7)*(8*10)*(5*8)*(7*8)*(6*9)*(7*10)*(6*8)*(9*6)*(8*9)*(6*9)*(8*8))1/17=52,27(Máximo 66,52)

El valor general de la aplicación es igual a (75,44+68,51+46,76+52,27)/4=60,74 puntos

Normalizamos el valor anterior para ver el porcentaje real de viabilidad:

60,74/((89,16+86,21+62,78+66,52)/4)=79,75% de viabilidad del proyecto.

Page 13: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 13

Entrevistas con el experto

Entrevista 1

Documento de adquisición de conocimiento Número: 1 Página: 1

Fecha: 18-03-2013

Hora: 16:00-17:00

Lugar: Vivienda del experto

Asistentes: Aníbal León León (I.C.)

Jose Ángel Tercero(Experto)

Situación del análisis respecto al modelo general

Esta es la primera entrevista que se efectúa con el experto. Supondrá por tanto un

primer contacto con el entorno de la NBA y los términos relacionados con los partidos

que se efectúan entre los equipos de dicha liga.

Conocimiento anterior a la entrevista

El conocimiento anterior a la entrevista no es más que el básico del que dispone el

ingeniero del conocimiento. Se presuponen los siguientes aspectos:

-La liga está formada por 30 equipos.

-Cada equipo juega un total de 82 partidos cada temporada.

-Los jugadores en cancha en cualquier momento del partido son siempre 5.

-Los partidos duran 48 minutos divididos en cuatro cuartos.

-Se pueden hacer tantos cambios de jugadores como se desee pero sólo en tiempos

muertos o con el partido parado.

-Cada entrenador dispone de 7 tiempos muertos.

-Si un jugador efectúa 6 faltas es expulsado del partido.

-Durante un partido se producen canastas de 1, 2 y 3 puntos según la distancia desde la

que se produzcan y las circunstancias de juego.

-Existen otros muchos aspectos básicos que se contabilizan como son: rebotes,

asistencias, pérdidas, robos, faltas, tapones realizados y tapones recibidos.

-Al final del partido sólo cuenta el número de puntos totales. El equipo superior en

puntos gana.

-Si hay empate a puntos se lleva a cabo una prórroga de 5 minutos. Esto puede ocurrir

sucesivas veces.

Page 14: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 14

Documento de adquisición de conocimiento Número: 1 Página: 2

Lista de elementos (Glosario)

1. Jugador

2. Equipo

3. Partido

4. Liga

5. Punto

6. Rebote

7. Tapón

8. Robo

9. Pérdida

10. Falta

11. Tiempo muerto

12. Cuarto

Relaciones entre elementos

2 es un conjunto de 1

3 está formado por dos 2

4 está formado por treinta 2

Objetivos de la entrevista

El objetivo principal de la entrevista es preguntar al experto qué circunstancias del

entorno no puramente estadístico pueden influir en el resultado final de un partido. Esta

será por tanto una entrevista de toma de contacto en la que primará la cordialidad con

el experto y la inclusión del mismo en el proyecto haciéndole formar parte importante

del mismo.

Fuentes de conocimiento

Nos centraremos en el experto como fuente de conocimiento principal para realizar un

análisis del entorno de un partido de baloncesto, esto es debido a que la parte

estadística será reflejada por el proceso KDD realizado paralelamente como parte del

sistema mixto.

Modo

La entrevista será parcialmente estructurada pues el conocimiento del I.C. está muy

disperso y es mejor que dejemos hablar al experto dentro de un guión poco

estructurado que cambiará según las circunstancias de la conversación procurando

sobre todo mantenerla en los límites que nos interesan.

Page 15: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 15

Documento de adquisición de conocimiento Número: 1 Página: 3

Planteamiento de la sesión

A continuación veremos las preguntas que se realizarán al experto. Como se puede

apreciar de momento haremos tan solo una pregunta muy general y mantendremos al

experto hablando del tema en los límites que nos interesen mediante preguntas

relacionadas pero más particulares.

¿Qué circunstancias en el entorno de los equipos que se enfrentan en un partido pueden

influir en el desarrollo del mismo?

Resultado de la sesión

De la conversación llevada a cabo con el experto se han conseguido como respuestas a

la pregunta las siguientes circunstancias:

-Lesiones de jugadores, sobre todo jugadores titulares del equipo o jugadores suplentes

cuya aportación sea considerable o número de minutos elevado.

-Varios partidos en un pequeño periodo de tiempo que puedan afectar al rendimiento

del equipo por culpa del cansancio.

-Mayor necesidad de ganar bien por demostrar a su público (los equipos se motivan

más cuando juegan en casa) y fans o porque de ello dependa su clasificación para

playoffs.

El experto deja abierta la posibilidad de encontrar más circunstancias que influyan en

el resultado final de un partido pero está seguro de que estas son las más importantes y

más peso tienen.

Plan de análisis

En esta primera toma de contacto se estudiarán los nuevos términos aparecidos y se

intentará estructurar la siguiente entrevista en torno a una de las circunstancias que el

experto ha citado.

Resultados del análisis

Los nuevos términos que se han encontrado son:

-Jugador titular

-Jugador suplente

-Aportación de un jugador

-Playoffs

Page 16: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 16

Búsqueda de patrones de comportamiento en

victorias y derrotas.

Ejemplo básico (No refleja cómo se implementa el sistema sino una pequeña

aproximación) de los pasos realizados en la búsqueda de patrones de comportamiento

en victorias/derrotas:

Paso 1-Crear tabla con todas las estadísticas referentes al histórico de partidos del

equipo y cada fila tenga un campo que diga si el equipo ganó o perdió.

PF = Puntos a favor PC = Puntos en contra RF = Rebotes a favor

RC = Rebotes en contra ROF = Rebotes ofens. favor ROC = Rebotes ofens. contra

AF = Asistencias a favor AC = Asistencias en contra RoF = Robos a favor

RoC = Robos en contra TF = Tapones a favor TC = Tapones en contra

FC = Faltas cometidas FR = Faltas recibidas FTF = Faltas técnicas a favor

FTC = Faltas técnicas contra PeF = Pérdidas a favor PeC = Pérdidas en contra

%1 = Porcentaje tiros de 1 %2 = Porcentaje tiros de 2 %3 = Porcentaje tiros de 3

Por último G será el resultado del encuentro en términos de victoria o derrota.

PF PC RF RC ROF ROC AF AC RoF RoC TF TC FC FR FTF FTC PeF PeC %1 %2 %3 G?

95 92 30 28 6 4 25 20 12 9 5 5 15 20 1 0 5 4 80 45 38 Si

87 93 25 32 5 10 22 23 10 11 3 3 12 10 2 1 6 6 81 42 30 No

98 85 24 30 4 5 27 29 9 5 6 2 18 15 2 3 7 5 85 48 35 Si

96 98 26 24 6 12 20 25 8 14 0 4 16 14 3 1 4 7 83 46 37 No

Page 17: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 17

2-Crear fila patrón de comportamiento cuando el equipo ganó y fila patrón de

comportamiento cuando el equipo perdió a partir de la tabla anterior.

3-Crear fila esperada de comportamiento según la tendencia del equipo en los últimos

partidos.

Teniendo en cuenta únicamente los 10 últimos partidos y los 5 últimos contra el

equipo en cuestión si se han producido esta temporada, crear una tabla como la

anterior a partir de los datos de tendencia del equipo que represente la posible

actuación del equipo en el próximo partido.

4-Calcular similitud de la fila creada en el punto 3 con las filas creadas en 2 y ver a cual

se asemeja más.

Aparte de las columnas antes citadas, en la base de datos se añadirán columnas como:

-Equipo que juega de local.

-Número de partido para el equipo local.

-Días de descanso del equipo local.

-Equipo que juega de visitante.

-Número de partido para el equipo visitante.

-Días de descanso del equipo visitante.

Nota: El proceso anterior no representa el caso real implementado sino el

mecanismo de creación de clusters y predicciones. En el programa se utilizarán 4

clusters, dos por equipo.

PF PC RF RC ROF ROC AF AC RoF RoC TF TC FC FR FTF FTC PeF PeC %1 %2 %3 G?

96 88 27 29 5 4 26 24 10 7 5 3 16 17 1 1 6 4 82 46 36 Si

91 95 25 28 5 11 21 24 9 12 1 3 14 12 2 1 5 6 82 44 33 No

Page 18: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 18

Prototipo.

El prototipo creado tiene las siguientes características:

-Permite al usuario pronosticar la jornada del 21 de noviembre de 2012, la cual se

caracteriza por haberse disputado 14 partidos de los 15 posibles en una solo jornada (se

trata de una jornada muy densa) y a la vez cumplirse la premisa del sistema de que se

hayan disputado un mínimo de 10 jornadas (el 20 de noviembre cada equipo había

disputado un mínimo de 9 partidos y un máximo de 12).

-El programa crea los 4 clusters pertinentes, por ejemplo para el primer partido de la

jornada que pronostica el prototipo, se enfrentan Charlotte (local) y Toronto (visitante),

y se crearán y mostrarán por pantalla los clusters:

Patrón de comportamiento en victorias para Toronto. Patrón 1.

Patrón de comportamiento en derrotas para Toronto. Patrón 2.

Patrón de comportamiento en victorias para Charlotte. Patrón 3.

Patrón de comportamiento en derrotas para Charlotte. Patrón 4.

-Para cada partido, se calculará un porcentaje de coincidencia con cada cluster que se

mostrará nuevamente por pantalla. Esta similitud será la distancia eucleidea entre los

vectores. Una vez calculada se procede a calcular el porcentaje sobre el total de la

siguiente manera:

Sumamos los porcentajes de coincidencia de los casos favorables a Toronto, es

decir, sumamos las similitudes con los patrones 1 y 4. Este número es dividido

entre la suma de las 4 similitudes con los 4 clusters para obtener el porcentaje

relativo para una posible victoria de Toronto.

Sumamos los porcentajes de coincidencia de los casos favorables a Charlotte, es

decir, sumamos las similitudes con los patrones 2 y 3. Este número es dividido

entre la suma de las 4 similitudes con los 4 clusters para obtener el porcentaje

relativo a una posible victoria de Toronto.

Veremos por tanto en pantalla un pronóstico para el partido que hayamos seleccionado

dado en porcentaje de probabilidad de victoria de cada equipo.

Page 19: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 19

Memoria de la implementación del prototipo.

Para la implementación del programa se ha utilizado el lenguaje de programación C.

Mediante MySQL accederemos a la base de datos que contiene todos los datos de los

partidos.

Para cada partido, tenemos 31 campos o columnas, los cuales pertenecen:

-15 a las estadísticas del equipo local.

-15 a las estadísticas del equipo visitante.

-1 al resultado.

En cuanto a las estructuras de datos utilizadas, y basándonos en la cantidad de campos

antes descrita, durante la ejecución se reserva memoria para:

-4 vectores de doubles con 31 elementos para almacenar los 4 clusters.

-6 vectores de doubles con 15 elementos que almacenarán los 3 últimos resultados de

cada equipo y más tarde se aprovecharán para almacenar la predicción conjunta de

dichos resultados.

-4 variables de tipo double formando un vector que almacenarán el grado de similitud

con los clusters de nuestras predicciones.

Además de las anteriores estructuras de datos, se han utilizado otros tipos de datos

menos sensibles de ser explicados, como variables contador para los bucles for.

Se adjunta la copia de seguridad de la base de datos, mediante la cual se podrá crear

dicha estructura en cualquier computadora.

Para compilar el proyecto es precisa la siguiente línea de comando en una terminal

linux:

gcc -o nba nba.c `mysql_config --cflags --libs`

Page 20: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 20

Ejemplo de funcionamiento.

A continuación podemos ver un ejemplo del funcionamiento del sistema, los pasos

intermedios que realiza, y la salida final en cuanto a resultados estadísticos que genera:

Page 21: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 21

Verificación del sistema.

Para verificar y mejorar el sistema, se han comparado los resultados esperados con los

resultados obtenidos. A continuación se muestran los resultados que se dieron en la

jornada del 21 de noviembre.

De los 14 partidos que se jugaron ese día, podemos afirmar que el sistema pronostica

acertadamente 12 de ellos, sin embargo, cabe reconocer que antes de mejorar dicho

sistema asignando pesos a los campos estadísticos, este solo acertaba 9 de los 14

resultados.

El siguiente paso en el sistema, ajeno al prototipo que nos ocupa, sería el de comprobar

dicha fiabilidad con las siguientes jornadas de la NBA, pudiendo llegar incluso a

predecir la clasificación de cada equipo al final de la temporada si el sistema actuara

correctamente. Es cierto, sin embargo, que sería imprescindible un gran número de

ajustes sobre el sistema.

Estos son los partidos sobre los que se han realizado las pruebas pertinentes al sistema:

Page 22: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 22

Código fuente. #include <stdio.h>

#include <math.h>

#include <mysql.h>

#include <stdlib.h>

void crearPrediccion(double predicciones[6][15], int j){

int i;

double aux[15];

if(j==3) j=6;

if(j==0) j=3;

j--;

for (i = 0; i < 15; i++) aux[i]=predicciones[j][i]*2;

if(j==3) j=6;

if(j==0) j=3;

j--;

for (i = 0; i < 15; i++) aux[i]+=predicciones[j][i]*1.5;

if(j==3) j=6;

if(j==0) j=3;

j--;

for (i = 0; i < 15; i++){

aux[i]+=predicciones[j][i];

predicciones[j][i]=aux[i]/4.5;

}

}

double similitud(double cluster[30], double prediccionlocal[15], double

prediccionvisitante[15], int local){

double prediccion[24];

double clusternormalizado[24];

int i;

double aux1=0.0, aux2=0.0, similitud, numerador=0.0, denominador=0.0;

if(local==1){ //Comenzamos creando el vector de prediccion que

compararemos con el cluster

for (i=0; i<12 ; i++){

prediccion[i]=prediccionlocal[i+3];

}

for (i=12; i<24 ; i++){

prediccion[i]=prediccionvisitante[i-9];

}

}

else if(local==2){

similitud=0;

for (i=0; i<12 ; i++){

prediccion[i]=prediccionvisitante[i+3];

}

for (i=12; i<24 ; i++){

prediccion[i]=prediccionlocal[i-9];

}

}

//Ahora normalizaremos el vector que representa el cluster

for(i=0; i<12; i++) clusternormalizado[i]=cluster[i+3];

for(i=12; i<24; i++) clusternormalizado[i]=cluster[i+6];

//Ahora calculamos la distancia euclidea entre los vectores:

for(i=0; i<24; i++) numerador += prediccion[i]*cluster[i];

for(i=0; i<24; i++){

aux1 += prediccion[i]*prediccion[i];

aux2 += cluster[i]*cluster[i];

}

denominador=sqrt(aux1);

denominador*=sqrt(aux2);

similitud+=(double)numerador/denominador;

return similitud*1000;

Page 23: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 23

}

int main(int argc, char *argv[]){

MYSQL *conn;

MYSQL_RES *result;

MYSQL_ROW row;

int num_fields, i, j, k=3, partido, equipo1, equipo2;

double clusters[4][30];

double predicciones[6][15];

double similitudes[4];

char consulta[55];

for(i = 0; i < 4; i++){

for(j = 0; j < 30; j++){

clusters[i][j]=0;

}

}

j=0;

conn = mysql_init(NULL);

if (conn == NULL) {

printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));

exit(1);

}

if (mysql_real_connect(conn, "localhost", "root", "38456789123", "nba",

0, NULL, 0) == NULL) {

printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));

exit(1);

}

printf("\n21 de noviembre: Introduzca el número del partido desea

pronosticar..\n\n");

printf("\e[0;32m1-\e[0mToronto Raptors VS Charlotte Bobcats\t\e[0;32m8-

\e[0mL.A. Clippers VS O.City Thunder\n");

printf("\e[0;32m2-\e[0mDetroit Pistons VS Orlando Magic\t\e[0;32m9-

\e[0mChicago Bulls VS Houston Rockets\n");

printf("\e[0;32m3-\e[0mPhiladelphia 76ers VS Cleveland Cavs\t\e[0;32m10-

\e[0mDenver Nuggets VS Minesota TWolves\n");

printf("\e[0;32m4-\e[0mN.Orleans Hornets VS Indiana Pacers\t\e[0;32m11-

\e[0mNew York Knicks VS Dallas Mavericks\n");

printf("\e[0;32m5-\e[0mSan Antonio Spurs VS Boston Celtics\t\e[0;32m12-

\e[0mPortland T.Blazers VS Phoenix Suns\n");

printf("\e[0;32m6-\e[0mWashington Wizards VS Atlanta Hawks\t\e[0;32m13-

\e[0mL.A. Lakers VS Sacramento Kings\n");

printf("\e[0;32m7-\e[0mMilwakee Bucks VS Miami Heat\t\t\e[0;32m14-

\e[0mBrooklyn Nets VS G.State Warriors\n\n");

scanf("%d", &partido);

if (partido < 0 || partido > 14){

printf("Error: Opción mal seleccionada\n");

exit(-1);

}

else if(partido==1){ equipo1=12; equipo2=5; }

else if(partido==2){ equipo1=14; equipo2=8; }

else if(partido==3){ equipo1=7; equipo2=4; }

else if(partido==4){ equipo1=9; equipo2=19; }

else if(partido==5){ equipo1=1; equipo2=20; }

else if(partido==6){ equipo1=11; equipo2=15; }

else if(partido==7){ equipo1=13; equipo2=10; }

else if(partido==8){ equipo1=24; equipo2=27; }

else if(partido==9){ equipo1=17; equipo2=6; }

else if(partido==10){ equipo1=22; equipo2=21; }

else if(partido==11){ equipo1=16; equipo2=3; }

else if(partido==12){ equipo1=29; equipo2=23; }

else if(partido==13){ equipo1=30; equipo2=28; }

else{ equipo1=26; equipo2=2; }

Page 24: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 24

sprintf(consulta, "SELECT * FROM temporada20122013 WHERE E1=%d OR

E2=%d", equipo1, equipo1);

mysql_query(conn, consulta);

result = mysql_store_result(conn);

if(result){

num_fields = mysql_num_fields(result);

int npartidos = mysql_num_rows(result);

int ncluster, g=0, p=0;

row = mysql_fetch_row(result);

do{

if (((atoi(row[0]) == equipo1) && (atoi(row[30]) == 1)) ||

((atoi(row[0]) != equipo1) && (atoi(row[30]) == 2))){

ncluster=0;

g++;

}

else{

ncluster=1;

p++;

} //Comprobamos si el equipo ha ganado o ha perdido.

for(i = 0; i < 30; i++)

{

if(atoi(row[0]) == equipo1){

clusters[ncluster][i]+=atoi(row[i]);

if(i<15) predicciones[j][i]=atoi(row[i]);

if(i == 29){

j++;

if (j > 2) j=0;

}

}

else{

if(i<15)

clusters[ncluster][i+15]+=atoi(row[i]);

else clusters[ncluster][i-15]+=atoi(row[i]);

}

} //Comenzamos a crear los vectores representativos del

patrón cuando gana y de cuando pierde.

} while (row = mysql_fetch_row(result));

for(i = 0; i < 30; i++) clusters[0][i] /= g;

for(i = 0; i < 30; i++) clusters[1][i] /= p; //Hacemos la media

de las estadísticas para crear los patrones de comportamiento al ganar y

perder

clusters[0][1]=clusters[0][15]=clusters[0][16]=clusters[1][1]=clusters[1

][15]=clusters[1][16]=0;

mysql_free_result(result);

}

printf("\n\e[0;32mCluster ganar para el equipo local:\e[0m\n");

for(i = 0; i < 30; i++){

if(i==15) printf("\n");

if(clusters[0][i]==0.0) printf(" x ");

else printf("%3.1f ", clusters[0][i]);

}

printf("\n\e[0;32mCluster perder para el equipo local:\e[0m\n");

for(i = 0; i < 30; i++){

if(i==15) printf("\n");

if(clusters[1][i]==0.0) printf(" x ");

else printf("%3.1f ", clusters[1][i]);

}

printf("\n\e[0;32mPredicción según los últimos 3 partidos como

local:\e[0m\n");

crearPrediccion(predicciones, j);

Page 25: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 25

for(i = 0; i < 15; i++){

printf("%3.1f ", predicciones[j][i]);

}

sprintf(consulta, "SELECT * FROM temporada20122013 WHERE E1=%d OR

E2=%d", equipo2, equipo2);

mysql_query(conn, consulta);

result = mysql_store_result(conn);

if(result){

num_fields = mysql_num_fields(result);

int npartidos = mysql_num_rows(result);

int ncluster, g=0, p=0;

row = mysql_fetch_row(result);

do{

if (((atoi(row[0]) == equipo2) && (atoi(row[30]) == 1)) ||

((atoi(row[0]) != equipo2) && (atoi(row[30]) == 2))){

ncluster=2;

g++;

}

else{

ncluster=3;

p++;

} //Comprobamos si el equipo ha ganado o ha perdido.

for(i = 0; i < 30; i++)

{

if(atoi(row[0]) == equipo2){

clusters[ncluster][i]+=atoi(row[i]);

}

else{

if(i<15)

clusters[ncluster][i+15]+=atoi(row[i]);

else{

clusters[ncluster][i-15]+=atoi(row[i]);

predicciones[k][i-15]=atoi(row[i]);

if(i == 29){

k++;

if (k > 5) k=3;

}

}

}

} //Comenzamos a crear los vectores representativos del

patrón cuando gana y de cuando pierde.

} while (row = mysql_fetch_row(result));

for(i = 0; i < 30; i++) clusters[2][i] /= g;

for(i = 0; i < 30; i++) clusters[3][i] /= p; //Hacemos la media

de las estadísticas para crear los patrones de comportamiento al ganar y

perder

clusters[2][1]=clusters[2][15]=clusters[2][16]=clusters[3][1]=clusters[3

][15]=clusters[3][16]=0;

mysql_free_result(result);

}

printf("\n\e[0;32mCluster ganar para el equipo visitante:\e[0m\n");

for(i = 0; i < 30; i++){

if(i==15) printf("\n");

if(clusters[2][i]==0.0) printf(" x ");

else printf("%3.1f ", clusters[2][i]);

}

printf("\n\e[0;32mCluster perder para el equipo visitante:\e[0m\n");

for(i = 0; i < 30; i++){

if(i==15) printf("\n");

Page 26: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 26

if(clusters[3][i]==0.0) printf(" x ");

else printf("%3.1f ", clusters[3][i]);

}

printf("\n\e[0;32mPredicción según los últimos 3 partidos como

visitante:\e[0m\n");

crearPrediccion(predicciones, k);

for(i = 0; i < 15; i++){

printf("%3.1f ", predicciones[k][i]);

}

printf("\n");

mysql_close(conn);

printf("\e[0;33m\nResultados:\n\e[0m");

similitudes[0]=similitud(clusters[0], predicciones[j], predicciones[k],

1); //Devuelve similitud con cluster ganar del equipo local

printf("\e[0;36mSimilitud con el cluster ganar local:\e[0m

\e[0;33m\t\t%.2f%%\e[0m\n", similitudes[0]); similitudes[0]/=1.05;

similitudes[1]=similitud(clusters[1], predicciones[j], predicciones[k],

1); //Devuelve similitud con cluster perder del equipo local

printf("\e[0;36mSimilitud con el cluster perder local:\e[0m

\e[0;33m\t\t%.2f%%\e[0m\n", similitudes[1]); similitudes[1]/=1.1;

similitudes[2]=similitud(clusters[2], predicciones[j], predicciones[k],

2); //Devuelve similitud con cluster ganar del equipo visitante

printf("\e[0;36mSimilitud con el cluster ganar visitante:\e[0m

\e[0;33m\t%.2f%%\e[0m\n", similitudes[2]); similitudes[2]/=1.1;

similitudes[3]=similitud(clusters[3], predicciones[j], predicciones[k],

2);//Devuelve similitud con cluster perder del equipo visitante

printf("\e[0;36mSimilitud con el cluster perder visitante:\e[0m

\e[0;33m\t%.2f%%\e[0m\n", similitudes[3]); similitudes[3]/=1.05;

//Ahora se calculará el porcentaje total de victoria para cada equipo:

printf("\e[0;36mProbabilidad de que gane el equipo local:\e[0m

\e[0;33m\t%.2f%%\e[0m\n",

(similitudes[0]+similitudes[3])/(similitudes[0]+similitudes[1]+similitudes[2]+

similitudes[3])*100);

printf("\e[0;36mProbabilidad de que gane el equipo visitante:\e[0m

\e[0;33m\t%.2f%%\e[0m\n\n",

(similitudes[1]+similitudes[2])/(similitudes[0]+similitudes[1]+similitudes[2]+

similitudes[3])*100);

return 0;

}

Page 27: Aníbal León León Máster en Ingeniería Informática ...s2xg7s3u8.de-02.live-paas.net/Web/img/NBiAPrototype.pdf · hora de realizar apuestas deportivas relacionadas con la liga

Aníbal León León | Sistema experto en pronóstico de resultados NBA “NBiA” 27

Objetivos futuros.

Actualmente el sistema se reduce a un pequeño prototipo más o menos funcional, que

cubre una jornada de 14 partidos de la temporada 2012-2013. El objetivo es que en el

futuro el sistema NBiA pueda:

-Pronosticar cualquiera de las jornadas que componen la liga regular pudiendo

extenderse incluso a playoffs. Cuantas más jornadas transcurran mayor será la eficiencia

del sistema.

-Predecir cómo avanzará cada una de las franquicias en la clasificación general,

pudiendo crearse gráficos con dichas predicciones.

Actualmente la eficiencia del sistema es de 12/14=85,7%, el objetivo a largo plazo sería

el de ir extendiendo el sistema a la vez que mantenemos al menos un 80% de resultados

satisfactorios.


Recommended