bordese ia famaf 2012

28
Predicción de Partidos de Fútbol Andrés Matías Bordese 08/11/12 Fa.M.A.F, Universidad Nacional de Córdoba

Upload: joel-hugo-coronel-chura

Post on 08-Dec-2015

230 views

Category:

Documents


1 download

DESCRIPTION

BORDESE

TRANSCRIPT

Page 1: Bordese Ia Famaf 2012

Predicción de Partidos de Fútbol

Andrés Matías Bordese08/11/12Fa.M.A.F, Universidad Nacional de Córdoba

Page 2: Bordese Ia Famaf 2012

ContenidosIntroducción.................................................................................................................................3Resolución del Problema.............................................................................................................5

1 - Obtención de Información .................................................................................................52 – Salvado y Estandarización en la BD..................................................................................63 – Atributos a utilizar para la predicción [Modos]...................................................................8

Face to Face.......................................................................................................................8Solo....................................................................................................................................9Solo + Goles de Diferencia...............................................................................................10

4- Construcción del Dataset y Entrenamiento.......................................................................11Face To Face....................................................................................................................12Solo..................................................................................................................................13

Métricas.....................................................................................................................................15Datos Obtenidos........................................................................................................................16

Face to Face.........................................................................................................................16Solo.......................................................................................................................................16Solo +....................................................................................................................................18

Análisis...................................................................................................................................... 18Face To Face........................................................................................................................20Solo.......................................................................................................................................21Solo +....................................................................................................................................24

Conclusión Final........................................................................................................................24Extensiones...............................................................................................................................24Referencias................................................................................................................................25Apéndice....................................................................................................................................26

A – Obtención de Información..........................................................................................26

Page 3: Bordese Ia Famaf 2012

IntroducciónEl fútbol (del inglés británico football), también conocido por fútbol asociación y llamado futbol, balompié o soccer según el idioma del país, es un deporte de equipo jugado entre dos conjuntos de 11 jugadores cada uno y cuatro árbitros que se ocupan de que las normas se cumplan correctamente. Es ampliamente considerado el deporte más popular del mundo, pues participan en él unos 270 millones de personas.

El terreno de juego es rectangular de césped natural o artificial, con una portería a cada lado del campo. El objetivo del juego es desplazar con cualquier parte del cuerpo que no sea los brazos o las manos, y mayoritariamente con los pies (de ahí su nombre), una pelota a través del campo para intentar introducirla dentro de la portería contraria, acción que se denomina marcar un gol. El equipo que logre más goles al cabo del partido, de una duración de 90 minutos, es el que resulta ganador del encuentro.

El juego moderno fue creado en Inglaterra tras la formación de la Football Association, cuyas reglas de 1863 son la base del deporte en la actualidad. El organismo rector del fútbol es la Fédération Internationale de Football Association, más conocida por su acrónimo FIFA. La competición internacional de fútbol más prestigiosa es la Copa Mundial de Fútbol, organizada cada cuatro años por dicho organismo. Este evento es el más famoso y con mayor cantidad de espectadores del mundo, doblando la audiencia de los Juegos Olímpicos.

En Argentina es el deporte más popular: el que tiene más jugadores federados (540.000 en 2002, equivalente al 1,4% de la población) y el más practicado por la población masculina en forma recreativa o no federada.

La Asociación del Fútbol Argentino(AFA) se creó en1893. Es la octava más antigua del mundo. El torneo de liga, jugado desde ese año, es el tercero más antiguo del mundo, detrás de las ligas británicas y holandesa.

Actualmente el campeonato de Primera División del fútbol argentino, organizado por la AFA, se desarrolla durante 38 fechas divididas en dos torneos de 19 jornadas cada uno, denominados Inicial y Final, en el que el ganador del primero se enfrenta al del segundo en un partido único en cancha neutral, para definir al campeón.

En el certamen participan veinte equipos, los que son presentados por clubes, asociaciones civiles sin fines de lucro, aunque desde el año 2000 puede darse la situación de que el equipo esté gerenciado por una empresa privada, en representación y con la aprobación del club respectivo.

Page 4: Bordese Ia Famaf 2012

