Está en la página 1de 77

TRABAJO FINAL DE GRADO

Grado en Ingeniería Mecánica

ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS


DE BALONCESTO

Memoria y Anexos

Autor: Luis Moncosí Linares


Director: Pablo Buenestado Caballero
Co-Director: Jose Francisco Domínguez Sevilla
Convocatoria: Otoño 2020-2021
ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS DE BALONCESTO

Resumen
Este trabajo explica y pone en práctica los pasos a seguir en un proyecto de minería de datos. El
presente proyecto está realizado de tal manera que la información explicada sea comprensible
tanto para primerizos como expertos en la materia. El objetivo principal es predecir el resultado de
encuentros de baloncesto de la Liga profesional española. Para lograr el objetivo se hace una
introducción a la minería de datos y sus diferentes metodologías. Se escoge una metodología y se
aplica al trabajo. Desde el inicio hasta el final se personaliza la metodología al interés del objetivo
principal. Se estudiará y pondrá en práctica la obtención, la manipulación y el análisis de datos.
También se modelizarán los datos y se aplicarán técnicas de machine learning como la regresión
logística o el bosque aleatorio. La modelización de datos consiste en crear nuevos datos a partir de
los datos que obtenemos de la fuente. Además de las técnicas de machine learning, se estudian y
aplican métricas de evaluación en los resultados para saber la eficacia de nuestro algoritmo. Queda
decir que la parte práctica está desarrollada mediante el lenguaje de programación de Python,
destacando las librerías pandas, numpy y SciKit-Learn.

i
Memoria

Resum

Aquest treball explica i posa en pràctica els passos a seguir en un projecte de mineria de dades. El
present projecte està realitzat de tal manera que la informació explicada sigui comprensible tant
per a novells com a experts en la matèria. L'objectiu principal és predir el resultat de partits de
bàsquet de la Lliga professional espanyola. Per a aconseguir l'objectiu es fa una introducció a la
mineria de dades i les seves diferents metodologies. Es tria una metodologia i s'aplica al treball. Des
de l'inici fins al final es personalitza la metodologia a l'interès de l'objectiu principal. S'estudiarà i
posarà en pràctica l'obtenció, la manipulació i l'anàlisi de dades. També es modelitzen les dades i
s’apliquen tècniques de machine learning com la regressió logística o el bosc aleatori. La
modelització de dades consisteix a crear noves dades a partir de les dades que obtenim de la font.
A més de les tècniques de machine learning, s'estudien i apliquen mètriques d'avaluació en els
resultats per a saber l'eficàcia del nostre algorisme. Queda dir que la part pràctica està
desenvolupada mitjançant el llenguatge de programació Python, destacant les llibreries pandes,
numpy i SciKit-Learn.

ii
ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS DE BALONCESTO

Abstract

This paper explains and implements the steps to follow in a data mining project. The present project
is made in such a way that the information explained is understandable for both first time users and
experts in the field. The main goal is to predict the outcome of basketball matches in the Spanish
professional league. To achieve this aim, an introduction to data mining and its different
methodologies is made. A methodology is chosen and applied to the work. From the beginning to
the end the methodology is customized to the interest of the main objective. The collection,
manipulation and analysis of data will be studied and put into practice. The data will also be
modelled and machine learning techniques such as logistic regression or random forest will be
applied. Data modelling consists of creating new data from the data we obtain from the source. In
addition to the machine learning techniques, evaluation metrics are studied and applied to the
results in order to know the effectiveness of our algorithm. The practical part is developed using
the Python programming language, highlighting the libraries pandas, numpy and SciKit-Learn.

iii
Memoria

iv
ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS DE BALONCESTO

Agradecimientos
Después de un intenso período de 5 meses, hoy es el día: escribo este apartado de agradecimientos
para finalizar mi trabajo de fin de grado. Ha sido un período de aprendizaje intenso, no solo en el
campo técnico, sino también a nivel personal. Realizar este trabajo ha tenido un gran impacto en
mí y es por eso que me gustaría agradecer a todas aquellas personas que me han ayudado y
apoyado durante este proceso.
Primero de todo, me gustaría agradecer a mis compañeros del colegio, donde estudiábamos
cuando éramos pequeños, por su colaboración. Me habéis apoyado enormemente y siempre
habéis estado ahí para ayudarme cuando lo necesitaba. Particularmente me gustaría nombrar a mi
colega Jandro que fue quien me introdujo y enseñó los primeros pasos en la materia. Me gustaría
agradecer también los consejos de otro Alejandro, un experto en data science que conocí por
casualidad.
Además, me gustaría darles las gracias a mis tutores Pablo Buenestado y Jose Domínguez, por su
valiosa ayuda.
También me gustaría agradecer a mis padres y hermana por sus sabios consejos y su comprensión.
Siempre habéis estado ahí para mí. A mi jefa de la empresa actual donde trabajo, por esos tips tan
desatascadores.
Por último, agradecer a Laura su sabiduría, paciencia e intelecto que tanto me han ayudado a
desarrollar un trabajo con el que estoy muy satisfecho.

Muchas gracias a todos.

v
Memoria

vi
ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS DE BALONCESTO

Glosario
Asist Asist hace referencia a un pase del balón que acaba en canasta. El nombre
completo es asistencia.

Equipo Nombre o identificador de un grupo de jugadores que compiten unidos.

Falta_favor Infracción de reglamento cometida por un jugador del equipo adversario.

Falta_contra Infracción de reglamento cometida por un jugador sobre el adversario.

Jornada Indica el número de partidos que un equipo lleva jugados hasta la fecha.
Por ejemplo, un equipo en la jornada 11 significa que lleva once partidos
jugados.

Mates Tipo de canastas de dos puntos que consiste en un tiro cerca del aro y
meter el balón dentro del aro con una o dos manos.

Pérdidas Número de pelotas perdidas por un equipo cuando tienen la posesión del
balón.

Puntos Suma de todas las canastas a lo largo de un encuentro de baloncesto.

Resultado 1 si es victoria y 0 si es derrota indica que equipo ha anotado más que el


otro.

Rebotes Balones capturados después de un tiro o canasta fallada.

Robos Número de pelotas recuperadas por un equipo cuando tiene la posesión


del balón.

Tapones_favor Bloquear el lanzamiento a canasta de un jugador del equipo contrario.

Tapones_contra Bloqueos del lanzamiento a canasta recibidos por el equipo contrario.

t2% Porcentaje de tiros de 2 indica cuantas canastas de dos se han acertado


respecto a las intentadas.

t3% Porcentaje de tiros de 3 indica cuantas canastas de tres se han acertado


respecto a las intentadas.

t1% Porcentaje de tiros de 1 indica cuantas canastas de uno se han acertado


respecto a las intentadas.

vii
Memoria

Valoración Se trata de una estadística que recoge varias estadísticas. Su fórmula es la


siguiente:
(Puntos, rebotes, asistencias, robos, faltas_favor, tapones_favor)
- (tiros fallados, pérdidas, tapones_contra y faltas_contra).

_local Extensión que acompaña a las variables para indicar que pertenece
al equipo que juega en casa.

_visitant Extensión que acompaña a las variables para indicar que pertenece
al equipo que juega fuera de casa.

+/- Estadística individual que contabiliza la diferencia de marcador cuando un


jugador está en pista, es decir, los puntos que mete menos los que le
meten.

viii
ANÁLISIS, MODELIZACIÓN Y PREDICCIÓN DE PARTIDOS DE BALONCESTO

Índice
RESUMEN _________________________________________________________ I

RESUM ___________________________________________________________ II

ABSTRACT _______________________________________________________ III

AGRADECIMIENTOS _________________________________________________V

GLOSARIO _______________________________________________________VII

1. PREFACIO ____________________________________________________ 1
1.1. Origen del trabajo .........................................................................................................1
1.2. Motivación..................................................................................................................... 1
1.3. Requerimientos previos ................................................................................................ 2

2. INTRODUCCIÓN _______________________________________________ 3
2.1. Objetivos del trabajo .....................................................................................................3
2.2. Alcance del trabajo........................................................................................................3
2.3. Facilidad para pronosticar............................................................................................. 4
2.4. Reglas básicas del baloncesto ....................................................................................... 5
2.5. La Liga Endesa ...............................................................................................................6

3. MINERÍA DE DATOS ____________________________________________ 9


3.1. Metodologías para la minería de datos ......................................................................10
3.1.1. SEMMA ............................................................................................................ 11
3.1.2. KDD .................................................................................................................. 12
3.1.3. CRISP-DM ......................................................................................................... 13

4. PREPARACIÓN Y ANÁLISIS DE LOS DATOS __________________________ 16


4.1. Fuente de datos...........................................................................................................16
4.2. Web scraping...............................................................................................................18
4.3. Preparación de los datos.............................................................................................20
4.4. Análisis de datos ..........................................................................................................25
4.4.1. Resultados de la investigación ........................................................................ 25
4.4.2. Matriz de correlación ...................................................................................... 32
4.4.3. Training and testing ......................................................................................... 35

5. MODELIZACIÓN_______________________________________________ 37
5.1. Massey Rating .............................................................................................................37

ix
Memoria

5.2. Regresión Logística ......................................................................................................40


5.3. Bosques Aleatorios......................................................................................................41

6. MÉTRICAS DE EVALUACIÓN _____________________________________ 45


6.1. Matriz de confusión ....................................................................................................45
6.2. Exactitud ......................................................................................................................46
6.3. Precisión ......................................................................................................................47
6.4. Recall…………………………………………………………………………………………………………………..47

7. RESULTADOS _________________________________________________ 49
7.1. Resultados Regresión Logística ...................................................................................49
7.2. Resultados Bosque Aleatorio ......................................................................................51

8. ANÁLISIS DEL IMPACTO AMBIENTAL ______________________________ 54

9. PLANIFICACIÓN _______________________________________________ 55

CONCLUSIONES ___________________________________________________ 57

DAFO ___________________________________________________________ 59

PRESUPUESTO ____________________________________________________ 61

BIBLIOGRAFÍA ____________________________________________________ 63

ANEXO __________________________________________________________ 65
Anexo Código Programación ................................................................................................65
Anexo Excel y Otros...............................................................................................................65

x
1. Prefacio

1.1. Origen del trabajo

La idea de este trabajo empieza a coger forma tras realizar una asignatura optativa de estadística
avanzada y trabajar en una empresa multinacional. La asignatura optativa de estadística me
entusiasmó y me hizo ver el amplio abanico de campos que puede tocar esta materia. También, las
practicas que realicé durante el curso en una empresa multinacional me confirmaron la importancia
de la información y los datos en la etapa actual de nuestra sociedad. De modo que decidí conectar
la estadística y el deporte, en este caso el baloncesto, para crear la idea de un trabajo final de grado
sobre estadística deportiva. Ser capaz de predecir el resultado final de un partido de baloncesto
será uno de mis objetivos principales.

1.2. Motivación

Se puede estar más o menos de acuerdo, pero a la vista está que la industria y el mundo en general
está entrando en una nueva era, la era de la información y los datos. Nadie queda exento de ello.
Pequeños negocios, grandes empresas y fábricas son capaces de recolectar grandes cantidades de
información para usarla como soporte en la toma de decisiones. De modo que, ¿por qué no
aprender las entrañas del mundo del bigdata antes de finalizar el grado y salir al mundo laboral?
Como he comentado anteriormente, la estadística y los datos pueden ayudar mucho en la toma de
decisión.

Personalmente, el baloncesto ha sido una de mis pasiones desde que tengo 5 años y he decidido
juntarlo con la estadística y el proyecto considerando que me puede dar una motivación extra para
que salga un trabajo excelente y de interés. Son muchos los partidos de baloncesto que he visto, la
mayoría de ellos respaldados por la estadística para profundizar más y entender porque estaban
sucediendo algunos eventos.

Con la realización de este trabajo quiero adentrarme en el mundo de la estadística deportiva


aplicada al baloncesto.

1
Pág. 2 Memoria

1.3. Requerimientos previos

Este trabajo precisa unos conocimientos previos de programación. Si bien en las ingenierías se ha
trabajado con algunas herramientas en su modo más básico, este trabajo requiere de
conocimientos avanzados de lenguajes de programación como de algunos conceptos estadísticos
muy especializados en el ámbito de la estadística deportiva. Para formar unas bases sólidas, es
indispensable la lectura de algunos libros (Oliver 2004) así como la visualización de cursos de
programación online («freeCodeCamp.org - YouTube»). La autoformación a lo largo de este
proyecto será imprescindible. Como en todo trabajo, la información al alcance sobre la temática del
proyecto es infinita, por ello se requerirá la habilidad de filtrar información y usar solo la
información de más valor.

2
2. Introducción

2.1. Objetivos del trabajo

Los objetivos principales del trabajo son los siguientes: extraer y preparar datos, valorar conceptos
estadísticos aplicados en la predicción deportiva y modelizar los partidos de baloncesto con el fin
de pronosticar los resultados de los encuentros.

Estos objetivos principales son parte de una ciencia llamada minería de datos. La minería de datos
y el estudio de la misma será también uno de los objetivos de nuestro trabajo ya que, al ser una
ciencia que incluye diferentes metodologías, deberemos decantarnos por una de ellas para poder
desarrollar el proyecto. De modo que previamente a los objetivos principales empezaremos con la
ciencia de la minería de datos.

El orden de ejecución de las principales metas será tal y como se ha escrito en el párrafo superior.
Inicialmente indagaremos y elegiremos la metodología de minería de datos. El primer objetivo, la
extracción y preparación de los datos, engloba requerimientos previos como la comprensión de la
fuente de datos, su estructura, su manipulación y el almacenamiento. Seguidamente, el estudio y
la realización del método predictivo constituirá una parte práctica importante donde veremos
cómo se aplican algoritmos inteligentes para pronosticar eventos futuros. Entender cómo
funcionan estos algoritmos inteligentes, alimentarlos de la información estructurada y obtener un
resultado engloban una parte de peso en el trabajo. Dentro de este último objetivo, se adhiere uno
muy importante como es la validación y valoración de los resultados obtenidos. Si se consiguen
extraer unas buenas conclusiones de los resultados obtenidos en cada parte del trabajo, aunque
los resultados no sean los esperados o favorables, los objetivos se podrán considerar como
cumplidos y tendremos un aprendizaje validado que nos permitirá en un futuro tomar mejores
decisiones.

2.2. Alcance del trabajo

Este trabajo pretende llegar a todos los apasionados del baloncesto, para tratar de entender mejor
la gran cantidad de datos estadísticos que se genera en cada uno de los encuentros. Entrenadores,
jugadores o espectadores podrán ver en este trabajo como los sucesos de los partidos ya jugados
pueden darnos patrones claros y concisos sobre partidos futuros. También, es un trabajo de interés
para los “data science” y profesionales de la estadística puesto que explicaremos y aplicaremos
conceptos que forman parte de sus áreas competentes.

3
Memoria

En este trabajo seguiremos los pasos del proceso que intenta descubrir patrones en grandes
volúmenes de conjuntos de datos, la minería de datos. Dentro del proceso de minería de datos
encontraremos algunos de los objetivos principales de este trabajo. La liga de baloncesto que será
objeto de nuestra investigación es la Liga Endesa, la liga profesional de baloncesto español.
Asimismo, es importante nombrar nuestro lenguaje principal de programación que nos ayudara a
desarrollar toda la parte práctica del proyecto. El lenguaje de programación en cuestión es Python.

2.3. Facilidad para pronosticar

Son muchos los expertos que se dedican a crear programas para pronosticar diferentes deportes.
Sin embargo, la estadística nos confirma que el baloncesto es el deporte más predecible de entre
todos los deportes mundiales. Existen numerosos debates sobre el ranking de deportes más fáciles
de predecir, pero si en algo coinciden todos es en que el baloncesto es el que mejor resultado da a
la hora de pronosticar. El baloncesto es más plano en comparación con otros deportes de equipo
como el fútbol, fútbol americano, baseball o hockey. Con plano se refiere a que el baloncesto tiende
a seguir las medias de un equipo a lo largo de una temporada, y en caso de haber variaciones no
son muy significantes en comparación al resto de deportes que pueden ser más accidentados. Un
ejemplo práctico es el siguiente: en el fútbol basta con un gol en el último minuto para ganar el
encuentro, ya puede ser que un equipo chute 15 veces a portería que si el contrario chuta una vez
con éxito gana el encuentro. Por otro lado, en el baloncesto se requiere un tiro y una defensa cada
determinado tiempo, aumentando en un partido el número de jugadas, en consecuencia, la
necesidad de acertar más jugadas para ganar aumenta.

Muchos aspectos del baloncesto juegan a favor de su pronóstico. Además del dinamismo del juego,
que como hemos comentado anteriormente ayuda a que el número de jugadas por encuentro sea
elevado, las características del campo y las diferentes formas de puntuación permiten que la
estadística juegue un papel importante en este deporte.

Las plantillas de baloncesto están compuestas por un máximo de 12 jugadores, históricamente solo
7-10 juegan regularmente a lo largo de la temporada. Por contraste, en las ligas profesionales de
fútbol americano puede haber una plantilla de hasta 53 jugadores. Ataque y defensa están
confeccionados por diferentes jugadores en fútbol, fútbol americano, baseball y hockey mientras
que los jugadores de baloncesto son responsables de ambos aspectos mientras estén en la cancha.

4
La presencia de un jugador en varias áreas del juego hace que la figura de la estrella en las ligas de
baloncesto sea vital, y es que, si un jugador es capaz de dominar el ataque y la defensa de su equipo,
también su equipo será capaz de ganar partidos y ser un duro rival a batir.

Por las razones expuestas anteriormente el proyecto se centra en el baloncesto como deporte a
predecir. El jugador tiene relevancia total en todos los aspectos del juego debido al diseño de este
y de ello nos aprovecharemos para obtener buenos resultados en este trabajo.

2.4. Reglas básicas del baloncesto

En este trabajo vamos a estudiar el baloncesto con el objetivo de predecir encuentros a partir de
datos del pasado. Un primer paso es entender las bases del deporte que fue inventado en 1891 por
un profesor canadiense y que ahora es uno de los deportes más practicados y vistos del mundo.

El baloncesto es un deporte excitante y de ritmo donde dos equipos se enfrentan cara a cara con el
único objetivo de lanzar un balón en el aro rival para anotar puntos. Un equipo gana cuando al final
del tiempo reglamentario ha anotado más puntos que su rival. En el baloncesto no es posible el
empate, de modo que probabilísticamente cada equipo tiene un 50% de probabilidades de ganar.
Gana el equipo A o gana el equipo B.

Cada equipo puede tener un máximo de 12 jugadores, pero solo 5 jugadores en cancha por equipo.
Un partido de la Liga Endesa dura 40 minutos y está divido en 4 cuartos de 10 minutos cada uno.
Como se ha comentado anteriormente, el empate es imposible y por ello si se llega al final del
tiempo reglamentario sin que ninguno de los dos equipos se haya hecho con la victoria, se añadirán
5 minutos extras para que un equipo supere al otro en anotación.

Cada partido se iniciará con un salto entre dos jugadores en el medio del campo. Los equipos tienen
diferentes formas de anotación: tiros de 1 punto (tiros libres), tiros de 2 puntos y tiros de 3 puntos
(triples). A continuación, se verá con más claridad en la ilustración 1.

5
Memoria

Ilustración 1. Puntuación según la zona de tiro («International Basketball Federation (FIBA) - FIBA.basketball»)

Los tiros de un punto se consiguen después de que se cometa una falta sobre un jugador con
intención de anotar. Una falta se produce cuando existe un contacto ilegal entre rivales, pudiendo
ser tanto de tipo defensiva u ofensiva.

Cada jugador puede cometer hasta un máximo de 5 faltas por partido, siendo la quinta falta motivo
de expulsión. A nivel de equipo, cada uno de ellos puede cometer hasta 4 faltas por cuarto sin
penalización. En el caso de que esas 4 faltas se superen, cada falta extra será penalizada con dos
tiros libres para el rival.

También cabe añadir que los equipos tienen un máximo de 24 segundos para lanzar a la canasta
contraria. Si tras el tiro obtienen un rebote ofensivo dispondrán de 14 segundos más para conseguir
realizar otro tiro.

Estas normas son las básicas y más genéricas que afectarán a nuestro análisis. Por último, se debe
tener en cuenta que 3 árbitros se encargan de que se cumplan las normas.

2.5. La Liga Endesa

La competición de la cual sacaremos los datos de estudio es la Liga Endesa, popularmente conocida
como liga ACB. La liga profesional de baloncesto española está compuesta por 18 equipos, 17 de
las diferentes regiones del país y un equipo del país vecino, Andorra.

Los datos que recogeremos serán de la temporada 2018-2019 por el simple motivo que es la más
reciente sin parones por motivos epidemiológicos.

6
Ilustración 2. Evolución del logo de la liga («La ACB estrena nueva imagen corporativa»)

La liga ACB («Liga ACB - Wikipedia, la enciclopedia libre») se empezó a jugar en el año 1957 donde
los 18 equipos se enfrentaban entre sí a lo largo de una temporada en una fase regular de ida y
vuelta. La liga ACB era una la liga controlada por la Federación Española de Baloncesto (FEB). No
fue hasta el 1983 cuando los equipos españoles decidieron independizarse de la FEB y crear su
propia liga sin dependencia de ningún organismo nacional. Fue entonces cuando además de la fase
regular se incorporó una fase final donde los equipos se jugarían el título por eliminación. Esta fase
final la juegan solo los 8 primeros equipos y se denomina Play-off. En nuestro proyecto
trabajaremos con la fase regular compuesta por 18 equipos y 34 jornadas.

En esta liga hay que tener varios aspectos en cuenta, y es que muchos de los equipos top juegan
una liga europea paralela entre semana, cuyos datos no tendremos en cuenta ya que se enfrentan
a equipos de otras ligas europeas. Además, al final de la primera vuelta los 8 mejores equipos
disputan un campeonato de una semana llamado la Copa del Rey, cuyos resultados tampoco
tendremos en cuenta en nuestro estudio.

En cada jornada, 9 equipos jugarán como locales y 9 equipos jugarán como visitantes, lo que
conlleva un desplazamiento extra para jugar el partido.

Pese a no tener en cuenta la fase final en nuestro estudio, sí que es cierto que esa fase final puede
influir en algunos de nuestros resultados. Puede haber equipos que lleguen a la parte final de la liga
regular sin opciones de entrar en los Play-off y en esos partidos sucedan, estadísticamente
hablando, cosas que no habían sucedido a lo largo de la temporada. O contrariamente, equipos
que en las últimas jornadas tengan un plus de motivación en sus partidos ya que está en juego
entrar en los play-off o no.

7
Memoria

Serán muchos los detalles y variables a tener en cuenta de esta apasionante liga de baloncesto y
más apasionante es hacer la predicción de una liga que no está tan explotada como otras en el
ámbito del pronóstico.

8
3. Minería de datos
La minería de datos, también conocida como exploración de datos, es un campo de la estadística y
las ciencias de la computación. La minería de datos se creó como un proceso que intenta descubrir
patrones en grandes volúmenes de datos. Para lograr su objetivo hace uso de la inteligencia
artificial, el aprendizaje automático, la estadística y los sistemas de bases de datos.

Según un estudio revelado en 2017, se descubrió que el 90% de los datos mundiales son posteriores
al 2014 y su volumen se duplica cada 1,2 años. Sin embargo, los orígenes de la minería de datos se
pueden establecer a principios de la década de 1980, cuando la administración de hacienda
estadounidense desarrolló un programa de investigación para detectar fraudes en la declaración y
evasión de impuestos, mediante lógica difusa, redes neuronales y técnicas de reconocimiento de
patrones. Sin embargo, la gran expansión de la minería de datos no se produce hasta la década de
1990 originada principalmente por tres factores:

 Incremento de la potencia de los ordenadores.


 Incremento del ritmo de adquisición de datos. El crecimiento de la cantidad de datos
almacenados se ve favorecido no sólo por el abaratamiento de los discos y sistemas de
almacenamiento masivo, sino también por la automatización de muchos trabajos y
técnicas de recogida de datos.
 Aparición de nuevos métodos de técnicas de aprendizaje y almacenamiento de datos.

En este contexto, entra en el juego el big data. Llegados a este punto, es necesario diferenciar entre
minería de datos y big data. La minería de datos es una práctica estratégica para conseguir un fin y
el big data representa al conjunto de tecnologías creadas para almacenar, analizar y gestionar datos
masivos.

La creciente necesidad de estandarizar un proceso para la realización de proyectos de minería de


datos llevó a varias empresas a aliarse con el fin de crear un proceso de modelado para guiar al
usuario a través de una sucesión de pasos que le dirigiesen a obtener buenos resultados. Así SAS
(«SAS Help Center: Introduction to SEMMA») propone el uso de la metodología SEMMA (Sample,
Explore, Modify, Model, Assess), en 1996 Fayyad (Fayyad, Piatetsky-Shapiro y Smyth 1996) propone
la metodología KDD (Knowledge Discovery in Databases) y en 1999 un importante consorcio de
empresas europeas unieron sus recursos para el desarrollo de la metodología de libre distribución
CRISP-DM (CrossIndustry Standard Process for Data Mining).

A continuación, se explicarán los pasos de las diferentes metodologías y con cual trabajaremos
nosotros.

9
Memoria

3.1. Metodologías para la minería de datos

En este apartado se estudiarán las tres metodologías más dominantes en el mundo de la minería
de datos para finalmente escoger una para realizar este trabajo. Las metodologías más importantes
son las comentadas en el apartado anterior: SEMMA, KDD y CRISP-DM (Shafique y Qaiser 2014).

Previo a describir las características de cada método echaremos un vistazo a la popularidad y


frecuencia de uso de los mismos. Las encuestas más recientes que hemos encontrado datan de los
años 2007 y 2014. Pese a no ser muy actuales, marcan una tendencia que nos puede dar una idea
de cuál es la más utilizada a día de hoy.

Ilustración 3. Resultados encuesta metodología más utilizada («Machine Learning, Data Science, Big Data, Analytics, AI»)

En la ilustración 3 se puede observar como CRISP-DM ha sido la metodología dominante, mientras


que SEMMA y KDD son utilizadas por una minoría que cada vez se hace más pequeña. Además, se
aprecia como desde el año 2007 al 2014 ha habido un incremente en el uso de metodologías
propias.

Seguidamente, se describirán las características de las 3 más conocidas y se dará a conocer con cuál
de ellas se sustentará el proyecto final de grado.

10
3.1.1. SEMMA

SEMMA es el acrónimo de las cinco fases que componen este proceso: Sample, Explore, Modify,
Model y Assess. Esta metodología fue propuesta por la empresa de software empresarial SAS
Institute Inc, la define como proceso de selección, exploración y modelado de grandes cantidades
de datos para descubrir patrones de negocios desconocidos.

El SAS Instituto considera un ciclo con 5 etapas para el proceso:

1. Muestreo: Esta etapa consiste en muestrear los datos extrayendo una porción de un gran
conjunto de datos lo suficientemente grande como para contener la información
significativa, pero lo suficientemente pequeña para manipularla rápidamente. Esta etapa
se considera opcional.
2. Exploración: Esta etapa consiste en la exploración de los datos mediante la búsqueda de
tendencias no anticipadas y las anomalías con el fin de entender mejor los datos e extraer
algunas ideas.
3. Modificación: Esta etapa consiste en la modificación de los datos mediante la creación,
selección y transformación de las variables para enfocar el proceso de selección del
modelo.
4. Modelado: Esta etapa consiste en modelar los datos permitiendo que el software busque
automáticamente una combinación de datos que prediga de forma fiable un resultado
deseado.
5. Evaluación: Esta etapa consiste en examinar los resultados obtenidos mediante la
evaluación, su utilidad y la fiabilidad de los hallazgos del proceso de extracción de datos.

Ilustración 4. Fases de la metodología SEMMA (elaboración propia)

11
Memoria

3.1.2. KDD

El proceso de KDD (Knowledge Discovery in Databases) es interactivo e iterativo, que implica


numerosos pasos con muchas decisiones tomadas por el usuario. Los siguientes pasos se remarcan
como los básicos para llevar a cabo el método:

1. El primero es desarrollar una comprensión total del dominio de la aplicación e identificar


un objetivo para nuestro proceso desde el punto de vista del cliente.
2. El segundo es crear un conjunto de datos objetivos. Seleccionar un conjunto de datos, o
centrarse en un subconjunto de variables o muestras de datos, el cual nos permita
descubrir cosas.
3. El tercer paso es la limpieza y el procesamiento de datos. Las operaciones básicas incluyen
la eliminación de ruido si es necesario, recolectar información necesaria para modelar y
decidir qué estrategia seguir para manejar posibles campos de datos que nos falten.
4. El cuarto es la reducción y proyección de los datos: encontrar funciones útiles para
representar los datos dependiendo del objetivo. Con los métodos de reducción o
transformación de la dimensionalidad, el número efectivo de variables puede reducirse
considerablemente, o encontrar representaciones invariables de los datos.
5. El quinto paso consiste en unir el objetivo del proceso, definido en el primer paso, con un
método particular de minería de datos. Como por ejemplo la regresión.
6. El sexto es el análisis exploratorio y la selección de hipótesis: se debe elegir el algoritmo o
los algoritmos de extracción de datos y seleccionar los métodos que serán usados para la
búsqueda de patrones de datos.
7. El séptimo es la minería de datos: la búsqueda de patrones de interés que estén
representados en una forma determinada incluyendo reglas, árboles de decisión, regresión
y agrupamiento.
8. El octavo paso se centra en interpretar los patrones encontrados, con la posibilidad de
volver a cualquiera de los pasos anteriores realizando iteraciones para mejorar e
interpretar mejor los patrones.
9. El último paso es actuar sobre el conocimiento descubierto: usar el conocimiento
directamente, incorporar el conocimiento en otro sistema para medidas adicionales o
simplemente documentarlo. Este proceso también incluye la revisión y la resolución de
posibles conflictos entre los nuevos conocimientos y los antiguos.

El proceso de KDD puede implicar importantes iteraciones y bucles entre diferentes pasos del
proceso. En la ilustración 5 se muestra el flujo básico de pasos. La gran mayoría de proyectos sobre
el KDD se ha centrado en el paso número siete. Sin embargo, los otros pasos son tan importantes
como el séptimo para la aplicación exitosa del KDD.

12
Ilustración 5. Resumen de los pasos que componen el proceso KDD («Big Data para todos»)

3.1.3. CRISP-DM

La metodología CRISP-DM (Carlos et al. 2015) consta de cuatro niveles de abstracción, organizados
de forma jerárquica en tareas que van desde el nivel más general hasta los casos más específicos
que podemos observar en la ilustración 6.

Ilustración 6. Esquema de los niveles de abstracción CRISP-DM («Algoritmos TDIDT aplicado al Analisis de suelo |
Aventuras durante la tesis»)

CRISP–DM es actualmente la guía de referencia más utilizada en el desarrollo de proyectos de Data


Mining. Estructura el proceso en seis fases: Comprensión del problema, Comprensión de los datos,
Preparación de los datos, Modelado, Evaluación e Implantación. La sucesión de fases no es
necesariamente rígida. Cada fase se descompone en varias tareas generales de segundo nivel. Las
tareas generales se proyectan a tareas específicas, pero en ningún momento se propone como

13
Memoria

realizarlas. Es decir, CRISP-DM establece un conjunto de tareas y actividades para cada fase del
proyecto, pero no especifica cómo llevarlas a cabo.

Ilustración 7. Diagrama CRISP-DM («Fases del proceso KDD según la metodología CRISP-DM Primeramente se... |
Download Scientific Diagram»)

Las etapas que integran esta metodología se visualizan en la ilustración 7. Las flechas indican las
relaciones más habituales entre las fases, aunque se puedan establecer relaciones entre cualquiera
de ellas. El círculo exterior del proceso simboliza la naturaleza cíclica del proceso.

Las descripciones de las diferentes fases son:

1. Comprensión del problema: Incluye los objetivos, conocimiento previo de la situación de


partida, los objetivos a alcanzar mediante la minería de datos y el desarrollo de un plan de
proyecto.
2. Comprensión de los datos o información: Esta etapa considera inicialmente una
metodología para: conseguir datos, realizar una exploración de los datos para conocer la
información que dan y la verificación de la calidad de estos.
3. Preparación de los datos: Una vez se han recogido los datos es necesario vigilar que no
existan datos anómalos y adaptarlos a la forma deseada para poder trabajar con ellos
posteriormente. La transformación de los datos puede facilitar la identificación de patrones
y el comportamiento de los datos.
4. Modelización: Esta etapa involucra la manipulación de softwares de minería de datos para
el análisis o el estudio de los mismos para establecer agrupaciones de aquellos que

14
muestran un comportamiento similar o para la creación de modelos de predicción, entre
otros posibles tratamientos.
5. Evaluación: Esta etapa pretende descubrir el grado de fiabilidad del modelo o modelos
obtenidos en la etapa anterior, para así saber cuál de ellos permite satisfacer de la forma
más completa los objetivos establecidos en las etapas previas.
6. Implementación: Es la etapa final de esta metodología y llega cuando se pretende realizar
la implementación del modelo para alcanzar los objetivos establecidos.

Tras el estudio de las tres metodologías, se concluye este apartado con la decisión tomada. Este
proyecto se verá respaldado por la metodología CRISP-RM. Sin duda alguna, el método CRISP-RM
es el más completo de los tres.

Algunos modelos profundizan con mayor detalle en las tareas y las actividades a ejecutar en cada
etapa del proceso de minería de datos (como CRISP-DM), mientras que otros proveen sólo una guía
general del trabajo a realizar en cada fase (como el proceso KDD o SEMMA). Por estos motivos y
por ser el más usado dentro de la comunidad, nos decantamos por el método CRISP-DM.

15
Memoria

4. Preparación y análisis de los datos


Antes de empezar con el estudio y la creación de modelos de predicción es interesante conocer
como son los datos que se van a usar. Conocer previamente los datos puede, de un modo u otro,
ayudar a entender algunos resultados.

Una vez elegida y explicada la metodología que se seguirá en el proyecto, nos adentramos en cada
una de las etapas para explicar las tareas y actividades que realizaremos en cada una de las fases.
Como se ha comentado en la introducción del proyecto, el “problema” a solucionar de nuestro
trabajo es la predicción de resultados en los encuentros de la liga española de baloncesto. En este
apartado identificaremos los datos básicos a los cuales hemos tenido acceso y con los que
desarrollaremos nuestro modelo. También, explicaremos como estaban los datos en un principio y
los pasos que se han seguido para conseguir un formato adecuado para el análisis y la preparación
de los mismos.

4.1. Fuente de datos

El primer paso antes de la modelización es saber qué datos vamos a necesitar. A la hora de
modelizar se pueden seguir infinitos caminos, la modelización con algoritmos inteligentes requiere
una información precisa y simple. La ficha estadística de un partido de baloncesto recoge todo lo
sucedido en un partido en forma de números, por lo que esta ficha será nuestra fuente principal de
datos. En la ficha estadística de un partido se encuentran los datos básicos de cada jugador y totales
del equipo, así como otras estadísticas avanzadas.

A continuación, adjuntaremos una tabla (ilustración 8) que pertenece a la estadística del Barça de
una jornada de la temporada 2018-2019 de la Liga Endesa. Esta tabla será el santo grial de los datos
del proyecto. La tabla está extraída de la página oficial de la liga («ACB.COM») y lo que necesitamos
es extraer una tabla como esta para todos los equipos y todas las jornadas de la temporada 2018-
2019, en un formato que permita al modelo leer los datos. Para ello se hace uso de la técnica
llamada web scraping, que explicaremos más adelante.

La tabla contiene la siguiente información: dorsal, nombre del jugador, minutos jugados, puntos
anotados en el partido, tiros de 2, porcentaje de tiros de 2, tiros de 3, porcentaje de tiros de 3, tiros
libres, porcentaje de tiros libres, rebotes totales, rebotes defensivos + ofensivos, asistencias,
balones robados, balones perdidos, contraataques, tapones a favor, tapones en contra, mates,
faltas a favor, faltas en contra, +/- y la valoración.

Una de las actividades dentro de la minería de datos es conseguir la información que contiene esta
tabla en un formato que se pueda trabajar en Python.

16
Ilustración 8. Ejemplo de las estadísticas de partido de donde sacaremos los datos («ACB.COM»)

La abreviación que utilizaremos para los términos de las columnas de la ilustración 8 se puede ver
en el glosario en la página VII del trabajo. Algunas abreviaturas coincidirán con las de la tabla de la
ilustración 8.

A la hora de buscar una fuente de datos fiable solo se encontró la página oficial de la Liga Endesa.
Pese a ser oficial no está exenta de errores que se tendrán que tener en cuenta cuando se usen los
datos. Por ejemplo, si nos fijamos en la suma total de las columnas de nuestra tabla,
indiferentemente del tipo de estadística, será siempre el doble de la suma real de las columnas. En
ocasiones, hemos podido comprobar como al dividir la suma total entre 2 algunas estadísticas
seguían estando mal. Es imprescindible fijarse bien en la fuente de datos debido a que un error tan
ingenuo como este puede llevarnos a resultados catastróficos en nuestro proyecto. Más adelante,
en el punto 4.3 detallaremos mejor las erratas y las soluciones aplicadas.

En el siguiente apartado se explicará cómo conseguimos sacar los datos de esa tabla para
almacenarlos en una carpeta y en el formato que nos permita trabajar con ellos.

17
Memoria

4.2. Web scraping

Como la única fuente de datos que encontramos para las estadísticas de la temporada 2018-2019
fue la página oficial de la Liga Endesa, se usó la técnica de web scraping como herramienta principal
para obtener los datos.

El web scraping («Qué es el web scraping - Aukera») conocido también como data scraping, rastreo
o extracción de datos consiste en navegar automáticamente en una web y extraer los datos que
nos interesen. Esta actividad es totalmente legal ya que lo único que hacemos es coger los datos
que tienen las tablas para fines académicos.

En ocasiones, la práctica del web scraping puede ser ilegal ya que al final lo que hacemos es crear
un robot que va rastreando y haciendo peticiones al servidor de la página web. En ocasiones cuando
se hace un número elevado de peticiones por segundo podría suceder que la página bloquee el
acceso a la información, por suerte ese no fue nuestro caso. El web scraping es una técnica que nos
ayuda a transformar datos HTML no estructurados en una hoja de cálculo o base de datos en datos
estructurados.

Para esta parte se requiere una mínima compresión del lenguaje de programación HTML para leer
el código de la web y ver que líneas contienen la información que nosotros queremos scrapear.
Python, por su flexibilidad y potencia, será el lenguaje cimiento con el que afrontaremos este primer
objetivo del proyecto.

Hay que tener en cuenta que la liga de la temporada 2018-2019 tiene 18 equipos y cada equipo
juega un total de 34 partidos por temporada. Con nuestro código de scrapeo conseguiremos los 34
archivos de cada equipo lo que supone un total de 612 archivos. El formato que buscamos
inicialmente es un formato de texto (.csv) que nos permitirá manipular y leer de una forma rápida
y sencilla la información.

A continuación, resumiremos los pasos más importantes de nuestro código de scraping en Python
que se puede ver en el anexo 1 del trabajo. La explicación detallada del código se encuentra después
del símbolo “#” que es como se denota una explicación o aclaración en Python.

Para iniciar nuestro código debemos importar dos bibliotecas que se utilizan para scrapear:
“BeautifulSoup” en “bs4” y “urllib.request”. Estas bibliotecas contienen módulos incorporados que
brindan acceso a funcionalidades del sistema de entrada y salida de archivos que serían de otra
forma inaccesibles para Python. Estas bibliotecas incorporan funciones que nos van a permitir
rastrear las páginas web y coger lo que nos interese. Además, usaremos la biblioteca “numpy” para
guardar los archivos que nos genere el código.

18
El siguiente paso es guardar en una variable qué URL vamos a querer scrapear. En nuestro caso
queremos scrapear una URL para cada partido de modo que solo podemos guardar la parte que
coincide en todas las URL a scrapear y activamos “urllib.request.urlopen”, unas de las funciones
que incluye la biblioteca comentada anteriormente y que nos va a permitir que se abran las páginas
web.

Luego aplicamos “BeautifulSoup” para analizar la página. Esta función nos dará de forma
desestructurada toda la información de la página web. Con la función “find_all ()” le indicamos al
código que nos encuentre la parte del código HTML que tiene la información que necesitamos.

Seguramente, si le demandamos al código que nos de la información que ha encontrado en formato


texto, nos devolverá los datos que le hemos pedido de una manera sucia y desordenada. Así que
en web scraping es importante la parte de limpiar y eliminar elementos que no queremos ver en
nuestros datos.

Una vez limpiados los datos y guardados en listas seguimos con el código para generar un archivo
con el nombre del equipo que ha recogido los datos para descargarlo en formato .csv. De este modo
conseguimos que cada vez que scrapea una tabla nos descargue un documento con el nombre del
equipo, el número de la jornada y la información estadística de ese partido.

Para acabar de culminar nuestro código, le añadimos una tarea extra y es que nos guarde el
documento en una carpeta llamada local si ha jugado como local y una carpeta llamada visitante si
ha jugado como visitante.

En la ilustración 9, que se agregará al final de este apartado, se podrá observar el documento que
genera nuestro código donde está toda la información de la ilustración 8. Cada línea contiene
información separada por comas. Las dos últimas líneas hacen referencia a la suma de las
actuaciones de los jugadores, teniendo en cuenta la errata de la página web que se ha comentado
en la ilustración 8. Otro detalle, para la mejor compresión del lector, es que los jugadores que han
jugado como titulares tienen al lado del dorsal un asterisco. De todas formas, la titularidad de los
jugadores no será relevante para el resto de nuestro proyecto.

19
Memoria

Ilustración 9. Imagen de la obtención del .csv después del web scraping (elaboración propia)

4.3. Preparación de los datos

El objetivo principal de este apartado es obtener una base de datos lo suficientemente estructurada
y homogénea de modo que se pueda utilizar en nuestro algoritmo inteligente o machine learning.
Tras el web scrapping, se obtienen dos carpetas con 306 archivos cada una: una carpeta pertenece
a los archivos .csv de todos los equipos que han jugado como locales y la otra pertenece a los
archivos .csv de todos los equipos que han jugado como visitantes. Los archivos .csv contienen la
información tal y como hemos visto en la ilustración número 9. Tras levantar la cabeza y ver con
perspectiva los siguientes pasos del trabajo se decide agrupar todos los archivos .csv de cada
carpeta en un único documento .csv.

Con este primer paso se está creando un primer dataframe. Un dataframe es una forma de
estructurar un conjunto de datos en forma de tabla para poder manipularlos con Python. El
dataframe permitirá modificar y añadir datos de forma ágil. Una vez creado este mega dataframe
tanto para la carpeta de locales como para la carpeta de visitantes decidimos aplicar una segunda
acción en el dataframe. Se trabajará solo con los totales de cada equipo. Esto significa que la
estadística individual quedará suprimida y estará implícita en el total de cada equipo. De este modo
hemos reducido toda nuestra información a dos únicos dataframes.

El siguiente paso es ver el tipo de datos que contenían nuestras dos tablas. Realmente, la estructura
de los datos en la tabla de la ilustración 8, desde el punto de vista de un científico de datos, es
deplorable y vamos a detallar por qué. En primer lugar, remarcamos la errata comentada
anteriormente, donde se observa como los totales de cada equipo han sido multiplicados por dos
sin ningún tipo de lógica. En ocasiones, no solo se han multiplicado por dos, sino que algunos totales
han sido mal sumados. El hecho de que algunos totales estén mal sumados se ha traducido en una

20
pérdida de tiempo significativa buscando en una base de datos de 306 filas los errores pertinentes.
Por otro lado, pese a que la tabla de la ilustración 8 parece decente, al verla traducida a un
documento .csv (ilustración 9) se ve poco estructurada y nada homogénea. Con la ayuda de las
funciones que Python ofrece para tratar con dataframe, se modifican y eliminan datos, que más
que ayudar podrían molestar en un futuro. La mayoría de algoritmos inteligentes son muy claros
con el tipo de datos que admiten y, generalmente, usan los datos de un mismo tipo. De modo que
en el siguiente paso se eliminarán todas las columnas que no sean relevantes o su información esté
representada en otras estadísticas. Inicialmente, la columna dorsal, nombre, minutos, t2, t3, t1 y
defensivos más ofensivos serán eliminados. Todos ellos tienen en común algún símbolo
matemático o realmente no aportan información relevante para la finalidad de nuestro proyecto.

El único indicador estadístico que dejamos, pese a tener un símbolo que podría molestar, es el
porcentaje de t1, t2 y t3. Dejamos estas estadísticas ya que serán útiles y su transformación a un
número decimal no será muy compleja. Finalmente, obtendremos los siguientes 2 dataframes:

Ilustración 10. Dataframe de los equipos locales (elaboración propia)

Ilustración 11. Dataframe de los equipos visitantes (elaboración propia)

Como se observa en las ilustraciones 10 y 11 el tipo de datos es más homogéneo, todos los números
son de un mismo tipo y solo la columna que indica el nombre del equipo es de tipo letra o “string”.
Sin embargo, las tablas de las ilustraciones 10 y 11 no son las definitivas. El objetivo del proyecto no

21
Memoria

está en tan solo analizar el conjunto de datos sino en pronosticar el resultado de los partidos de
baloncesto, por lo que es necesario la incorporación de una variable que indique si el equipo en ese
partido perdió o ganó.

Para añadir la nueva variable se requieren tres pasos: crear una tabla aparte con esa variable, añadir
a las tablas mostradas en las ilustraciones 10 y 11 otra columna con un índice y juntar las dos tablas
con exactitud utilizando el índice como nexo. El índice en cuestión será el número de la jornada.

Se empezará explicando la creación de la nueva tabla. Aplicando de nuevo la técnica del web
scrapping sacaremos una tabla para los equipos locales y otra para los visitantes. La tabla tendrá la
columna que indica el nombre del equipo, los puntos, la jornada y el resultado. El resultado vendrá
dado por un 1 si es victoria o un 0 si es derrota. Para facilitar la comprensión del proceso añadiremos
imágenes. En este caso, se trabajará con el conjunto de equipos visitantes. El proceso se aplicará de
la misma forma para los equipos locales. Este dataframe tendrá la apariencia que se muestra en la
ilustración 12.

Ilustración 12. Dataframe con la columna resultado (elaboración propia)

La tabla mostrada en la ilustración 12 pertenece al grupo de equipos visitantes. La tabla de los


equipos locales tiene la misma estructura, lo único que cambia es el nombre de la columna que
determina el nombre del equipo. El segundo paso antes de juntar las tablas es añadir la columna
jornada en el dataframe principal mostrado en las ilustraciones 10 y 11.

22
Ilustración 13. Dataframe de los equipos visitantes con la jornada (elaboración propia)

Para añadir la columna de la jornada no se ha requerido mucho trabajo ya que el número de la


jornada estaba indicado en el nombre de cada archivo .csv que formaron el dataframe original.

El último paso es juntar ambos dataframes, el dataframe de la ilustración 13 con el dataframe de


la ilustración 12 para tener el dataframe completo con la variable resultado que nos da información
de si ha ganado o ha perdido el encuentro un equipo en concreto. En un dataframe habrá las
siguientes columnas: equipo_visitant, puntos, resultado y jornada. El otro dataframe tendrá las
columnas: puntos, resultado, t2%, t3%, t1%, rebotes, asist, robos, pérdidas, tapones_favor,
tapones_contra, mates, falta_favor, falta_contra, +/-, valoración, equipo_visitant y jornada.

De este conjunto de columnas usaremos 3 como eje principal para la unión de ambos dataframes.
El eje de nuestra unión será la columna equipo_visitant, puntos y la jornada. De este modo se queda
un dataframe perfecto sin duplicados ni espacios en blanco con la información más relevante para
nuestro objetivo. Del mismo modo se aplicará el procedimiento para los equipos locales. El
resultado final se muestra en la ilustración 14. La columna equipo_visitant queda recortada por el
propio programa a la hora de extraer la imagen, pero quedaría la primera a mano izquierda. Lo
importante de la imagen es ver como se ha unido con éxito y precisión la columna con los
resultados.

Ilustración 14. Dataframe equipos visitantes completo (elaboración propia)

23
Memoria

Una vez tenemos el dataframe de los equipos locales y el dataframe de los equipos visitantes
completos y con toda la información posible, se realiza un último paso para encarar la siguiente fase
del proyecto con un amplio abanico de posibilidades. Este último paso consta en unir ambos datos,
locales y visitantes, para obtener toda la información en un único dataframe. Todas las columnas
pasan a tener un apéndice extra dependiendo de si se trata de una columna del equipo local o
visitante. Se denota el nombre original de la columna seguido de “_local” o “_visitant”. Ahora en la
cabecera de nuestra tabla encontramos los siguientes datos, pero para ambos equipos: puntos,
resultado, t2%, t3%, t1%, rebotes, asist, robos, pérdidas, tapones_favor, tapones_contra, mates,
falta_favor, falta_contra, +/- y valoración. El elemento en común que comparten ambas tablas es
el número de jornada. A continuación, se verá con mayor claridad el resultado de nuestro nuevo
dataframe.

Ilustración 15. Creación dataframe completo con datos de equipos locales y visitantes. (elaboración propia)

Los tres puntos (…) que se encuentran en la ilustración 15 denotan que hay elementos que, por
tamaño, no pueden aparecer en la imagen pero que si están presentes en la memoria del
ordenador. Finalmente, el último dataframe creado tiene 306 líneas y 35 columnas. El dataframe
de la ilustración 15 es el más completo ya que contiene la información de toda la temporada 2018-
2019 de la Liga Endesa de baloncesto.

En el trabajo realizado en este punto de preparación de datos, se obtienen 3 dataframes que


permitirán trabajar con comodidad y flexibilidad una vez se entre en la fase de modelización de
datos. Para esa fase de modelización de datos, se tiene un dataframe con los datos de los equipos
que han jugado como locales, un dataframe con los datos de los equipos que han jugado como
visitantes y un dataframe con ambos datos juntos.

Una última apreciación de esta tabla es que se ha cambiado el nombre de los equipos por un
identificador numérico que facilitará el trabajo a la hora de aplicar algoritmos inteligentes. La tabla
de nombres de equipo con su identificador se presenta a continuación:

24
Tabla 1. Identificador numérico de los equipos de la Liga Endesa (elaboración propia)

Id equipo Nombre del equipo


0 Real
1 Kirolbet
2 Barça
3 Morabanc
4 Cafés
5 Movistar
6 Monbus
7 Unicaja
8 Delteco
9 Valencia
10 Herbalife
11 Ucam
12 Tecnyconta
13 Burgos
14 Montakit
15 Baxi
16 Divina
17 Iberostar

4.4. Análisis de datos

4.4.1. Resultados de la investigación

En este apartado, mediante las funciones disponibles en las diferentes librerías que ofrece Python,
se extraen algunas conclusiones interesantes de nuestra base de datos. Se podrá entender el
comportamiento de los equipos a lo largo de la temporada 2018-2019 desde un punto de vista
general que añadirá un plus a nuestro trabajo a la hora de modelizar y elegir las variables del
modelo. A continuación, se presentarán un conjunto de gráficas y tablas que de forma visual
dejarán más claro el comportamiento de los equipos durante la temporada. Se verá la frecuencia
con la que los equipos, en conjunto, repiten unas estadísticas determinas. Todas las estadísticas
serán contempladas desde el punto de vista local y visitante.

Se empezará analizando el resultado de los equipos según si juegan en casa o fuera de ella.

25
Memoria

Ilustración 16. Diagrama de barras resultado local vs resultado visitante (elaboración propia)

En la Ilustración 16 se observa que el resultado local más frecuente es la victoria. Se recuerda que
la victoria está caracterizada por un 1 y la derrota por un 0. Por otro lado, cuando el equipo juega
como visitante el resultado más frecuente es el de derrota. Estos gráficos afirman un poco más una
de las hipótesis principales del trabajo, donde se suponía que existe una ventaja cuando se juega
en casa. Por el contrario, hay una pequeña desventaja cuando se juega lejos de casa. Ambas gráficas
de la ilustración 16 son complementarias e indican lo mismo desde un punto de vista diferente, ya
que, si el equipo local gana, consecuentemente el equipo visitante pierde y viceversa.

Ilustración 17. Histograma de puntos locales vs puntos visitantes (elaboración propia)

Tabla 2. Datos estadísticos de la variable puntos para locales y visitantes (elaboración propia)

Estadísticos Local Visitante


Media 83,76 80,17
Desviación 10,63 10,98
Mínimo 60,00 49,00
Máximo 116,00 110,00

En la ilustración 17 se compara las puntuaciones de los equipos. La realidad es que la diferencia de


puntos es muy pequeña. La media de puntos como locales está en 84 puntos mientras que la media
de los visitantes se encuentra en 80. Por un lado, en los histogramas de la ilustración 17 se aprecia
como la gráfica de los puntos locales está desplazada hacia la derecha respecto a la de los puntos
visitantes. Lo cierto es que los mínimos y máximos son más altos en los puntos locales. Por otro

26
lado, los mínimos y máximos de los puntos locales son más bajos. Todos los datos estadísticos de la
variable puntuación quedan recogidos en la tabla 2.

Seguidamente se comentarán las estadísticas de tiro: t2%, t3% y t1%.

Ilustración 18. Histogramas t2% local vs t2% visitantes (Fuente: elaboración propia)

Tabla 3. Datos estadísticos de la variable t2% para locales y visitantes (elaboración propia)

Estadísticos Local Visitante


Media 0,54 0,53
Desviación 0,08 0,09
Mínimo 0,29 0,33
Máximo 0,74 0,83

27
Memoria

Ilustración 19. Diagrama de dispersión entre resultado y t2% (elaboración propia)

En la ilustración 18 se observa como el acierto en porcentaje de los tiros de 2 puntos oscila en el


rango de 40% y 70%. La información de la ilustración 18 se encuentra complementada en la tabla
3. Realmente, un equipo que a lo largo de un partido consigue mantener sus porcentajes de tiros
de 2 por encima de 70% suele llevarse la victoria a no ser que el rival todavía tenga mejor porcentaje
ese día. Este hecho se puede apreciar en la ilustración 19.

Históricamente, los tiros de dos puntos han sido los más utilizados y sobre los cuales recaía todo el
volumen de tiro en un partido. A día de hoy los tiros de 2 siguen siendo una de las fuentes
principales de anotación, pero con los datos recogidos de la temporada 2018-2019 y la actual forma
de juego más rápida de los equipos se está viendo disminuida la diferencia de volumen de uso entre
el tiro de 2 y el tiro de 3 puntos. La realidad es que los tiros de 2 se ejecutan más cerca del aro que
los tiros de 3 y por ello suele ser más fácil de encestar. Sin embargo, la mejora técnica de los
jugadores gracias a entrenamientos específicos nos hace destacar que la diferencia en el porcentaje
de acierto de los tiros de 2 y de 3 también se ha reducido. Como se observa en la ilustración 20 los
porcentajes de tiros de 3 locales más frecuentes son del 40%. Bien es cierto, en la ilustración 20 se
puede apreciar el empeoramiento de los porcentajes de tiros de 3 cuando el equipo juega como
visitante.

28
Ilustración 20. Histogramas t3% local vs t3% visitantes (Fuente: elaboración propia)

Tabla 4. Datos estadísticos de la variable t3% para locales y visitantes (elaboración propia)

Estadísticos Local Visitante


Media 0,37 0,36
Desviación 0,09 0,10
Mínimo 0,15 0,09
Máximo 0,62 0,65

La diferencia entre la media del porcentaje de tiros de 2 y de 3 es inferior al 10%. Comparando la


tabla 3 y la tabla 4, la razón por la que algunos equipos hacen un uso frecuente de la línea de 3 es
la alta recompensa de puntos que se obtiene. Pese al menor porcentaje respecto a los tiros de 2
puntos, las canastas de 3 se ven como una recompensa a explotar.

En la ilustración número 21 tenemos el tiro con mejor porcentaje de los tres tipos que se están
analizando. Este suceso no es casualidad, el tiro de 1 punto es un tiro muy mecánico sin defensa y
siempre desde la misma posición. El único componente que puede mermar el alto porcentaje de
acierto de este tiro es la mala mecánica de tiro de un jugador o la presión que tenga el jugador para
anotar. Como vemos en la tabla 5 el porcentaje medio se sitúa alrededor del 75% y es el único de
los tres tipos de tiro analizados que alcanza la perfección del 100% de acierto en algunos
encuentros.

Ilustración 21. Histogramas t1% local vs t1% visitantes (Fuente: elaboración propia)

29
Memoria

Tabla 5. Datos estadísticos de la variable t1% para locales y visitantes (elaboración propia)

Estadísticos Local Visitante


Media 0,75 0,75
Desviación 0,11 0,12
Mínimo 0,38 0,36
Máximo 1,00 1,00

Otra estadística que nos gustaría comentar, por la importancia que el aficionado le da, es la
comparativa de faltas en contra pitadas a un equipo que juega como local en comparación con un
equipo que juega como visitante. El popular dicho de que los árbitros son unos “caseros” significa
que tienden a beneficiar a los equipos que juegan en casa. Con los siguientes histogramas saldremos
de dudas.

Ilustración 22. Histogramas falta contra local y falta contra visitante (Fuente: elaboración propia)

Tabla 6. Datos estadísticos de la variable faltas en contra para locales y visitantes (elaboración
propia)
Estadísticos Local Visitante
Media 20,97 20,00
Desviación 3,36 3,26
Mínimo 11,00 12,00
Máximo 31,00 32,00

En la ilustración 22 no podemos desmentir el hecho de que los árbitros favorezcan a los equipos
locales. Asimismo, tampoco se puede decir que favorezcan a ningún equipo, como se puede
observar en la tabla 6. La media de faltas en contra de un equipo local es ligeramente elevada a la
del equipo visitante, lo que hace concluir que incluso pueden perjudicar al equipo local. Con esta
estadística estamos generalizando los casos, pero de ningún modo la diferencia es tan abismal
como para que los árbitros jueguen un papel transcendental en todos los partidos disputados.

30
Se podría seguir analizando todas las estadísticas recogidas de forma individual como las anteriores,
pero, para simplificar y ser científicamente correctos, vamos a coger la estadística de valoración que
reúne todas las estadísticas en una. Se puede saber más sobre la valoración en el glosario. La
valoración es una suma de las acciones con impacto positivo en el partido menos la suma de las
acciones con impacto negativo en el partido. En la ilustración 23 podemos ver como el histograma
de la valoración local está desplazado hacia puntuaciones más altas en comparación con el
histograma de la valoración visitante. Este resultado de los histogramas de valoración no es
casualidad y es que, si recordamos el inicio de este apartado, se asume la teoría de la ventaja del
equipo local para conseguir la victoria y la desventaja inicial de un equipo si juega como visitante.
Como se ha comentado, la valoración es una estadística que recopila un conjunto de estadísticas,
de forma que la valoración del equipo ganador siempre será mejor que la del equipo perdedor. Así
lo demuestra el diagrama de dispersión de la ilustración 24. En algunas ocasiones la victoria o la
derrota de un equipo está determinada por detalles que la mayoría de las veces se ven reflejados
en las estadísticas.

Ilustración 23.Histogramas de la valoración local vs valoración visitantes (Fuente: elaboración propia)

Tabla 7. Datos estadísticos de la variable valoración para locales y visitantes (elaboración propia)

Estadísticos Local Visitante


Media 92,41 83,06
Desviación 19,44 19,00
Mínimo 32,00 19,00
Máximo 145,00 151,00

31
Memoria

Ilustración 24. Diagrama de dispersión entre el resultado y la valoración (elaboración propia)

4.4.2. Matriz de correlación

Un coeficiente de correlación («Tutorial de la matriz de correlacion de Python - Like Geeks») es un


número que denota la fuerza de la relación entre dos variables. Hay varios tipos de coeficientes de
correlación, pero el más común de todos ellos es el coeficiente de Pearson denotado por la letra
griega ρ. Se define como la covarianza entre dos variables dividida por el producto de las
desviaciones estándar de las dos variables.

𝐶𝑂𝑉(𝑋,𝑌)
𝜌 (𝑋, 𝑌) = (Ecuación 1. Coeficiente de Pearson)
𝑆𝑋 ∙𝑆𝑌

Donde la covarianza entre X e Y COV (X, Y) se define además como la “media del producto de las
desviaciones de X e Y de sus respectivas medias”. La fórmula de la covarianza se describe de la
siguiente forma:

32
∑𝑛 ̅ ̅
𝑖=1(𝑋𝑖 −𝑋 )∙(𝑌𝑖 −𝑌)
𝐶𝑂𝑉 (𝑋, 𝑌) = (Ecuación 2. Fórmula de la covarianza)
𝑛

Por lo que la fórmula de la correlación de Pearson se convertirá en:

∑𝑛 ̅ ̅
𝑖=1(𝑋𝑖 −𝑋 )∙(𝑌𝑖 −𝑌)
𝜌 (𝑋, 𝑌) = (Ecuación 3. Fórmula de correlación de Pearson)
𝑆𝑋 ∙𝑆𝑌 ∙𝑛

El valor de ρ se encuentra entre -1 y +1. Los valores cercanos a +1 indican la presencia de una fuerte
relación positiva entre X e Y, mientras que los cercanos a -1 indican una fuerte relación negativa
entre X e Y. Los valores cercanos a cero significan que no existe relación lineal entre X e Y.

A continuación, en la ilustración 25 y 26 se mostrarán los resultados de nuestras matrices de


correlación. Hemos hecho una matriz para nuestro conjunto de datos de equipos locales y otra para
nuestro conjunto de datos de equipos visitantes.

Ilustración 25. Diagrama de correlación variables locales (elaboración propia)

33
Memoria

Ilustración 26. Diagrama de correlación de variables visitantes (elaboración propia)

Uno de nuestros objetivos del trabajo es predecir el resultado final de un encuentro de baloncesto,
saber si va a ganar el equipo local o el equipo visitante. Un equipo gana cuando anota más puntos
que su adversario, por ello, vamos a fijarnos en la correlación de las variables puntos y resultado de
ambos diagramas con respecto al resto de variables. Este diagrama sirve de orientación para
escoger mejor las variables que ayudarán a construir el modelo. Con orientación nos referimos a
que la matriz de correlación no será el único criterio para elegir las variables de construcción del
modelo ya que este método solo mide correlaciones lineales. La experiencia y conocimiento del
deporte será otro criterio para elegir qué variables modelarán nuestro algoritmo inteligente. Como
se ve en las Ilustraciones 25 y 26, la escala de nuestra matriz de correlación va de 1 a - 0.2. Esto
significa que la matriz ha encontrado correlaciones más altas positivas que negativas. Resumiendo,
las variables con una correlación negativa no tienen un impacto negativo tan alto como para
tenerlas en cuenta. Los resultados de las variables con mayor porcentaje de correlación con los
puntos tanto para los locales como los visitantes se muestran en la tabla 8.

Tabla 8. Correlación de la variable puntos (elaboración propia)

Variables Correlación con los puntos


resultado 0.5
t2% 0.42
t3% 0.59
asist 0.57
+/- 0.64
valoración 0.88

34
Tomando uno de los hilos abiertos en el punto 4.4.1 sobre la tendencia al uso del tiro de 3 sobre el
tiro de 2, observamos como en la tabla 2, la correlación del tiro de 3 respecto a la puntuación final
es más elevada que con la correlación con el tiro de 2. Contrastados los datos se podría afirmar, con
la base de datos que se está estudiando, que el baloncesto actual está en un periodo de transición
donde un tiro de 3 tiene más impacto en los puntos y el resultado que un tiro de 2. También se
destaca, por su alto grado de correlación, la estadística de valoración comentada en el apartado
4.4.1.

Los resultados de las variables con mayor porcentaje de correlación con el resultado se muestran
en la tabla 9.

Tabla 9. Correlación del resultado (elaboración propia)

Variables Correlación con el resultado


puntos 0.5
t2% 0.27
t3% 0.36
asist 0.18
+/- 0.77
valoración 0.65

En la tabla 9 se confirma la misma correlación entre puntos y resultado. Sin embargo, se puede ver
como todas las variables numeradas en la tabla 8 reducen su grado de correlación en la tabla 9. Esto
se debe a que en la variable resultado influyen más variables que en la variable puntos donde todas
aquellas variables que estén directamente relacionadas con el aumento de los puntos verán un alto
grado de correlación con la variable puntos.

Como se ha argumentado en el punto 4.4.1, en el resultado del partido intervienen muchísimas


variables y las pequeñas diferencias en algunas pueden determinar el ganador y el perdedor.

4.4.3. Training and testing

Para la correcta ejecución del algoritmo predictivo es necesario darle importancia a este apartado
de training and testing donde se explicará cómo se separan los datos para que el algoritmo
inteligente prediga el resultado. Los algoritmos predictivos son capaces de predecir debido a un
entrenamiento previo donde le hemos mostrado los datos y el algoritmo aprende cómo se
comportan nuestros datos. A partir de los datos de entrenamiento, podrá predecir el futuro
aplicando unos modelos u otros. De modo que el dataset se tendrá que dividir en dos: una parte de
entrenamiento y otra parte de testing. La proporción más lógica para dividir los datos es hacer que
un 80% del total de nuestros datos se usen para entrenar y el 20% restante para predecir o lo que
es lo mismo, testing. Sin embargo, esta distribución puede cambiar según la dimensión de nuestro

35
Memoria

conjunto de datos o la necesidad de entrenar por parte del modelo. En el caso del presente
proyecto, al comparar la base de datos con la de otros proyectos, se podría dar que el proyecto no
tuviera datos suficientes para aplicar un 80% de entrenamiento y un 20% de testeo. Puede pasar
que se quede corto de datos en la fase de entrenamiento obteniendo, consecuentemente, malos
resultados. Por ello, para este proyecto se aplicará una distribución del 90% de entrenamiento y un
10% de testeo.

Es importante preservar el orden de los datos de entrenamiento para el problema de la predicción


deportiva, de modo que los próximos partidos se predicen basándose sólo en los partidos pasados.
La validación cruzada generalmente implica barajar el orden de los casos. Por lo tanto, no es un
medio apropiado para dividir los datos en entrenamiento y pruebas para el problema de la
predicción de resultados deportivos. Una división de pruebas de entrenamiento es más apropiada,
conservando el orden de las instancias.

Con el 90% de entrenamiento y el 10% de testing, nuestro modelo predecirá aproximadamente los
últimos 30 partidos de la temporada. Traducido a jornadas, significa que el algoritmo nos
pronosticará el resultado de todos los encuentros de las 4 últimas jornadas. Una parte de riesgo del
caso que se estudia en este proyecto es que en estas 4 últimas jornadas encontremos equipos que
no se jueguen nada o se estén reservando para los playoffs si llegan al final de la liga regular ya
clasificados. De todas formas, se apela a la profesionalidad de jugadores y equipos para no tener en
cuenta los riesgos de las últimas jornadas.

36
5. Modelización
Tras crear, modificar y aprender a manejar una base de datos se llega a la parte del proyecto más
interesante. Se trata de una parte emocionante ya que es el apartado donde los algoritmos
inteligentes entran en juego y la magia empieza a suceder. Este apartado será dividido en tres sub-
apartados. Un primer apartado donde se explicará la modelización de los datos, se modelizarán los
datos de forma que los datos actuales que tenemos se traduzcan a un rating, o clasificación, de los
equipos según algunas estadísticas. Por otro lado, se explicará los dos modelos de machine learning
que hemos utilizado para desarrollar esta parte y que serán los algoritmos inteligentes que nos
dirán el resultado final de los encuentros. Se empieza por la modelización del rating.

5.1. Massey Rating

Este apartado recibe el nombre de Massey rating en honor al conocido analista deportivo Kenneth
Massey. Este analista deportivo realizo un trabajo donde explica cómo se calcula y funciona su
rating (Massey 1997). Este rating solo es útil para deportes de equipo, donde el analista, con un par
de conceptos matemáticos que explicaremos a continuación, consigue representar con un número
la fuerza de un equipo para conseguir la victoria.

Todos los equipos empiezan la temporada con el mismo rating. Después de cada jornada, se vuelve
a analizar toda la temporada para que los nuevos ratings expliquen mejor los resultados
observados. Calcularemos dos ratings para usar en nuestro algoritmo inteligente. En el primer
rating usaremos los puntos del local y los puntos del visitante. Mientras que para el segundo rating
utilizaremos la valoración de los locales y la valoración de los visitantes. Recordemos que la
valoración es una suma de las estadísticas que influyen positivamente en un partido menos las que
influyen negativamente. Se escoge la puntuación y la valoración porque son las dos estadísticas que
mejor resumen, de una forma simple, la naturalidad y el resultado de un encuentro. La forma de
calcular el rating para los puntos y la valoración será la misma en ambos. Así que se explicará cómo
se obtiene el rating de los puntos y se aplicará exactamente el mismo procedimiento para el rating
de la valoración.

Para el cálculo del rating de los puntos solo necesitaremos el identificador del equipo local,
identificador del equipo visitante y la diferencia de puntos entre ambos. En este caso una diferencia
positiva implicará la victoria del local y una diferencia negativa implicará la victoria del visitante. La
valoración siempre es mayor en el equipo que gana, tal y como pudimos observar en el apartado
de análisis de datos y con la ayuda de la ilustración 24. Por ello, el caso de una diferencia positiva
implicará la victoria del local y una diferencia negativa implicará la victoria del visitante. En la
siguiente imagen se presenta el formato de nuestra tabla para calcular el rating con los puntos.

37
Memoria

Ilustración 27. Tabla para calcular rating puntos (elaboración propia)

Como se ha comentado, todos los equipos empiezan con el mismo rating y el rating de cada equipo
se va actualizando de forma que avanzan las jornadas. Con los resultados de la jornada 1 crearemos
el rating de puntos para la jornada 2, con los resultados de la jornada 1 y 2 crearemos los ratings
para la jornada 3. De modo que para calcular el rating de la jornada n+1 se utilizarán los resultados
hasta la jornada n.

Kenneth Massey obtiene sus ratings resolviendo un sistema de ecuaciones lineales y encontrando
la mejor solución con la metodología de mínimos cuadrados. A continuación, se presentará un
ejemplo reducido de como calculamos nuestro rating.

Sea la siguiente muestra de partidos donde cada lista es un encuentro, la posición 0 de la lista es el
identificador de equipo local, la posición 1 es el identificador del equipo visitante y la 2 es la
diferencia de puntos en el partido. Tenemos 6 equipos y 10 partidos con los que calcular el rating
tal y como se puede apreciar en la ilustración 28.

Ilustración 28. Imagen de una muestra de partidos para calcular el rating (elaboración propia)

38
Con estos datos iniciales crearemos una matriz de 10 filas por 6 columnas para materializar los
encuentros en forma de matriz:

Ilustración 29. Matriz de encuentros (elaboración propia)

Los “1” indican que el equipo ha jugado como local y los “-1” indican la condición de visitantes, el
resto se rellena con ceros. Como se puede apreciar cada columna de nuestra matriz representa a
un equipo y cada fila representa un partido con su equipo local y su equipo visitante.

Seguidamente se crea otra matriz de 10 filas y 1 columna con la diferencia de puntos en cada
encuentro.

Una vez se tiene la matriz con los encuentros y la matriz con la diferencia de puntos se procede a
resolver el sistema lineal encontrando la mejor solución mediante la aproximación de mínimos
cuadrados. En la ilustración 30, la matriz formada por “G” y “g” nos indica en cada fila qué equipo
ha jugado como local y qué equipo ha jugado como visitante mediante 1’s y -1’s. La diagonal
principal siempre será cero ya que un equipo no puede jugar contra sí mismo. La “r” es la incógnita
de nuestro sistema de ecuaciones a resolver y determinará el rating de cada equipo después de
jugar un partido. Finalmente, “pd” hace referencia a la diferencia de puntos en el encuentro que se
define en cada fila de la matriz formada por “G” y “g”. La forma del sistema a resolver para n
partidos y n equipos es la siguiente:

Ilustración 30. Sistema general a resolver para determinar el rating (Massey 1997)

El rating obtenido con el resultado de los partidos hasta una determinada jornada nos permitirá ver
la fuerza con la que llega, para ganar el partido, a la siguiente jornada. Este valor de los ratings va
desde menos infinito hasta más infinito siendo mejor el equipo que tenga el número más grande.

39
Memoria

Como se ha concretado al inicio de este apartado, se realizaría el mismo procedimiento para


obtener el rating con la estadística de valoración, que complementa perfectamente al rating de los
puntos debido a la gran variedad de estadísticas que recoge la estadística de valoración.

5.2. Regresión Logística

La regresión logística corresponde a la suma de los pesos de un conjunto de variables predictoras


pero, en vez de ofrecer como resultado directo el valor de dicha suma, ofrece la transformación de
dicha respuesta entre los valores 0 y 1 mediante la aplicación de la función logística sobre dicha
respuesta. La curva logística se muestra en la ilustración 31. En la regresión logística, no ajustamos
directamente una línea recta a nuestros datos como en la regresión lineal. En su lugar, ajustamos
una curva en forma de S, llamada Sigmoide, a nuestras observaciones. Dicho método es utilizado
para determinar las probabilidades de que un elemento pertenezca a un determinado grupo. Según
este método, si el resultado indica una probabilidad superior al 50 % de pertenecer a un grupo
determinado, entonces se clasificará el dato en ese mismo grupo y si es inferior, se clasificará en el
otro grupo.

Ilustración 31. Curva logística («Regresión Logística para Clasificación - IArtificial.net)

Las ecuaciones matemáticas que definen el funcionamiento de este modelo son:

1
𝜎(𝑡) = (Ecuación 4. Función de curva logística)
1+exp(−𝑡)

𝑡 (𝑥𝑖) = 𝜃0 + 𝜃1 ∙ 𝑥1 + 𝜃2 ∙ 𝑥2 + ⋯ + 𝜃𝑛 ∙ 𝑥𝑛 (Ecuación 5. Regresión lineal de t)

40
A continuación, se determinará el significado de los elementos de las fórmulas:

t: el valor predicho.

n: el número de variables.

𝜃n: el coeficiente de la variable n-ésima (peso asignado a dicha variable en el modelo).

xi: el valor de la variable para la muestra i.

Si el valor de 𝜎 para una muestra es superior o igual a 0.5, el dato se clasifica en el grupo 1 (victoria)
y sino en el grupo 0 (derrota). El objetivo en este caso es entrenar el modelo con los dos ratings de
tal forma que se seleccionen los coeficientes 𝜃 más idóneos para obtener el mayor número posible
de aciertos.

Los parámetros que se utilizan en el modelo de regresión logística serán los predeterminados ya
que no se ha encontrado ninguna configuración alternativa que permita mejorar los resultados.

La regresión logística («Regresión Logística para Clasificación - IArtificial.net») es uno de los modelos
de aprendizaje automático más simples. Son fáciles de entender, interpretables y pueden dar muy
buenos resultados. El análisis de los resultados se llevará a cabo en el capítulo 7 debido a que en
este apartado se pretende dar una explicación teórica del modelo.

5.3. Bosques Aleatorios

La ciencia de los datos proporciona un amplio abanico de algoritmos de clasificación como la


regresión logística, la máquina de vectores de apoyo, el clasificador de Bayes y los árboles de
decisión. Pero en la cima de la jerarquía de algoritmos de clasificación está el clasificador aleatorio
de bosques o conocido por su nombre en inglés Random Forest («Understanding Random Forest.
How the Algorithm Works and Why it Is… | by Tony Yiu | Towards Data Science»).

Para comprender con exactitud el funcionamiento de los bosques aleatorios primero debemos
entender cómo funcionan los árboles de decisión, ya que los bosques aleatorios están compuestos
por árboles de decisión.

Un árbol de decisión es una estructura similar a un diagrama de flujo en la que cada nodo interno
representa una "prueba" de un atributo (por ejemplo, si al tirar una moneda sale cara o cruz), cada
rama representa el resultado de la prueba y cada nodo representa una etiqueta de clase.

41
Memoria

La mejor manera de entender cómo funciona un árbol de decisión es mostrando un simple ejemplo.

Ilustración 32. Ejemplo del funcionamiento de un árbol de decisión simple («Understanding Random Forest. How the
Algorithm Works and Why it Is… | by Tony Yiu | Towards Data Science»)

Si nuestro conjunto de datos consiste en los números de la parte superior de la ilustración 32. Se
tiene en la muestra dos 1’s y cinco 0’s (1 y 0 son nuestras clases) y se desea separar las clases usando
sus características. Las características son el color (rojo o azul) y si la observación está subrayada o
no.

El color parece una característica bastante obvia para dividirla ya que todos menos uno de los 0’s
son azules. Así que se puede usar la pregunta, "¿Es rojo?" para dividir nuestro primer nodo. Se
entiende por nodo de un árbol como el punto donde el camino se divide en dos: las observaciones
que cumplen los criterios bajan por la rama del Sí y las que no bajan por la rama del No.

La rama del No (el azul) es todo 0 ahora, así que se termina el recorrido ahí, pero la rama del Sí
todavía puede ser dividida más veces. Ahora se puede hacer uso de la segunda característica y
determinar si está subrayada o no para hacer una segunda división.

Los dos unos que están subrayados bajan por la rama Sí y el cero que no está subrayado baja por la
rama derecha terminando el recorrido posible. El árbol de decisiones es capaz de usar las dos
características para dividir los datos perfectamente.

Obviamente los datos del proyecto en curso no serán tan limpios pero la lógica que emplea un árbol
de decisión sigue siendo la misma. En cada nodo, se preguntará: ¿Qué características permitirán
dividir las observaciones disponibles de manera que los grupos resultantes sean tan diferentes
entre sí como sea posible y los miembros de cada subgrupo resultante sean tan similares entre sí
como sea posible?

El bosque aleatorio, como su nombre lo indica, consiste en un gran número de árboles de decisión
individuales que operan como un conjunto. Cada árbol individual del bosque aleatorio propone una
predicción de clase y la clase con más votos se convierte en la predicción de nuestro modelo.

42
El concepto fundamental detrás del bosque aleatorio es simple pero poderoso: la sabiduría de las
multitudes. En términos de ciencia de los datos, el modelo de bosque aleatorio funciona tan bien
por su gran número de modelos (árboles de decisión) no correlacionados que operan como un
comité. Este comité superará a cualquiera de los modelos individuales que lo componen.

La baja correlación entre los modelos es la clave. La razón de este maravilloso efecto es que los
árboles se protegen unos a otros de sus errores individuales. Mientras que algunos árboles pueden
estar equivocados, muchos otros árboles estarán en lo cierto, así que como grupo los árboles son
capaces de moverse en la dirección correcta. En la ilustración 33 se puede observar el diagrama que
representa la forma de trabajo del modelo de clasificación de bosques aleatorios.

Ilustración 33. Diagrama de trabajo del modelo de clasificación de bosques aleatorios («Machine Learning- Decision Trees
and Random Forest Classifiers | by Karan Kashyap | Analytics Vidhya | Medium»)

Para aplicar este modelo de machine learning de forma que obtengamos el mejor resultado posible,
se debe conocer bien los hiperparámetros que se pueden modificar del modelo.

En general, un hiperparámetro es un parámetro del modelo que se establece antes de empezar el


proceso de aprendizaje. Cada modelo tiene diferentes hiperparámetros que pueden ser
establecidos. Para un clasificador de bosques aleatorios, hay varios hiperparámetros que pueden
ser ajustados:

 n_estimadores: El parámetro n_estimadores especifica el número de árboles en el bosque


del modelo. El valor por defecto de este parámetro es 10, lo que significa que se construirán
10 árboles de decisión diferentes en el bosque aleatorio. Para este proyecto se ha
determinado que el mejor resultado se alcanza con un valor de 1000 n_estimadores. Se ha
decidido trabajar con 1000 n_estimadores después de probar manualmente una amplia
variedad de valores y obtener el mejor resultado con 1000 n_estimadores.

43
Memoria

 max_depth: El parámetro max_depth especifica la máxima profundidad de cada árbol. El


valor por defecto de max_depth es “None”, lo que significa que cada árbol se expandirá
hasta que cada hoja sea pura. Una hoja pura es aquella en la que todos los datos de la hoja
proceden de la misma clase. Para este proyecto se dejará el valor predeterminado “None”
ya que con él se obtiene el mejor resultado.

 max_features: El parámetro max_features es el número de características a considerar


cuando se busca la mejor división. Para nuestro modelo lo mejor es coger el máximo que
nos permita el programa para obtener la mayor precisión posible. En el caso de este
proyecto se utiliza un max_features de 5. Teniendo en cuenta que nuestro modelo trabaja
con 2 variables para predecir, al aplicar la función de bosques aleatorios, el máximo
max_features que nos permite el programa sin dar un error es 5. Cuanto mayor sea el
max_features más bifurcaciones podrá hacer el bosque aleatorio y, por lo tanto, obtener
mejores resultados.

Existen otros parámetros en esta metodología, pero quedan al margen del presente estudio ya que
no afectan significativamente a la mejora de los resultados del modelo. En el siguiente apartado se
presentarán los resultados del bosque aleatorio juntamente con los resultados obtenidos con el
modelo de regresión logística.

44
6. Métricas de evaluación
Para valorar los resultados de los modelos es necesario definir unas métricas de evaluación. Estas
métricas de evaluación («Evaluating a machine learning model.») nos van a permitir valorar la
modelización y posteriormente comparar el modelo de regresión logística con el modelo de
bosques aleatorios. Empezaremos definiendo y explicando las diferentes métricas de evaluación
que se usarán.

Se utilizarán 4 formas de evaluar los resultados: matriz de confusión, exactitud, precisión y recall.
Todas ellas ayudarán a entender mejor los resultados. Los resultados de un modelo pueden ser
buenos o malos según el punto de vista que utilicemos para evaluar. Un modelo puede pronosticar
muy bien un grupo determinado, por ejemplo, el grupo de ganadores, pero muy mal el grupo de
perdedores y viceversa. El proyecto presente busca determinar, con la mayor precisión, el resultado
final de un encuentro para saber qué equipo perderá y cuál ganará, de modo que no nos fijamos
solamente en una clase, sino que nos fijamos en ambas (victoria y derrota).

6.1. Matriz de confusión

Cuando se realizan predicciones de clasificación, hay cuatro tipos de resultados que podrían ocurrir:
verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos. El significado de los
resultados es:

 Los verdaderos positivos (VP) aparecen cuando predices que una observación pertenece a
una clase y realmente pertenece a esa clase.
 Los verdaderos negativos (VN) son cuando predices que una observación no pertenece a
una clase y en realidad no pertenece a esa clase.
 Los falsos positivos (FP) ocurren cuando predices que una observación pertenece a una
clase cuando en realidad no lo hace.
 Los falsos negativos (FN) ocurren cuando predices que una observación no pertenece a una
clase cuando en realidad sí pertenece.

Normalmente, estos cuatro resultados se muestran gráficamente en una matriz de confusión. La


siguiente matriz de confusión es un ejemplo para el caso de la clasificación binaria. Esta matriz se
genera después de hacer predicciones sobre los datos de la prueba para, posteriormente,
identificar cada predicción como uno de los cuatro posibles resultados descritos anteriormente. La
forma de una matriz de confusión se puede apreciar en la tabla 10.

45
Memoria

Tabla 10. Matriz de confusión (elaboración propia)

Valor Predicho 0 Valor Predicho 1

Valor Real Valores que son 0 y se han predicho Valores que son 0 y se han predicho
0 como 0 (VN) como 1 (FP)

Valor Real Valores que son 1 y se han predicho Valores que son 1 y se han predicho
1 como 0 (FN) como 1 (VP)

La diagonal principal de la tabla 10 muestra el número de valores predichos correctamente.


Mientras que la otra diagonal presenta los fallos que ha tenido el modelo en cuestión.

6.2. Exactitud

La exactitud, también conocida como tasa de acierto o en inglés accuracy score, hace referencia al
grado de acierto del modelo creado. Es decir, de todos los datos del conjunto de testeo cuántos han
sido clasificados de la forma correcta respecto al total. Se corresponde con la suma de la diagonal
principal de la matriz de confusión entre el total de datos del conjunto de testeo. La fórmula es la
siguiente:

𝑉𝑃+𝑉𝑁
𝑇𝑎𝑠𝑎 𝑑𝑒 𝑎𝑐𝑖𝑒𝑟𝑡𝑜 = (Ecuación 6. Tasa de acierto)
𝑉𝑃+𝑉𝑁+𝐹𝑃+𝐹𝑁

La tasa de acierto es la métrica más utilizada para juzgar un modelo. Sin embargo, no es un indicador
claro del rendimiento. Lo peor ocurre cuando las clases están desequilibradas y hay más clases de
un tipo que de otro. Para comprender mejor el funcionamiento de esta métrica se propondrá un
ejemplo que lleva a un extremo la teoría que estamos explicando.

Tomemos, por ejemplo, un modelo de detección de piezas defectuosas de una fábrica. Las
posibilidades de que salgan piezas defectuosas son muy bajas gracias a una máquina de última
generación. Supongamos que, de cada 100 piezas fabricadas, 90 piezas no tienen defectos y las 10
piezas restantes son defectuosas.

46
La empresa no puede permitirse entregar piezas defectuosas que no han sido detectadas (falso
negativo) a sus clientes. Detectar que todas las piezas son correctas da una precisión del 90% de
aciertos. Sin embargo, habrá 10 clientes insatisfechos por piezas defectuosas.

Volviendo al conjunto de datos del proyecto, como vimos en el apartado 4.4 análisis de datos, los
equipos que juegan como local ganan más partidos que los equipos que juegan como visitantes.
Por ello, nuestro modelo podría predecir falsos positivos pero tener una alta tasa de acierto.

6.3. Precisión

La precisión da el porcentaje de casos positivos sobre el total de casos positivos previstos. Esta
métrica se interpreta como si le preguntásemos al modelo cuánta razón tiene cuando dice que el
resultado que ha predicho es la victoria (1). Este término se calcula para cada uno de los grupos a
predecir y hace referencia al porcentaje de acierto al clasificar cada uno de los grupos. Si se quiere,
por ejemplo, calcular dicho término para la clase victoria (1), se hace de la siguiente forma:

𝑉𝑃
𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 𝑉𝑖𝑐𝑡𝑜𝑟𝑖𝑎 = (Ecuación 7. Precisión Victoria)
𝑉𝑃+𝐹𝑃

Generalmente, con Python y la función de cálculo de la precisión se coge el grupo de victoria como
se ha observado en la ecuación 7. Sin embargo, para el grupo derrota sería de la siguiente forma:

𝑉𝑁
𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 𝐷𝑒𝑟𝑟𝑜𝑡𝑎 = (Ecuación 8. Precisión Derrota)
𝑉𝑁+𝐹𝑁

6.4. Recall

El recall o sensibilidad se define como la fracción de resultados que se predijo que pertenecían a
una clase con respecto a todos los ejemplos que realmente pertenecen a la clase. Este término se
calcula también para cada uno de los grupos de la variable respuesta e indica el porcentaje de
acierto del total de cada clase. Si se quiere calcular dicho término para la clase victoria, se hace de
la siguiente forma:

𝑉𝑃
𝑅𝑒𝑐𝑎𝑙𝑙 𝑣𝑖𝑐𝑡𝑜𝑟𝑖𝑎 = (Ecuación 9. Recall victoria)
𝑉𝑃+𝐹𝑁

Si queremos calcular el recall para el grupo de derrota sería de la siguiente forma:

𝑉𝑁
𝑅𝑒𝑐𝑎𝑙𝑙 𝑑𝑒𝑟𝑟𝑜𝑡𝑎 = (Ecuación 10. Recall derrota)
𝑉𝑁+𝐹𝑃

47
Memoria

Con un buen uso de las cuatro métricas, explicadas anteriormente, se podrá valorar de forma
objetiva el resultado de nuestros modelos y en concreto se podrá decir cuál de ellos está actuando
de mejor manera.

48
7. Resultados
Llegados a este punto, se han explicado los modelos a utilizar y las métricas con las que se evaluarán
los resultados. Los datos están listos para ser introducidos en nuestros algoritmos inteligentes. Hay
que recordar que nuestra distribución de entrenamiento-testeo es de un 90% la primera y un 10%
la segunda. Las variables que usaremos para predecir el resultado final de un encuentro vienen
dadas por los cálculos de los ratings según la metodología de Massey, explicada en el apartado 5.1
de este proyecto. Con los datos divididos y los modelos ya aplicados a nuestros datos se da paso a
la presentación y la evaluación de los resultados.

Empezaremos con los resultados obtenidos con la metodología de regresión logística.


Seguidamente, presentaremos los resultados obtenidos con la metodología de árboles aleatorios.
Finalmente, concluiremos con una comparación entre ambos. En los resultados de regresión
logística presentaremos las fórmulas de las métricas de evaluación con los resultados reales
obtenidos en ese modelo. Los cálculos servirán para ver y entender el origen de los resultados. Se
aplicará solo para un modelo ya que el procedimiento es idéntico para el otro modelo.

7.1. Resultados Regresión Logística

La matriz de confusión es la fuente principal de resultados. A partir de ella se obtiene el resto de


métricas de evaluación. Como ya se ha explicado su funcionamiento en el punto 6.1, se presentan
los resultados obtenidos del modelo de regresión logística. Los resultados se pueden apreciar en la
tabla 11. El valor a predecir de nuestro modelo es el resultado del equipo local, consecuentemente
el resultado del equipo visitantes es el complementario. Si nuestro modelo predice un 1 (victoria)
para el equipo local, el complementario para el equipo visitante será un 0 (derrota) y viceversa.

Tabla 11. Matriz de confusión de la Regresión Logística (elaboración propia)

Valor Predicho 0 Valor Predicho 1

Valor Real 0 3 6

Valor Real 1 2 19

La matriz de confusión deja ver como nuestro modelo de regresión logística sobre ajusta mucho las
victorias locales. Este sobre ajuste o en inglés overfitting ocurre cuando está aprendiendo solo de
los casos particulares de entrenamiento y no es capaz de generalizar para los nuevos datos del

49
Memoria

conjunto de test. Obviamente, basado en los datos de entrenamiento, se podía apreciar la


superioridad de victorias de los equipos locales sobre los equipos visitantes. De treinta predicciones
que se hacen, nuestro modelo de regresión logística apuesta 25 veces por la victoria local y tan solo
5 por la derrota local. Esto implica que el hecho de sobre ajustar puede permitir predecir
correctamente muchas victorias locales, pero bajará estrepitosamente su nivel de acierto para las
derrotas locales. A continuación, en la tabla 12 se entenderá mejor el concepto.

Tabla 12. Métricas de evaluación de la Regresión Logística (elaboración propia)

Tasa de Acierto Precisión Victoria Precisión Derrota Recall Victoria Recall Derrota

0.73 0.76 0.60 0.90 0.33

El conjunto del modelo tiene una tasa de acierto del 73%, es decir, de 30 valores predichos 22 han
sido predichos correctamente.

3+19
𝑇𝑎𝑠𝑎 𝑑𝑒 𝑎𝑐𝑖𝑒𝑟𝑡𝑜 = = 0.73 (Ecuación 11. Cálculo tasa de acierto)
3+6+2+19

La precisión de victorias viene determinada por el número de victorias predichas, que, en este caso,
son 25 y el número de victorias reales que son 19. Por lo tanto, nuestro modelo tiene una precisión
de victoria del 76%.

19
𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 𝑉𝑖𝑐𝑡𝑜𝑟𝑖𝑎 = = 0.76 (Ecuación 12. Cálculo precisión victoria)
19+6

De la misma forma funciona la precisión de la derrota pero teniendo en cuenta los 0’s predichos y
los 0’s acertados. En este caso se confirma lo comentado al inicio y es que la precisión a la hora de
predecir las derrotas disminuye en comparación con la precisión de victorias. Nuestro modelo de
regresión logística cuenta con una precisión de derrota del 60%.

3
𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 𝐷𝑒𝑟𝑟𝑜𝑡𝑎 = = 0.6 (Ecuación 13. Cálculo precisión derrota)
3+2

El recall dictaminará el número de aciertos sobre el número de valores que realmente pertenecen
a ese grupo. En el recall de la victoria hay 21 casos que realmente pertenecen al grupo de la
victoria y el modelo ha predicho correctamente 19. Eso implica un recall de victoria del 90%.

19
𝑅𝑒𝑐𝑎𝑙𝑙 𝑣𝑖𝑐𝑡𝑜𝑟𝑖𝑎 = = 0.9 (Ecuación 14. Cálculo recall victoria)
19+2

50
Con el recall de la derrota se podrá apreciar el mal comportamiento del modelo de regresión
logística a la hora de pronosticar las derrotas. De un total de 9 derrotas en nuestro dataset de
testeo, nuestro modelo solo es capaz de pronosticar 3 derrotas correctamente. El recall de
derrota de regresión logística es del 33,3%.

3
𝑅𝑒𝑐𝑎𝑙𝑙 𝑑𝑒𝑟𝑟𝑜𝑡𝑎 = = 0.33 (Ecuación 15. Cálculo recall derrota)
3+6

En rasgos generales, el método de regresión logística es simple y efectivo. Obtenemos una tasa de
acierto del 73% lo que hace indicar que el modelo funciona y predice correctamente. Sin
embargo, gracias al resto de métricas de evaluación podemos ver las debilidades del modelo y es
que lo más preocupante es que su recall de derrota es del 33% compensado por un recall de
victoria del 90%. Concluimos que el modelo sobre ajusta mucho la información de entrenamiento
y es incapaz de predecir una derrota adecuadamente. Seguidamente veremos si con el modelo de
bosques aleatorios este overfitting desaparece por completo.

7.2. Resultados Bosque Aleatorio

La primera impresión de los resultados del bosque aleatorio es muy buena. A continuación, vemos
en la tabla 13 como el modelo se lanza a predecir más ceros y aumenta el número de derrotas
predichas correctamente. Con el primer vistazo a la matriz de confusión se podría afirmar que el
efecto de sobreajuste que teníamos en el modelo de regresión logística se ha difuminado. Este
hecho se debe, fundamentalmente, a la metodología de trabajo de los bosques aleatorios donde
prevalece la respuesta más popular de un conjunto de árboles de decisión. Al final, los posibles
errores de algunos árboles de decisión quedan camuflados por el conjunto, otorgando al modelo
una capacidad de generalizar sobre los datos de testeo y obteniendo unos resultados más fiables
en comparación con el modelo anterior.

51
Memoria

Tabla 13. Matriz de confusión del Bosque Aleatorio (elaboración propia)

Valor Predicho 0 Valor Predicho 1

Valor Real 0 7 2

Valor Real 1 4 17

Tabla 14. Métricas de evaluación del Bosque Aleatorio (elaboración propia)

Tasa de Acierto Precisión Victoria Precisión Derrota Recall Victoria Recall Derrota

0.8 0.89 0.63 0.80 0.77

El modelo de bosque aleatorio ha alcanzado una tasa de acierto del 80%, lo que significa que de
cada 10 predicciones 8 son correctas. Este nivel de acierto se considera interesante ya que ronda
un porcentaje de acierto notable y por encima de estudios realizados con otros modelos. En líneas
generales vemos todas las métricas, excepto una, mejoradas respecto al modelo de regresión
logística. La excepción es el recall de victoria, que ha disminuido un 10%. El hecho de que el recall
disminuya no es alarmante debido a que su disminución aumenta la fiabilidad del modelo en su
conjunto. La subida más fuerte viene encabezada por el recall de la derrota que pasa de ser un
33,3% en el modelo de regresión logística a un 77% en el modelo de bosque aleatorio. Esta subida
nos reafirma la desaparición del sobreajuste dando paso a una generalización justa y medida para
la mejora de la predicción de resultados. La precisión de la derrota sigue siendo un poco baja pese
a mejorar un 3% respecto al modelo de regresión logística. La poca mejora en la precisión de la
derrota podría encontrar explicación en el reducido volumen de datos de entrenamiento que
tenemos y lo poco común que es el suceso de la derrota del equipo local. Sin embargo, el modelo
de bosque aleatorio consigue aprender de los datos de entrenamiento que disponemos donde el
equipo local acaba perdiendo para obtener un recall de derrota del 77%.

Con este análisis no cabe duda de que el modelo ganador para predecir el resultado final de un
encuentro de baloncesto es el modelo de bosque aleatorio. En su conjunto es muy superior al de
regresión logística debido a su mayor complejidad. Seguro que un mayor número de datos de
entrenamiento donde haya más ejemplos de posibles casos, el bosque aleatorio sería capaz de
mejorar los resultados obtenidos en el presente proyecto. Seguidamente, en la tabla 15 se mostrará
la tabla comparativa de las dos técnicas. Esta tabla demuestra la mejora de rendimiento del bosque
aleatorio respecto al modelo de regresión logística.

52
Tabla 15. Comparativa directa de las métricas de evaluación de ambos métodos (elaboración
propia)

Tasa de Precisión Precisión Recall Recall


acierto Victoria Derrota Victoria derrota

Regresión Logística 0.73 0.76 0.60 0.90 0.33

Bosque Aleatorio 0.8 0.89 0.63 0.80 0.77

53
Memoria

8. Análisis del impacto ambiental


El presente proyecto no provoca un impacto directo sobre el medioambiente. Todas las
herramientas que posibilitan el proyecto se emplean a través de un ordenador. Indirectamente
puede haber un impacto medioambiental por la fabricación del ordenador y sus componentes, así
como la electricidad consumida por el mismo para desarrollar el proyecto. La realización de este
proyecto emplea una cantidad mínima de papel insuficiente como para ser considerada en esta
etapa.

Haciendo hincapié en el consumo energético, un ordenador portátil como el utilizado en este


proyecto tiene un consumo energético diario medio de 0,88 KWh («Ecorresponsabilidad») que sería
equivalente a 0,36 Kg de CO2. Teniendo en cuenta que se han contabilizado 500 horas de trabajo
con el portátil, al finalizar el trabajo se habrán emitido 180 kg de CO2 a la atmosfera. También se
considera el uso de redes a través de routers como una fuente de consumo energético. Por último,
se tienen en cuenta las fuentes de energía lumínica del entorno de trabajo, aun así, estas fuentes
solo se usan durante el periodo nocturno por lo que suponen un gasto ínfimo.

54
9. Planificación
En este apartado se muestra la planificación que se ha llevado a cabo a lo largo del proyecto hasta
su finalización, la tabla 16 muestra los datos con los que se ha creado el diagrama de Gantt de la
ilustración 34. Este diagrama integra cada una de las etapas desde el inicio hasta la presentación
del proyecto.

Tabla 16. Planificación y descripción de actividades (Fuente: elaboración propia)

Nombre Fecha de Duración Fecha


Descripción actividades
Actividad inicio en días finalización
Planificación Definición de objetivos y metodología 01/09/2020 10 11/09/2020
Formación e Python, bases de datos y Machine
02/09/2020 35 07/10/2020
investigación learning
Preparación y
Web scraping, creación bases de datos y
análisis de 07/10/2020 62 08/12/2020
análisis de datos
datos
Modelización Regresión logística, bosque aleatorio y
08/12/2020 20 28/12/2020
y resultados métricas de evaluación
Redacción memoria y preparación de
Memoria 07/10/2020 101 16/01/2021
anexos
Presentación Power Point y exposición oral 16/01/2021 22 07/02/2021

Diagrama Gantt
01/09/2020 02/10/2020 02/11/2020 03/12/2020 03/01/2021 03/02/2021

Planificación

Formación e investigación

Preparación y análisis de datos

Modelización y resultados

Memoria

Presentación

Ilustración 34. Diagrama de Gantt proyecto (elaboración propia)

55
Conclusiones
Una vez completado el proyecto, se considera que cada uno de los objetivos se han satisfecho. En
el cómputo global, la sensación es satisfactoria por los resultados y por el conocimiento adquirido,
que resulta necesario para poder completar cada una de las etapas. En especial, el conocimiento
adquirido es lo que más valor se le da una vez se echa la vista atrás. Se partía de una pequeña base
con conocimientos casi inexistentes sobre la materia, pero con tiempo, paciencia, perseverancia y
muchas ganas de aprender se han alcanzado todos los objetivos.

Al abordar un campo sobre el cual poco se sabe, es primordial asentar unas buenas bases y una
forma de pensar. Es importante ser fiel a la metodología y, para ello, es necesario entender y saber
aplicar las diferentes técnicas disponibles. Por ese motivo, en la primera parte del proyecto se
investigó sobre las diferentes metodologías de minería de datos para así seleccionar la que se
adaptaba mejor al proyecto.

Se escoge la metodología CRISP-DM y se consigue aplicarla como base del proyecto. Con el
conocimiento de la metodología CRISP-DM se cumple el primer objetivo y se establece una ruta
para el proyecto.

El siguiente paso en la ruta presenta dificultades no planeadas. Debido a la singularidad de la


temática y de los datos con los que se trabaja, el proyecto se topa con un muro para acceder a los
recursos necesarios. En esta fase de extracción y preparación de datos es necesario conocer muy
bien la fuente de datos y saber cómo explotarla. Se logra el objetivo con el uso de Python y las
técnicas de web scraping para sacar información que solo está disponibles en páginas web. Una vez
encontrada la fuente de datos y entendido el funcionamiento de las bases de datos se crea la base
de datos de la Liga Endesa para la temporada 2018-2019 con la que se realizará el modelaje del
trabajo. Con la base de datos creada, la comprensión de su estructura, su manipulación y su
almacenamiento, esta fase queda sellada logrando el objetivo.

Otra meta del trabajo se centraba en sacar información que describiese nuestro conjunto de datos
a estudiar. De la base de datos pudimos obtener máximas como la existencia de una ventaja del
equipo local para conseguir la victoria. Se extrajeron coeficientes de correlación donde se observó
cómo determinadas estadísticas de equipo tienen más peso que otras sobre el resultado final. Con
ello se comprendió la ventaja del equipo local, directamente relacionada con la disminución en la
actuación las estadísticas de los equipos visitantes. Este estudio satisface la finalidad relacionada
con el estudio de las bases de datos y la estadística.

Llegados a este punto, entramos en la fase que da nombre a una parte del título del proyecto.
Pronosticar si un equipo ganará o perderá un encuentro es uno de los objetivos más importantes

57
Memoria

del trabajo. Para ello, se estudia las diferentes metodologías de machine learning y se buscan las
que mejor se adaptan a nuestros datos. Tras lecturas y recomendaciones, se elige la regresión
logística y el bosque aleatorio para modelizar y pronosticar la victoria o derrota en un encuentro de
baloncesto. Se optó por estas técnicas de machine learning por su apropiado uso y sus resultados,
que nos permiten comparar diferentes comportamientos y comprender mejor cómo funcionan
internamente. Ambas técnicas otorgan resultados satisfactorios, pero el modelaje realizado con la
técnica de bosque aleatorio sorprende con unos resultados extraordinarios. Con el modelaje se
descubre que el volumen de datos para la fase de entrenamiento no es suficiente y se toman
medidas que al final favorecen al resultado. La puesta en práctica de estos algoritmos inteligentes
permite entender mejor la parte teórica.

La creación de los ratings es clave para poder modelizar. Sin entrar en valoraciones de resultados,
se llega a este punto con un objetivo más cumplido. Se ha entendido y aplicado correctamente una
metodología que permite pronosticar el resultado.

Como se numera en la introducción, el último objetivo de este exigente trabajo es la validación y


valoración de los resultados. Para ello se estudian y definen unas métricas de evaluación aplicables
a los resultados. Estas métricas nos indican que la modelización con el método de bosque aleatorio
es excelente y confirman que este método ofrece una predicción más precisa de nuestros datos
que la regresión logística.

Como se ha podido leer a lo largo de la memoria y en esta conclusión, todos los objetivos quedan
bien definidos y cumplidos. Se clasifica como un trabajo exigente debido a la naturaleza del deporte
a analizar y de las herramientas utilizadas. Su cumplimiento se considera satisfactorio y se pone en
valor el aprendizaje alcanzado gracias a la parte práctica donde se han desarrollado muchos códigos
en el lenguaje de programación Python que han permitido poner en práctica infinitos conceptos
teóricos.

58
DAFO
En este apartado se presenta el análisis DAFO del proyecto. Esta herramienta permite hacer un
estudio de la situación del proyecto analizando sus características internas y su situación externa.
El DAFO presenta un listado de fortalezas, oportunidades, debilidades y amenazas que permite
hacer una radiografía del proyecto. En la ilustración 35 muestra las reflexiones sobre el proyecto.

Ilustración 35. DAFO del proyecto (elaboración propia)

El DAFO muestra dos reflexiones por cada cuadrante. En las debilidades encontramos que la falta
de experiencia y pocos referentes sobre la temática supone una desventaja de inicio para el
proyecto. Pese a partir de cero, al evaluar el proyecto encontramos una capacidad rápida de
adquirir conocimientos y vemos como la comunidad detrás de la programación es muy grande y su
creatividad infinita. Por lo que la programación y en concreto la inteligencia artificial suponen un
recurso muy potente. Por otro lado, el desconocimiento en materia de machine learning de la
sociedad puede generar un sentimiento de poca fe. Al sentimiento de poca de fe le suman
proyectos más avanzados y especializado que podrán competir con el presente proyecto. Sin
embargo, el mero hecho de acceder al sector y llegar a adquirir todos los conocimientos
presentados en el proyecto en aproximadamente cinco meses supone una oportunidad de acceder
todavía a más conocimiento a medio y largo plazo. Por último, cabe destacar que la unión de
sectores siempre crea una fuerza mayor. En este proyecto se ha trabajado el machine learning con
el deporte, pero la aplicación a la industria mecánica es innumerable.

59
Presupuesto
En este apartado se realizará el presupuesto económico relacionado con la ejecución del presente
proyecto. Cada gasto se ha categorizado en: equipamiento, energía o personal. Por otro lado, se ha
añadido el tipo de pago: pago único o mensual. Los elementos de equipamiento, que se han
considerado como compra y no alquiler y se ha determinado un periodo de amortización de 3 años.
En el caso del ordenador portátil se calcula el precio para cada año de amortización y se tiene en
cuenta el tiempo de uso del portátil para el proyecto. Los meses dedicados al proyecto son 5
aproximadamente. Teniendo en cuenta que cada mes tiene 20 días laborales y que la jornada
laboral aplicada a este proyecto es de 5 horas por al día, quedará un total de 500 horas dedicadas
al proyecto.

Para la estimación del coste de internet se ha cogido una tarifa mensual de una compañía popular
y multiplicado por los meses de duración del proyecto. El coste energético, encabezado por el uso
del ordenador, ha sido calculado con el precio medio del KWh en España y el número de horas
totales dedicadas al proyecto. En cada una de las horas del proyecto el ordenador portátil ha estado
en funcionamiento.

El coste de personal viene dado por las 500 horas dedicas al proyecto y un coste por persona de 30
euros por hora. Solo una persona ha trabajado en el proyecto. De la misma forma se calcula el coste
por hora del consultor, en el concepto de consultor incluimos consultas a profesores, compañeros
y expertos en data science. Dentro del concepto de horas de consultor se han contabilizado 10
horas a un coste de 80 euros por hora.

Con todos los gastos sumados, se estima que la realización del proyecto tiene un coste de 16.190,64
€ sin IVA. El coste del proyecto con IVA es de 19.590,67 €. A continuación, en la tabla 17 se podrá
ver el resumen de las cuentas:

61
Memoria

Tabla 17. Resumen de gastos del proyecto (elaboración propia)


Tipo de Coste asociado al
Gasto Precio Tipo de gasto Amortización Horas
pago proyecto
Portátil 800,00 € Equipamiento Único 3 - 111,11 €
Internet 42,60 € Equipamiento Mensual - - 213,00 €
Precio kwh 0,1512 € Energía Mensual - 500 66,53 €
Coste hora
30,00 € Personal Mensual - 500 15.000,00 €
personal
Coste hora
80,00 € Personal Único - 10 800,00 €
consultor
Total 16.190,64 €
IVA 3.400,03€
TOTAL+IVA 19.590,67 €

62
Bibliografía
ACB.COM. [en línea], [sin fecha]. [Consulta: 8 enero 2021]. Disponible en: https://www.acb.com/.

Algoritmos TDIDT aplicado al Analisis de suelo | Aventuras durante la tesis. [en línea], [sin fecha].
[Consulta: 8 enero 2021]. Disponible en: https://yoshibauco.wordpress.com/.

Big Data para todos. [en línea], [sin fecha]. [Consulta: 8 enero 2021]. Disponible en:
http://traduccionesbigdata.blogspot.com/.

CARLOS, U., DE MADRID, I., GALÁN, V., TUTORA, C. y CASTRO GALÁN, E., 2015. Aplicación de la
Metodología CRISP-DM a un Proyecto de Minería de Datos en el Entorno Universitario. . S.l.:

Ecorresponsabilidad. [en línea], [sin fecha]. [Consulta: 9 enero 2021]. Disponible en:
http://www.ecorresponsabilidad.es/fichas/portatil.htm.

Evaluating a machine learning model. [en línea], [sin fecha]. [Consulta: 9 enero 2021]. Disponible
en: https://www.jeremyjordan.me/evaluating-a-machine-learning-model/.

Fases del proceso KDD según la metodología CRISP-DM Primeramente se... | Download Scientific
Diagram. [en línea], [sin fecha]. [Consulta: 8 enero 2021]. Disponible en:
https://www.researchgate.net/figure/Fases-del-proceso-KDD-segun-la-metodologia-CRISP-
DM-Primeramente-se-debe-estudiar-el_fig1_233426470.

FAYYAD, U., PIATETSKY-SHAPIRO, G. y SMYTH, P., 1996. From Data Mining to Knowledge Discovery
in Databases. [en línea]. S.l.: [Consulta: 8 enero 2021]. Disponible en: www.ffly.com/.

freeCodeCamp.org - YouTube. [en línea], [sin fecha]. [Consulta: 11 enero 2021]. Disponible en:
https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ.

International Basketball Federation (FIBA) - FIBA.basketball. [en línea], [sin fecha]. [Consulta: 8
enero 2021]. Disponible en: http://www.fiba.basketball/es.

La ACB estrena nueva imagen corporativa. [en línea], [sin fecha]. [Consulta: 8 enero 2021].
Disponible en: https://fullbasket.es/2019/09/19/la-acb-estrena-nueva-imagen-corporativa/.

Liga ACB - Wikipedia, la enciclopedia libre. [en línea], [sin fecha]. [Consulta: 9 enero 2021].
Disponible en: https://es.wikipedia.org/wiki/Liga_ACB.

Machine Learning- Decision Trees and Random Forest Classifiers | by Karan Kashyap | Analytics
Vidhya | Medium. [en línea], [sin fecha]. [Consulta: 9 enero 2021]. Disponible en:
https://medium.com/analytics-vidhya/machine-learning-decision-trees-and-random-forest-
classifiers-81422887a544.

Machine Learning, Data Science, Big Data, Analytics, AI. [en línea], [sin fecha]. [Consulta: 8 enero
2021]. Disponible en: https://www.kdnuggets.com/.

63
Annexos

MASSEY, K., 1997. Statistical Models Applied to the Rating of Sports Teams. Honors project in
mathematics, pp. 1-78.

OLIVER, D., 2004. Basketball on paper : rules and tools for performance analysis. 2004. Washington,
D.C.: Brassey’s, Inc. ISBN 9781597973311 1597973319.

Qué es el web scraping - Aukera. [en línea], [sin fecha]. [Consulta: 9 enero 2021]. Disponible en:
https://aukera.es/blog/web-scraping/.

Regresión Logística para Clasificación - IArtificial.net. [en línea], [sin fecha]. [Consulta: 9 enero 2021].
Disponible en: https://www.iartificial.net/regresion-logistica-para-clasificacion/.

SAS Help Center: Introduction to SEMMA. [en línea], [sin fecha]. [Consulta: 8 enero 2021].
Disponible en:
https://documentation.sas.com/?docsetId=emref&docsetTarget=n061bzurmej4j3n1jnj8bbjj
m1a2.htm&docsetVersion=14.3&locale=en.

SHAFIQUE, U. y QAISER, H., 2014. A Comparative Study of Data Mining Process Models (KDD, CRISP-
DM and SEMMA). International Journal of Innovation and Scientific Research [en línea]. S.l.:
[Consulta: 11 enero 2021]. Disponible en: http://www.ijisr.issr-journals.org/.

Tutorial de la matrix de correlacion de Python - Like Geeks. [en línea], [sin fecha]. [Consulta: 9 enero
2021]. Disponible en: https://likegeeks.com/es/matrix-correlacion-python/.

Understanding Random Forest. How the Algorithm Works and Why it Is… | by Tony Yiu | Towards
Data Science. [en línea], [sin fecha]. [Consulta: 9 enero 2021]. Disponible en:
https://towardsdatascience.com/understanding-random-forest-58381e0602d2.

64
Anexo
Se podrán encontrar todos los anexos adjuntos en la misma plataforma que la presente memoria.
Los anexos son documentos con extensión “.ipynb”, “.xlsx” y “.ppt”.

Anexo Código Programación

 Anexo 1: Web Scraping (Anexo 1).ipynb


 Anexo 2: Limpieza Datos Proyecto (Anexo 2).ipynb
 Anexo 3: Result Local (Anexo 3).ipynb
 Anexo 4: Result Visitant (Anexo 4).ipynb
 Anexo 5: COMPLET (Anexo 5).ipynb
 Anexo 6: ULTIMTE PREMIUN DATASET (Anexo 6).ipynb
 Anexo 7: DF SIMPLE (Anexo 7).ipynb
 Anexo 8: Histogramas (Anexo 8).ipynb
 Anexo 9: Discover and Visualize the Data to Gain Insights (Anexo 9).ipynb
 Anexo 10: Matriz de correlación (Anexo 10).ipynb
 Anexo 11: Massey rating (Anexo 11).ipynb
 Anexo 12: Massey Rating Valoración (Anexo 12).ipynb
 Anexo 13: Dataframe Dos Ratings (Anexo 13).ipynb
 Anexo 14: Logistic regression regresión 2 ratings (Anexo 14).ipynb
 Anexo 15: random forest classifier 2 ratings (Anexo 15).ipynb

Anexo Excel y Otros

 Anexo 16: Tablas memoria (Anexo 16)


 Anexo 17: DAFO (Anexo 17)

65

También podría gustarte