Data Set de resultados de partidos de fútbol para su predicción (Machine Learning)


El Data Set y el código del proyecto lo puedes descargar pulsando AQUI.

Desde esta entrada atipica, damos comienzo a una nueva iniciativa que se enmarca dentro del contexto del Machine Learning  (campo de estudio que tiene como finalidad dar a los computadores la habilidad de aprender sin haber sido explicitamente programados) y que esperamos que tenga exito y seguimiento. Esta iniciativa es la publicación de un Data Set de resultados de partidos de fútbol de la liga Española de primera y segunda división desde la temporada 1970-71 hasta la actual. Se comparte un código desarrollado en python para poder "scrapear" y tener este data set actualizado y en función del seguimiento que tenga esta iniciativa se seguirá actualizando y manteniendo el código para la obtención de más resultados de fútbol.

El objetivo de publicar este Data Set es el de abrir una nueva área de investigación dentro del Machine Learning para la predicción de resultados en partidos de fútbol; a priori, arrojando un resultado en formato quiniela (1X2), aunque podría ser extensible a la predicción del resultado final.

La motivación de esta iniciativa surge como resultado del trabajo final realizo en la asigantura de "Redes Neuronales y Aplicaciones" impartida en el "Master en Ciencias y Tecnologías de la Computación" de la Universidad Politécnica de Madrid (UPM) en la que creé un sistema experto de predicción de quinielas (1X2), aplicando diferentes técnica de Machine Learning.