En la actualidad existe muchas páginas de apuestas deportivas en las que las personas intentan obtener un beneficio monetario con sus predicciones de los resultados de los partidos.

A modo de simplificación del problema de predicción consideraremos una predicción de un partido entre el equipo A y el equipo B como un elemento del conjunto {VictoriaA , Empate , DerrotaA } .

Dos conceptos interesantes, que van a tener una ocurrencia repetida en este documento son Historia Reciente de un club e Historial entre un par de clubes.

Definimos Historia Reciente de un club A dado una fecha f y un natural n como la

lista l=[({A , Bn }, Ln , S n ,(G Ai ,GBn)) , ... , ({A , B1} , L1 , S 1 ,(G A1 ,G B1))]

Donde:Bi∈Nombres de equipos

Li∈{Local ,Visitante }

S i∈Nombres de estadios

GAi ,GBi∈ℕ

La tupla ({A , Bi }, Li , S i ,(GA ,GBi))∈L representa que el partido disputado por el equipo “A”

hace i fechas de la “f” fue contra el equipo Bi , se jugó en el estadio S i , “A” se consideró

como Li y el resultado final fue GAi goles para A y GBi goles para Bi .

Definimos Historial entre un club A y un club B dada una fecha f , tal que en esa fecha se enfrenten A y B , y un natural n como la lista

l=[(Ln , S n ,(G An ,GBn)) , ... ,(L1 , S1 ,(GA1 ,GB1))]

Donde:Li∈{Local ,Visitante }

S i∈Nombres de estadios

GAi ,GBi∈ℕ

La tupla (Li , S i , (GAi ,GBi))∈L representa al i-ésimo partido anterior al de la fecha f

entre el equipo A y el equipo B . Ese partido se jugó en el estadio S i , donde se

consideró como Li a A y el resultado final fue GAi goles para A y GBi para

B .

En este trabajo se intentará mostrar que no es posible predecir con una confianza relevante los resultados de los partidos de fútbol argentino de primera división.

Usaremos técnicas de inteligencia Artificial de clasificación automática para, dado un partido p entre los equipos A y B , una fecha f y un torneo t , usar la información del

historial entre clubes y la historia reciente de un club para clasificar el partido p en alguna de las clases de C={VictoriaA ,Empate , DerrotaA } .

Page 5: Bordese Ia Famaf 2012

Resolución del ProblemaRoadmap de las tareas a realizar para la resolución:

1. Obtener alguna fuentes de información de los resultados de la primera división del fúbol Argentino.

2. Procesar la información conseguida, y guardarla de manera estandarizada en una base de datos.

3. Decidir los atributos a utilizar para predecir los resultados [Modos].4. Construir a partir de la base de datos las instancias para poder entrenar y evaluar los

clasificadores.

1 - Obtención de Información

Una de los mayores problemas a resolver en este trabajo fue la obtención de datos para realizar los experimentos, la mayoría de las bases de datos sobre la historia del fútbol Argentino que se encuentra en la web son pagas, sólo contienen información de la última década, o en el caso de la AFA no se encuentran digitalizadas.La única fuente que se consiguió con gran parte de la etapa profesional del fútbol Argentino (1930-2008) fue http://www.rsssf.com/tablesa/argalltime.html.

Para cada año entre 1930 y 2008 la página nos brinda una serie de entradas de la forma:

Torneo XRonda 1

Fecha dd/mm/yyEquipo_1 goles_1 : goles_2 Equipo2 [at Estadio_1]…Equipo_19 goles_19 : goles_20 Equipo20

…Ronda 19

Torneo Y….

Características:1. Nombre de Campeonato(s).2. Fechas.3. Rondas.4. Equipos que se enfrentan.5. Resultado enfrentamiento.

Page 6: Bordese Ia Famaf 2012

6. Cancha en que se enfrentan.7. Acontecimientos extraños (Suspensiones, quita de puntos, etc).

De la lista anterior, se pueden observar en negrita ciertas características, esas son las que utilizaremos nosotros utilizaremos, a las otras dos no las utilizaremos por su irrelevancia (Nombre de Torneo) o por su complejidad (Acontecimientos extraños).

2 – Salvado y Estandarización en la BD

La entrada de la página por cada año debe ser parseada para extraer la información relevante. La tarea de parsing adquirió dimensiones extremadamente grandes ya que, para nuestro desagrado, cada una de las 78 entradas por año estaban dispuestas con encodings y formatos diferente, por lo que el parseo debió ser especializado para cada una de las entradas.

Algunos fragmentos de entradas:

Entrada 2008Round 2 [Aug 10] Tigre 0-3 Independiente [at Vélez Sarsfield]

Entrada 1985Round 1.1.1: 17 Feb Ramón Santamarina 2-1 Platense (VL) Municipal General San Martín

Entrada 19732nd Round 9.3.1973 Argentinos Juniors 3-5 River Plate at Vélez Sarsfield

Notemos que hay elementos que las personas considerar importantes para el desempeño de un club de fútbol (como cambio de técnico, cantidad de refuerzos comprados, tamaño de plantel, etc) y no los podemos tener en cuenta debido a la escasez de información de nuestra fuente.

Para extraer la información de la web se programaron dos scripts en python. Uno se encarga de parsear la web y llenar una OODB, mientras que el otro es el encargado de filtrar ciertos resultados erróneos que el parser no era capaz de discriminar, a demás de estandarizar los nombres de clubes y nombres de estadios.

Ejemplo de nombres no estandarizados:

Page 7: Bordese Ia Famaf 2012

indepdente.ind. avellanedaindependienteindependiente de avellaneda independiente [A]

Todos estos clubes referencian al mismo Club Atlético Independiente de Avellaneda.

Más información sobre estos scripts puede encontrarse en el Apéndice.Finalmente, luego del proceso de parseo y estandarización tenemos una base de datos estructurada con más de 150 equipos y alrededor de 28667 partidos.

3 – Atributos a utilizar para la predicción [Modos]

Parser Filter

WWW

OODB

Page 8: Bordese Ia Famaf 2012

Una vez ya dispuesta y normalizada la información en la base datos, se puede comenzar a entrenar los clasificadores, pero primero hay que decidir la forma que van a tener las instancias. Se atacó el problema de tres enfoques diferentes.

Face to Face

Esta modalidad usa el historial entre equipos combinado con la historia reciente de los dos clubes. Únicamente se intenta predecir el resultado de los partidos entre un par de clubes.Una instancia consiste en el resultado de los últimos n partidos del equipo 1 antes del derby, el resultado de los últimos n partidos del equipo 2 antes del derby y el resultado del enfrentamiento mutuo.En fórmulas:

FaceToFace(T 1,T 2 , n)={HistoriaReciente(T 1 , p , n)+HistoriaReciente(T 2 , p , n)+[ p] :

p∈PartidosEntre (T 1 , T 2)}

En esta modalidad podemos analiza cuanto influyen los n anteriores enfrentamientos de la historia reciente en el siguiente. Intuitivamente lo que esperaríamos encontrar es una dependencia mayor de los partidos más cercanos y a medida que tenemos en cuenta más y más partidos éstos dejan de ser significativos.

En palabras más simples lo que este modo intenta hacer es predecir el resultado de un derby mediante una evaluación de como llegan (los resultados de los partidos) los dos equipo al enfrentamiento mutuo.

En el siguiente gráfico puede apreciarse este modo en acción para el par de clubes (San Lorenzo de Almagro, Boca Juniors).

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LV

Aug 10{B, ?}

VV

Aug 17{B, ?}

LL

Aug 24{B, ?}

VV

Aug 28{B, ?}

LV

Sep 5{B, ?}

VE

Sep 11{B, ?}

LD

Sep 18{S, B}

L?

Page 9: Bordese Ia Famaf 2012

Solo

Esta modalidad usa el concepto de historia reciente. Puede considerarse una generalización del método anterior ya que se siguiendo a un equipo se intenta predecir el resultado de un partido sin importar contra quien juegue.Una instancia de este método para un partido p sería los resultados de los últimos npartidos sumado al partido que se intenta predecir p .

En fórmulas:

Solo(Equipo ,n)={HistoriaReciente (Equipo , p ,n)+[ p ] : p∈ partidos(Equipo)}

En palabras más simples, intentamos predecir el resultado del próximo partido de un equipo en base a como llega al mismo.

Al igual que en face to face, el n es un parámetro para este modo por lo que podemos ir aumentando la cantidad de partidos que miramos hacia atrás y ver como esto influye en nuestra predicción del resultado.

Fecha{Club, ?}Localía

Resultado

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LD

Sep 18{S, ?}

L?

Page 10: Bordese Ia Famaf 2012

Solo + Goles de Diferencia

Es una generalización de la modalidad solo, por lo tanto muy similar a la anterior. La diferencia radica en que para un partido p se utilizan a demás de los n partidos anteriores la diferencia de goles obtenida en los n partidos anteriores.

Donde DiferenciaDeGol ( p1,Equipo)=p1 . goles(Equipo)−p1 . golesOtroEquipo(Equipo)

DiferenciaDeGoles (( p1 ,... , pn) , Equipo)=∑i=1

n

DiferenciaDeGol ( pi , Equipo)

con p i∈Partidos∧Equipo∈Nombre de Equipos .

Clasificaremos la diferencia de goles en las siguientes clases:

Desde Hasta

0 4

4 8

8 12

12 16

16 20

20 26

26 32

32 40

40 50

50 inf

Duplicando las entradas anteriores para todas las diferencias de goles negativas.Abajo puede apreciarse un ejemplo con San Lorenzo de Almagro

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LD

Sep 18{S, B}

L?

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LD

Sep 18{S, B}

L?

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LD

Sep 18{S, B}

L?

Aug 10{SL, ?}

VV

Aug 17{SL, ?}

LE

Aug 24{SL, ?}

VE

Aug 28{SL, ?}

LV

Sep 5{SL, ?}

VE

Sep 11{SL, ?}

LD

Sep 18{S, ?}

L?

G: [12, 16)

Page 11: Bordese Ia Famaf 2012

4- Construcción del Dataset y Entrenamiento

Para predecir los partidos se utilizó una herramienta de machine learning weka, y se utilizaron los clasificadores SMO (con el kernel por defecto), J48 y Naive Bayes.

J48: es una versión del algoritmo C4.5 de J. Ross Quinlan. Los árboles de decisión son la forma clásica de representar la información de un algoritmo de machine learning y brindan una forma poderosa y fácil de mostrar estructuras de datos.

Naive Bayes: es un clasificador probabilístico basado en el teorema de Bayes y algunas hipótesis simplificadoras adicionales. Es a causa de estas simplificaciones, que se suelen resumir en la hipótesis de independencia entre las variables predictoras, que recibe el apelativo de ingenuo.

SMO: Sequential minimal optimization es un algoritmo para resolver de manera eficiente el problema que se produce durante el training de las support vector machines. Fue inventado por John Platt en 1998 en Microsoft Research.

Debemos tener en cuenta que para trabajar con weka, se necesita que los datos se encuentren en un formato específico, arff.Para poder llevar a cabo los tres análisis arriba nombrados se diseño en python un script que generar a partir de la base de datos de partidos, las salidas en formato arrf necesarias.

OODB Py Script

Solo Arff

Face to Face Arff

Solo+ Arff

Page 12: Bordese Ia Famaf 2012

Veamos el pseudocódigo necesario para generar las instancias para entrenar a los clasificadores.

Face To Face

function generarInstancias(equipo1, equipo2, n, output)for match in matches(equipo1, equipo2) do

l1 = HistoriaReciente(equipo1 , match, n)l2 = HistoriaReciente(equipo2, match, n)if len(l1) == n and len(l2) == n then

l1 = dejarSoloResultadoYLocalia(L1, equipo1)l2 = dejarSoloResultadoYLocalia(L2, equipo2)m = dejarSoloResultadoYLocalia([match], equipo1)output.write(l1+l2+m)

fidone

end

Ejemplo los atributos usados en un arff para el par (Boca Juniors, Racing Club de Avellaneda) y n = 1.

@attribute 1L-1 {L,V} # Localía de Boca en el partido anterior al derby@attribute 1G-1 {W,L,T} # Resultado de Boca en el partido anterior al derby.@attribute 2L-1 {L,V} # Localía de Racing en el partido anterior al derby@attribute 2G-1 {W,L,T} # Resultado de Racing en el partido anterior al derby@attribute L {L,V} # Localía de Boca en el derby@attribute Class {W,L,T} # Resultado del derby

Donde {L, V} representan al conjunto {Local, Visitante} y {W, L, T} representa al conjunto {Victoria Boca, Derrota Boca, Empate}.

Page 13: Bordese Ia Famaf 2012

Solo

function generarInstancias(equipo, n, output)for match in matches(equipo) do

L = HistoriaReciente(equipo, match, n)if len(L) == n then

L = dejarSoloResultadoYLocalia(L, equipo)m = dejarSoloResultadoYLocalia([match], equipo)output.write(L+m)

fidone

end

Ejemplo de un de los atributos de un arff para el club San Lorenzo de Almagro y n = 3.

@attribute L-3 {L,V} # Localía de SL 3 fechas antes del partido p@attribute G-3 {W,L,T} # Resultado del partido de 3 fechas atrás a p @attribute L-2 {L,V} # Localía de SL 2 fechas antes del partido p@attribute G-2 {W,L,T} # Resultado del partido de 2 fechas atrás a p@attribute L-1 {L,V} # Localía de SL una fecha antes del partido p@attribute G-1 {W,L,T} # Resultado del partido anterior a p@attribute L-0 {L,V} # Localía de SL en el partido p@attribute Class {W,L,T} # Resultado partido p

Donde {L, V} representan al conjunto {Local, Visitante} y {W, L, T} representa al conjunto {Victoria San Lorenzo, Derrota San Lorenzo, Empate San Lorenzo}.

El pseudocódigo para generar las instancias del modo solo+ es muy similar al del modo solo, únicamente se agrega un atributo más a las instancias que es la diferencia de goles.

Pueden verse más ejemplos de instancias en los siguientes links FaceToFace, Solo, Solo+.

Notemos que por el significado de las tres diferentes modalidades, en Face To Face se tienen muchas menos instancias para entrenar y por ende para evaluar que en las otras dos.

Modalidad # Instancias Promedio para un club (o par de clubes)

Face To Face ~170

Solo ~2800

Solo+ ~2800

Page 14: Bordese Ia Famaf 2012

En un primer momento para evaluar el desempeño de los clasificadores para algún modo, algún equipo (o par de equipos) y algún n se hacia un spliting del training set en 80% para entrenamiento y 20% para testeo. Como la selección que hace weka del 20% para testeo es aleatorio esto perjudica a los resultados que obtengo ya que puedo tener suerte en la selección del dataset para testear y sobrestimar el valor real de mis métricas. También puede tener mala suerte y que el resultado subestime al valor real de las métricas.Por esto es que la validación se realizó con cross validation (y 10 folds). Cross validation consiste en hacer el test spliting, pero varias veces y promediar luego los resultados, es por eso que no tiene la misma debilidad que data spliting.

Page 15: Bordese Ia Famaf 2012

Métricas

Para comparar la bondad de los resultados de los diferentes clasificadores y diferentes n's, se tomo la información correspondiente a la precisión y el estadístico kappa del clasificador.Sólo comparamos la bondad de los clasificadores en los llamados clubes grandes del fútbol Argentino ya que son los clubes sobre los que se tienen mas instancias.Notemos también que, nuestros clasificadores podrían andar muy bien para algunos equipos y no tan bien para otros, por lo que se decidió hacer un promedio para cada n de la precisión y del estadístico kappa de todos los clubes (o pares de clubes) dentro de un modo.

Precisión: Cociente entre la cantidad de instancias clasificadas correctamente y la cantidad total de instancias.Kappa Statistic: Es una medida de “concordancia” entre el clasificador ideal y el clasificador usado.

Datos Obtenidos

Como se mencionó antes, se realizaron experimentos para muchos clubes (o pares de clubes) y después se promediaron los resultados. Por cada club y cada modo, se corrieron los clasificadores para data sets con n variando entre 0 y 19. En general el proceso demoró en total unas cuantas horas.Se escribió un script que automatiza las tareas de generar los arffs, correr weka y realizar los gráficos pertinentes. Se puede leer más sobre él en el siguiente link.

Toda la información que se mostrará a continuación será la información promediada de los clubes (o pares de clubes). Para acceder a la información individual puede seguirse el siguiente link.

Para cada clasificador en {J48 ,SMO , Naive Bayes } se mostrarán 6 gráficas que corresponden a:

• Variación de precisión en función de n (cantidad de partidos hacia atrás que se tiene en cuenta) para cada clasificador.

• Variación del estadístico kappa en función de n para cada clasificador.

Face to Face

Page 16: Bordese Ia Famaf 2012
Page 17: Bordese Ia Famaf 2012

Solo

Page 18: Bordese Ia Famaf 2012

Solo +

Page 19: Bordese Ia Famaf 2012
Page 20: Bordese Ia Famaf 2012

Análisis

Mirando en general todos los resultados de los clasificadores, podemos afirmar que ninguno de los tres es capaz de que predecir con consistencia los resultados, ya que como obtenemos un estadístico kappa menor 0.14 en todos los casos, eso me habla que mis predicciones no son para nada confiables. Un kappa tan bajo me dice que mis instancias clasificadas correctamente son pura suerte.A pesar de esto debemos destacar que la precisión con la que los clasificadores predicen un resultado está, en promedio, entre un 40 y un 50 % por lo que quedarse con esa predicción es mejor que tomar un resultado aleatorio de el conjunto A={Victoria, Empate, Derrota}.Entre los clasificadoresEn general J48 y Navie Bayes tuvieron los kappas y precisión más altas a demás de los tiempos de ejecución mas cortos (al rededor de dos segundos), mientras que SMO tuvo un tiempo de ejecución que varió entre los 5 minutos hasta varias horas en el casos de la modalidad solo.

Face To FaceEste forma de evaluar, si bien fue la primera que se ocurrió y parecía razonable, se tuvo un gran problema de escasez de datos. Notemos que la cantidad de posibles instancias de problemas son 6^n y sólo tenemos en promedio 170 instancias, por lo que a medida que miro más y más enfrentamientos hacia atrás, la porción de tuplas que efectivamente voy a ver y con las que voy a aprender son un porcentaje muy reducido del total.Si miramos los gráficos de J48 y Naive Bayes se puede apreciar claramente que los puntos muestran una recta. Luego de aplicar mínimos cuadrados, obtenemos las siguientes rectas.

Page 21: Bordese Ia Famaf 2012

Kappa

Parámetro J48 Naive Bayes

Pendiente 0.001968 0.000039

Ordenada al origen 0.042974 0.061096

Precisión

Parámetro J48 Naive Bayes

Pendiente -0.304903 -0.308559

Ordenada al origen 37.687324 38.725847

Podemos rescatar algo muy interesante que es que que a medida que aumenta n , aumenta kappa tanto en J48 como en Naive Bayes mientras que la precisión disminuye en ambos a medida que aumenta n .Es muy interesante ese incremento del estadístico kappa ya que me dice que se esta aprendiendo algo de los partidos anteriores, esa información esta siendo relevante. Aún así el valor de kappa sigue siendo muy bajo como para se pueda confiar en las predicciones de los clasificadores.

Page 22: Bordese Ia Famaf 2012

SoloSe observa que la precisión y el estadístico kappa de J48 y Naive Bayes parecen responder a ecuaciones lineales. Se utilizó mínimos cuadrados para hallar los parámetros de esas rectas.

Page 23: Bordese Ia Famaf 2012

Kappa

Parámetro J48 Naive Bayes

Pendiente -0.002112 -0.000119

Ordenada al origen 0.082941 0.114700

Precisión

Parámetro J48 Naive Bayes

Pendiente -0.425745 -0.086308

Ordenada al origen 46.627239 45.252261

Las rectas en este están mucho mas a la vista que en el caso de Face to Face.

Podemos observar que todas las pendientes son negativas, es decir que a medida que tengo en cuenta más y más partidos hacia atrás el estadístico kappa y la precisión de mis predicciones bajan. Se obtiene la mejor precisión y el mejor kappa con n = 0, es decir sin tomar en cuenta ningún partido cercano al que estoy intentando predecir.Esto claramente me habla que los partidos anteriores a un partido actual no son lo suficientemente importantes en resultado del nuevo partido, o por lo menos estos clasificadores no son capaces de encontrarle ese factor determinante a los partidos siguientes.

Podemos comparar a J48 y Naive Bayes por sus pendientes. Naive Bayes tiene, tanto en precisión como en kappa la pendiente mas cercana a 0 (que es este caso es lo mejor). También tiene un kappa con una ordenada al origen ~ 1,5 veces más grande que J48.

En el caso de SVM, los resultados obtenidos no parecen responder a una función lineal, sino más bien a una función cuadrática. Se aplico nuevamente mínimos cuadrados para intentar determinar los parámetros de la que cuadrática que mejor se le ajusta.

Page 24: Bordese Ia Famaf 2012

a X 2 b X c

Kappa 0.0001728483139667 -0.003485076611984 0.07120521103896

Precisión 0.028142929767598 -0.667314706937760 47.051261639610239

El resultado que nos da SVM es totalmente anti-intuitivo ya que sin mirar los gráficos y suponiendo que los partidos anteriores ayudaran en la predicción, lo razonable sería que el pico más alto se encuentre alrededor de 10 partidos ya que me mantengo dentro de la misma temporada (o salgo a la anterior, pero me mantengo cerca en el tiempo) y no son partidos muy viejos, por lo que es probable que el club se siga comportando de forma similar durante esos últimos 10 partidos. Mientras que lo que me está mostrando la gráfica es un interesante mínimo alrededor de 10 tanto en kappa como en precisión.

Se realizó una última prueba con n=25 para comprobar si la precisión/kappa continuaban aumentando después de n=20. (No se pudieron hacer muchas pruebas debido al alto costo en tiempo que tiene SVM). Respondiendo un poco a la lógica, con n=25 no se obtienen resultados mejores a los de n=20 (fueron un poco peores)

Solo +Los resultados que vemos en los gráficos son muy similares a los de solo pero un poco más dispersos los puntos. Esta dispersión mayor se debe a que, en este modo debido a falta de tiempo, no se corrió la terna de clasificadores para los “5 grandes del fútbol Argentino”, sino que sólo se corrió para dos de ellos.Por lo que podemos concluir que los resultados son muy similares, y por lo tanto la información que brinda la diferencia de goles ya está implícita en los resultados de los partidos anteriores.

Page 25: Bordese Ia Famaf 2012

Conclusión Final

Podemos afirmar que si bien no demostramos que no se pueden predecir los resultados del fútbol Argentino, encontramos evidencia fuerte mostrando que, por lo menos con el dataset obtenido de http://www.rsssf.com/tablesa/argalltime.html y los algoritmos de clasificación utilizados, no podemos predecir los resultados de los partidos.

Extensiones• Conseguir una versión más eficiente de SMO, o conseguir una máquina más poderosa

para poder hacer pruebas cambiando kernel, c y epsilon sin quedarnos sin tiempo de computación.

• Otra de las tareas que quedo pendiente fue la combinación de clasificadores. La idea predecir el resultado entre dos equipos usando una combinación de los clasificadores estilo “solo”, es decir aprender a predecir los partidos de un equipo, eg. San Lorenzo, aprender a predecir los partidos de otro equipo, eg. Boca Junios, y después combinar el conocimiento de los dos clasificadores para hacer una predicción del enfrentamiento entre ellos.

Aug 10{SL, ?}

VW

Aug 17{SL, ?}

LT

Aug 24{SL, ?}

VT

Aug 28{SL, ?}

LW

Sep 02{SL, ?}

VL

Sep 09{SL, ?}

L?

Aug 10{SL, ?}

VW

Aug 17{SL, ?}

LT

Aug 24{SL, ?}

VT

Aug 28{SL, ?}

LW

Sep 02{SL, ?}

VL

Sep 09{SL, ?}

L?

Aug 10{SL, ?}

VW

Aug 17{SL, ?}

LT

Aug 24{SL, ?}

VT

Aug 28{SL, ?}

LW

Sep 02{SL, ?}

VL

Sep 09{SL, ?}

L?

Aug 10{B, ?}

VT

Aug 17{B, ?}

LW

Aug 24{B, ?}

VL

Aug 28{B, ?}

LW

Sep 02{B, ?}

VT

Sep 09{B, ?}

L?

Sep 09{SL, B}

L?

Page 26: Bordese Ia Famaf 2012

• El santo grial para poder predecir partidos, sería usar toda la información que las personas suponemos que afectan al resultado de un equipo. Una frase típica del fútbol argentino es “Técnico que debuta, gana”. Sería interesante tener más información sobre cosas que consideramos relevantes como por ejemplo plantel, cambio de técnicos, cantidad de copas en disputa, situación económica del club, cambio de dirigentes. Acá la limitación está dada por la obtención de esos datos, que lamentablemente no los podemos conseguir.

Referencias

Bayesian Learning http://pln.famaf.unc.edu.ar/sites/ia2012/ia/filminas/aprendizaje_bayesiano.pdfhttp://www.cs.colorado.edu/~grudic/teaching/CSCI4202_2004/Bayesian_Book.pdf

Decision Treeshttp://www.cs.utexas.edu/~mooney/cs391L/slides/dtrees.pdfhttp://en.wikipedia.org/wiki/Decision_tree

Machine Learninghttp://www.cs.cmu.edu/~tom/mlbook.htmlhttp://en.wikipedia.org/wiki/Machine_learning

Pythonhttp://www.python.org/

Wekahttp://prdownloads.sourceforge.net/weka/weka.ppt, http://www.cs.waikato.ac.nz/ml/weka/

ZODBhttp://www.zodb.org/

Page 27: Bordese Ia Famaf 2012

Apéndice

A – Obtención de Información

Los scripts usados para extraer la información de la web pueden encontrarse en el siguiente link.

Se crearon las siguientes estructuras de datos para almacenar la informacion:• Match: Equipos que juegan un partido, resultado, fecha.• Round: Número de ronda dentro del torneo, conjunto de partidos de la ronda.• Tournament: Consta de un nombre y de un conjunto de rondas.• FootballYear: Número de año y conjunto de torneos que se jugaron ese año.

Se utilizaron regex para facilitar el parseo, de la información relevante. Pueden encontrarse en el siguiente archivo.

El parseo de la página se dividió en tres partes:• Identificar numero de rondas (11 Regex)• Identificar fechas de partidos (7 regex)• Identificar partidos (14 regex)

Se buscan todas los matches de las expresiones regulares sobre una pagina, y luego se guarda esa información en la base da datos. Es por eso importante mantener las expresiones regulares “disjuntas” (ie. un string no pueda satisfacer simultáneamente dos regex), para no agregar un partido (o fecha, o ronda) más de una vez.

Las regex se fueron agregando progresivamente. Se armó un maquinaria para poder asegurarnos que al agregar nuevas regex de partidos, fechas o rondas no se corrompieran los datos obtenidos de otros años.

Page 28: Bordese Ia Famaf 2012

Lamentablemente en el caso de los partidos no se pudo mantener las regex “disjuntas”, fue imposible mantener el código lo más general posible y diferenciar el siguiente caso:

Equipo número 1 4-3 Equipo número 2 at Cancha

Los nombres de equipos siempre son una serie de strings no nulos separados por exactamente un espacio. Sin embargo había algunos casos en que la información sobre el emplazamiento donde ocurría el partido también se encontraba separado por un espacio del nombre de un equipo.

Otro problema de inconsistencias en la presentación de la información fueron los nombres de los equipos, por ejemplo

• indepdente.• ind. avellaneda• independiente• independiente de avellaneda• independiente [A]

eran algunas de las tantas formas de referirse a Club Atlético Independiente.

Para solucionar los dos problemas arriba mencionados, se implemento un script en python que normalizá los nombres de los equipos y eliminar entradas repetidas. El mapeo de a nombres estandarizados tuvo que realizarse “a mano”.