Con la publicación de esta Data set, se tiene como objetivo explicar en diferentes tutoriales algunas de las técnicas de Machine Learning que pueden ser aplicadas para la predicción de quinielas y también que los apasionados del Machine Learning indaguen y propongan sus técnicas y resultados para la predicción de partidos de fútbol. Todos aquellos que quieran colaborar y publicar sus experimentos y resultados en esta web explicando las técnicas y métodos utilizados, lo podrán hacer bien a través de una entrada (respetando siempre la autoria de los experimentos) o bien a través del foro (https://jarroba.com/foro/)

Data Set

El Data Set con los resultados de los partidos de fútbol se ofrece en un fichero "txt" llamado "DataSetPartidos.txt", en el que en cada linea del mismo contiene información del partido de fútbol jugado separado por los caracteres "::". El significado de cada uno de estos datos es el siguiente:

"idPartido::temporada::division::jornada::EquipoLocal::EquipoVisitante::golesLocal::golesVisitante::fecha::timestamp"

Un ejemplo de los datos de un partido de fútbol sería el siguiente:

4808::1977-78::1::8::Rayo Vallecano::Real Madrid::3::2::30/10/1977::247014000.0

La interpretación y significado de estos dato los damos a continuación:

- idPartido (4808): Un identificador único de partido.
- temporada (1977-78): Temporada en la que se jugó el partido
- division (1): División en la que se jugo el partido (Primera '1', Segunda '2')
- jornada (8): Jornada en la que se jugó el partido
- EquipoLocal (Rayo Vallecano): Nombre del Equipo Local
- EquipoVisitante (Real Madrid): Nombre del Equipo Visitante
- golesLocal (3): Goles que marcó el equipo local
- golesVisitante (2): Goles que marcó el equipo visitante
- fecha (30/10/1977): Fecha en la que se jugó el partido
- timestamp (247014000.0): Timestamp de la fecha en la que se jugó el partido

A continuación mostramos los resultados de los partidos de fútbol disputados en la primera jornada de la temporada 2014-15, en primera división:

33780::2014-15::1::1::Malaga::Athletic Club::1::0::23/08/2014::1408744800.0
33781::2014-15::1::1::Sevilla::Valencia::1::1::23/08/2014::1408744800.0
33782::2014-15::1::1::Granada::Deportivo::2::1::23/08/2014::1408744800.0
33783::2014-15::1::1::Almeria::Espanyol::1::1::23/08/2014::1408744800.0
33784::2014-15::1::1::Eibar::Real Sociedad::1::0::24/08/2014::1408831200.0
33785::2014-15::1::1::Celta de Vigo::Getafe::3::1::24/08/2014::1408831200.0
33786::2014-15::1::1::Barcelona::Elche::3::0::24/08/2014::1408831200.0
33787::2014-15::1::1::Levante::Villarreal::0::2::24/08/2014::1408831200.0
33788::2014-15::1::1::Real Madrid::Cordoba::2::0::25/08/2014::1408917600.0
33789::2014-15::1::1::Rayo Vallecano::Atletico de Madrid::0::0::25/08/2014::1408917600.0

Se ha optado por publicar este Data Set en este formato, ya que es un formato sencillo, similar al de otros data set como los de MovieLens y Netflix para los sistemas de recomendación. Al tener este formato es muy sencillo de parsearlo sea cual sea el lenguaje de programación que se utilice para crear el sistema experto en predicción de resultados.

Para cualquier colaboración, propuesta, mejora, etc. por favor ponerse en contacto con nosotros a través del correo jarrobaweb@gmail.com o a través del foro.

Comparte esta entrada en:
Safe Creative #1401310112503
Data Set de resultados de partidos de fútbol para su predicción (Machine Learning) por "www.jarroba.com" esta bajo una licencia Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Creado a partir de la obra en www.jarroba.com

8 thoughts on “Data Set de resultados de partidos de fútbol para su predicción (Machine Learning)”

  1. Muy bien artículo, pero un comentario: he leído mucho sobre el tema pero todavía no he encontrado a nadie que haya conseguido una buena predicción. El machine learning está de moda (incluso quieren predecir los Oscar, sin ir más lejos: https://www.youtube.com/watch?v=-c_gjy4unIg) y está bien la investigación, pero creo que o no contamos con la suficiente tecnología o no tenemos todavía suficientes datos como para conseguir un algoritmo sustancialmente fiable. Aun así, estoy a tope con la investigación sobre el tema y me ha interesado mucho tu artículo. Veo que se escribió hace unos años, ¡así que espero que el modelo haya ido perfeccionándose! Un saludo.

  2. Hola Alex

    Muchas gracias por tu código, está muy bien para recoger los datos pero hay algo que me pierdo. Para poder diseñar la red neuronal y que tengamos una predicción debería de poner, al llamar al modelo, los datos de goles a favor y en contra y otros datos que no tenemos. No estoy muy avanzado en deep learning. Pero como hacías para predecir? con que datos si el modelo tiene más de los que puedes saber?

    Gracias

  3. Hola,

    Quería saber si finalmente habéis publicado artículos para la predicción de resultados a través de Machine Learning y dónde puedo encontrar estos artículos. Gracias

    Un saludo

  4. Buenas, mi grupo de trabajo y yo estamos interesados en implementar ese predictor de resultados para la quiniela. Estamos empezando, pero nos gustaría saber cual crees que puede ser la mejor forma de clasificar estos datos para obtener unos resultados aceptables. 

    Muchas gracias.

  5. Hola Richard!

    La verdad es que este tema me interesa muchísimo. Yo quería implementar algo similar, de hecho, he realizado el máster en tratamiento estadistíco computacional de la información, que también se imparte en la Politécnica, y he visto similitudes pues he cursado Redes Neuronales.

    De todos modos soy un fanático del fútbol, me gustaría saber el programa con el que has utilizado estos modelos de predicción.

    Y si conoces algún sitio donde poder descargar bases de datos de todos los deportes.

    Saludos!

    David

  6. Interesante area de aplicacion para este tipo de algoritmos 🙂

    Que indice de aciertos dieron los resultados de salida de tu trabajo final, aplicando como entradas esta completa base de datos?

    Veo que como variables solo utilizabas los resultados de partidos anteriores? no añadiste otras variables como presupuestos economicos de los equipos para cada temporada?

    A mi me comenzo a picar la curiosidad hace unos dias por estos temas, y tu base de datos sera de utilidad para pruebas y experimentos que pueda realizar, si el tiempo me lo permite.

    Te indico un foro que he encontrado interesante, y tal vez te guste.

    Secciones quinielísticas » Matemáticas:  http://www.foro1x2.com/viewforum.php?f=33&sid=f16eacff9abad6cdafa8f63e3d87deb1

    Publicaste mas información sobre el trabajo final que realizaste? transparencias explicativas de los metodos usados, experimentos y resultados obtenidos?

    Un saludo y gracias.

     

    1. Hola Alex.

      En primer lugar gracias por el enlace al foro sobre quinielas. Lo he visto un poco por encima y por lo que veo tratan mucho el tema de la probabilidad. Yo en mi caso le di una visión más discriminativa que generativa (o probabilistica) a mi sistema experto, pero como ahora te contare mi idea es probar con alguna red bayesiana para ver que resultados me puede dar, aunque no confio mucho en ello 😉

      Sobre el tema de los resultados, hice varios experimentos. Por un lado dividia en dataset en un 80% para el entrenamiento y el otro 20% como datos de test y de esa forma sacaba entorno al 60-65% de aciertos (haciendo quiniela simple). Decir que esto no esta nada mal ya que por estadisticas ví que el 57% de los resultados se repiten de un año a otro y entorno al 50% de los resultados es un '1' y el otro 50% son 'X' o '2', lo cual daba mejores resultados que por estadistica. De todas formas me dí cuenta que cogia muchos datos de test ya que la quiniela son 15 partidos y con datos de test tenia muchisimos más a parte que dependia mucho de los partidos que cogiese como test, ya que hay partidos (los del Barça y Real Madrid) que son fáciles de predecir y la tasa de acierto es muy alta y otros que son más dificiles de predecir y la tasa de acierto es muy baja. Lo que quiero decir con esto es que al coger los datos de test al azar, si habia muchos partidos fáciles de predecir tenia tasas de acierto de más de 75% y si tenia partidos dificiles de predecir tenia unos porcentajes de acierto del 55%. Por eso hay que probarlo con quinielas correctas en los que haya el mismo numero de partidos faciles de predecir (los del Barça y Real Madrid, salvo que se enfrenten entre ellos) y partidos dificiles de predecir como por ejemplo un Mirandes-Ponferradina o un Rayo-Getafe. Decir que cuando esto lo aplico a las quinielas suelo tener un acierto medio de 10 resultados (el pleno al 15 también lo cuento) y el mejor resultado que tuve fueron 13 aciertos (aunque cobre como 12 aciertos ya que acerté el pleno al 15 y ese no cuenta).

      Sobre las técnicas a utilizar, decir que la motivación surgio por un profesor de mi universidad que hizo esto mismo con redes neuronales, pero la verdad que no es una buena técnica ya que hay que obtener la mejor arquitectura de la red posible y a parte, al separar la red neuronal en hiperplanos, no tiene en cuenta los partidos que los equipos juegan como visitantes; es decir, que si hay que predecir un Rayo-Getafe, la red neuronal no tendrá en cuenta el resultado del partido Getafe-Rayo que en mayor o menor medida es un resultado a tener en cuenta, por tanto mi idea fue hacer un sistema que tuviese encuenta estos partidos.

      En mi caso me definí una métrica (aplicando regresión lineal múltiple) para que diese una importantancia a los partidos de fútbol que debería tener en cuenta para predecir los partidos; es decir, que si tenia que predecir un Rayo-Getafe, debia de darle importancia a últimos partidos del Rayo como local y a los últimos partidos del Getafe como visitante. Evidentemente la importancia estaba ligada a la jornada; es decir, que cuanto más reciente es el partido más importancia tenia. De esta forma miraba un poco la "racha" que tenian los equipos de fútbol en las últimas jornadas.

      Con esta importancia asignada a cada partido, me cogia los 'n' partidos más relevantes (aplicando la técnica de los Knn) y con sus resultados y haciendo una media ponderada sacaba un 'numero' y en función de ese número o factor (haciendo un estudio de estos) le asignaba el resultado '1X2'.

      Esto fué un poco lo que hice al principio. Luego lo fui mejorando o haciendo experimentos, pero no tenia mucho tiempo y como no llevaba un control de versiones ni lo iba documentando (MUY MAL POR MI PARTE 😉 ) nose ahora mismo que es lo último ue hice ni nada. De cualquier forma, he publicado este dataset para que la gente colabore en la medida de lo posible y obligarme un poco a retomar este área. Intentare buscar (en breve) el primer sistema experto que hice y hacer una entrada en la web explicandolo, aunque no se lo que tarderé en hacerlo por falta de tiempo.

      Bueno Alex muchas gracias por el interes y por la aportación del foro. Cualquier cosa aqui nos tienes.

      SL2

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies