scieee AI-readable full text Open interactive document viewer

Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel

Cartes Domínguez, Guillermo

Abstract

El procesamiento de datos en la práctica deportiva es un hecho cada vez más presente a todos los niveles, desde profesionales en búsqueda de herramientas que permitan mejorar su rendimiento, hasta principiantes motivados por la cuantificación de su actividad física. En este trabajo se lleva a cabo una comparación entre algunos de los principales algoritmos de aprendizaje automático con el fin de clasificar golpes de pádel. Estos son: redes neuronales, redes neuronales convolucionales 1D, árbol de decisión, K vecinos más próximos y máquinas de vector soporte. Antes de llevar a cabo una clasificación de golpes de pádel se necesita una base de datos suficientemente representativa que recoja numerosos ejemplos de la realización de estos golpes. Dado que no existe en la literatura un conjunto de datos similar, se procede a la creación de este, para lo que se desarrolla un sistema de recogida de datos basado en un dispositivo electrónico que cuenta con una unidad de medida inercial (IMU). Por último, se estudia el comportamiento de cada algoritmo con el conjunto de datos creado.

Full text

Equation Chapter 1 Section 1 Trabajo Fin de Máster Ingeniería Industrial Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Autor: Guillermo Cartes Domínguez Tutores: Daniel Gutiérrez Reina Alejandro Tapia Córdoba Evelia Franco Álvarez Dpto. Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021 iii Trabajo Fin de Máster Ingeniería Industrial Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Autor: Guillermo Cartes Domínguez Tutores: Daniel Gutiérrez Reina Profesor Contratado Doctor Alejandro Tapia Córdoba Profesor Contratado Doctor Evelia Franco Álvarez Profesor Contratado Doctor Dpto. Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2021 v Trabajo Fin de Máster: Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Autor: Guillermo Cartes Domínguez Tutor: Daniel Gutiérrez Reina Alejandro Tapia Córdoba Evelia Franco Álvarez El tribunal nombrado para juzgar el Trabajo arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2021 El Secretario del Tribunal vii A mi familia A mis amigos A mis profesores ix Agradecimientos En primer lugar, agradecer a Daniel Gutiérrez Reina haberme dado la oportunidad de realizar un proyecto tan interesante junto con un gran equipo que me ha permitido adentrarme en el mundo de la inteligencia artificial de una forma excitante y práctica. Así pues, agradecer a Evelia Franco Álvarez y Alejandro Tapia Córdoba haber querido ser partícipes de mi trabajo final de máster. Por otro lado, la creación de la base de datos ha sido posible gracias a la colaboración desinteresada de numerosos jugadores de pádel, a los que agradezco su entusiasmo y entrega en cada golpe realizado. Gracias a Guillermo Castilla Gómez, Juan Manuel Garrido Bogado, Alejandro Moral Lozano, Carlotta Casali Vannicelli, Antonio Alfonso Morales Santiago, Marta Morales Rodríguez, Gonzalo Guadalix Arribas, Luka Payras Mirkine, Guillermo Avilés López, Cristina Blanco Pérez, Lucía Morales Rodríguez y Pablo Megino Cañaveras. Por último, este trabajo concluye seis intensos años en la Escuela Técnica Superior de Ingeniería de Sevilla. Gracias a mis compañeros, por hacer más amenas las horas en la escuela y por haberse convertido muchos de ellos en amigos. Gracias infinitas a mis padres, Rafael y Mari Ángeles, por hacer de mí la persona que soy hoy; y gracias a mi hermano Rafa y a Marta, por ser apoyos incondicionales. Guillermo Cartes Domínguez Sevilla, 2021 5.1.5 Overfitting 24 5.1.6 Regularización 24 5.1.7 Librerías para aprendizaje automático 24 5.2 Redes neuronales densamente conectadas 24 5.2.1 Perceptrón 25 5.2.2 Proceso de aprendizaje 27 5.2.3 Hiperparámetros 29 5.2.4 Overfitting y regularización 30 5.3 Redes neuronales convolucionales 1D 30 5.3.1 Hiperparámetros 32 5.4 Árbol de decisión 32 5.4.1 Estructura 32 5.4.2 Función de impureza 33 5.4.3 Hiperparámetros 34 5.5 K Vecinos más próximos (KNN) 34 5.6 Máquinas de vector soporte (SVM) 35 5.6.1 Problema multiclase 36 5.6.2 Hiperparámetros 36 6 Resultados 37 6.1 Redes neuronales densamente conectadas 39 6.1.1 Red neuronal densa con serie temporal 39 6.1.2 Red neuronal densa con feature engineering 43 6.1.3 Resumen de resultados de redes neuronales densamente conectadas 46 6.2 Redes neuronales convolucionales 1D 47 6.2.1 Clasificador con una capa convolucional y una capa densa 47 6.2.2 Clasificador con una capa convolucional y dos capas densas 49 6.2.3 Clasificador con dos capas convolucionales y una capa densa 51 6.2.4 Clasificador con dos capas convolucionales y dos capas densas 53 6.2.5 Resumen de resultados de redes neuronales convolucionales 1D 55 6.3 Árbol de decisión 56 6.3.1 Árbol de decisión con serie temporal 56 6.3.2 Árbol de decisión con feature engineering 57 6.3.3 Resumen de resultados de árbol de decisión 58 6.4 K Vecinos más próximos (KNN) 59 6.4.1 KNN con serie temporal 59 6.4.2 KNN con feature engineering 61 6.4.3 Resumen de resultados KNN 63 6.5 Máquinas de vector soporte (SVM) 63 6.5.1 SVM con serie temporal 63 6.5.2 SVM con feature engineering 66 6.5.3 Resumen de resultados SVM 68 6.6 Resumen final de los resultados 69 7 Conclusiones y trabajos futuros 71 7.1 Conclusiones 71 7.2 Trabajos futuros 71 Referencias 75 xvii ÍNDICE DE TABLAS Tabla 1. Estudio de mercado de IMUs 5 Tabla 2. Deportistas del conjunto de datos. 13 Tabla 3. Matriz de confusión del detector de golpes. 17 Tabla 4. Conjunto de datos final 22 Tabla 5. Configuraciones red neuronal densa. Serie temporal. Clasificador con dos capas. 40 Tabla 6. Configuraciones red densa. Serie temporal. Clasificador con tres capas. 42 Tabla 7. Configuraciones red neuronal densa. Feature engineering. Clasificador con dos capas. 43 Tabla 8. Configuraciones red neuronal densa. Feature engineering. Clasificador con tres capas. 45 Tabla 9. Configuraciones CNN1D. Clasificador con una capa convolucional y una capa densa. 47 Tabla 10. Configuraciones CNN1D. Clasificador con una capa convolucional y dos capas densas. 49 Tabla 11. Configuraciones CNN1D. Clasificador con dos capas convolucionales y una capa densa. 51 Tabla 12. Configuraciones CNN1D. Clasificador con dos capas convolucionales y dos capas densas. 53 Tabla 13. Configuraciones árbol de decisión con serie temporal. 56 Tabla 14. Configuraciones árbol de decisión con feature engineering. 57 Tabla 15. Algoritmo KNN con serie temporal. Accuracy en función de k. 59 Tabla 16. Algoritmo KNN con feature engineering. Accuracy en función de k. 61 Tabla 17. Algoritmo SVM con serie temporal. Accuracy (%) en función de kernel y C. 64 Tabla 18. Algoritmo SVM con feature engineering. Accuracy (%) en función de kernel y C. 66 Tabla 19. Resumen de resultados. 69 xix ÍNDICE DE FIGURAS Figura 1. Pista de pádel. 7 Figura 2. Palas y pelota de pádel. 8 Figura 3. Ejes del Sense Hat. 9 Figura 4. Raspberry Pi + Sense Hat + Plataforma. 9 Figura 5. Sistema de toma de datos. 10 Figura 6. Golpes en la base de datos por tipo de golpe. 14 Figura 7. Deportista durante una sesión de toma de datos. 15 Figura 8. Diagrama de flujo del detector de golpes 16 Figura 9. Detección de golpes durante una prueba. 18 Figura 10. Ejemplo de golpe de derecha. 19 Figura 11. Ejemplo de golpe de revés. 19 Figura 12. Comparación de un golpe de derecha con un golpe de revés. 20 Figura 13. Diagrama de flujo del creador del dataset. 21 Figura 14. Inteligencia Artificial, Machine Learning y Deep Learning. 25 Figura 15. Diagrama de un perceptrón con 5 señales de entrada. 25 Figura 16. División de clases. Perceptrón. 26 Figura 17. Función de activación en escalón (roja) vs sigmoid (azul). 27 Figura 18. Red neuronal densamente conectada. Ejemplo con dos capas. 27 Figura 19. Funciones de activación a) Linear, b) Sigmoid, c) Tanh, d) ReLU 28 Figura 20. Forwardpropagation, backwardpropagation y loss. Disponible en [26]. 29 Figura 21. Aplicación de dropout a una red reuronal. Disponible en [28]. 30 Figura 22. Operación de convolución. 31 Figura 23. Ejemplo de kernel para golpes de pádel. 31 Figura 24. Árbol de decisión de 7 clases. 33 Figura 25. Ejemplo algoritmo KNN. 35 Figura 26. Ejemplo algoritmo SVM. 36 Figura 27. Serie temporal vs feature engineering. 38 Figura 28. Red neuronal densa con serie temporal. Clasificador con dos capas. Accuracy para mejores hiperparámetros. 40 Figura 29. Red neuronal densa con serie temporal. Clasificador con dos capas. Matriz de confusión. 41 Figura 30. Red densa con serie temporal. Clasificador con tres capas. Accuracy para mejores hiperparámetros. 42 Figura 31. Red neuronal densa con serie temporal. Clasificador con 3 capas. Matriz de confusión. 43 Figura 32. Red neuronal densa con feature engineering. Clasificador con dos capas. Accuracy para mejores hiperparámetros. 44 Figura 33. Red neuronal densa con feature engineering. Clasificador con dos capas. Matriz de confusión. 44 Figura 34. Red neuronal densa con feature engineering. Clasificador con tres capas. Accuracy para mejores hiperparámetros. 45 Figura 35. Red neuronal densa con feature engineering. Clasificador con tres capas. Matriz de confusión. 46 Figura 36. Resumen de la accuracy para los clasificadores de red neuronal densa. 47 Figura 37. CNN1D. Clasificador con una capa convolucional y una capa densa. Accuracy para mejores hiperparámetros. 48 Figura 38. CNN1D. Matriz de confusión para una capa convolucional y una capa densa. 49 Figura 39. CNN1D. Clasificador con una capa convolucional y dos capas densas. Accuracy para mejores hiperparámetros. 50 Figura 40. CNN1D. Matriz de confusión para una capa convolucional y dos capas densas. 51 Figura 41. CNN1D. Clasificador con dos capas convolucionales y una capa densa. Accuracy para mejores hiperparámetros. 52 Figura 42. CNN1D. Matriz de confusión para dos capas convolucionales y una capa densa. 53 Figura 43. CNN1D. Clasificador con dos capas convolucionales y dos capas densas. Accuracy para mejores hiperparámetros. 54 Figura 44. CNN1D. Matriz de confusión para dos capas convolucionales y dos capas densas. 55 Figura 45. Resumen de la accuracy para los clasificadores CNN1D. 55 Figura 46. Árbol de decisión con serie temporal. Accuracy para mejores hiperparámetros. 56 Figura 47. Árbol de decisión con serie temporal. Matriz de confusión. 57 Figura 48. Árbol de decisión con feature engineering. Accuracy para mejores hiperparámetros. 58 Figura 49. Árbol de decisión con feature engineering. Matriz de confusión. 58 Figura 50. Resumen de la accuracy para los clasificadores de árbol de decisión. 59 Figura 51. Algoritmo KNN con serie temporal. Diagrama de bigotes en función de k. 60 Figura 52. Algoritmo KNN con serie temporal. Matriz de confusión para k=1. 60 Figura 53. Algoritmo KNN con serie temporal. Accuracy para k=1. 61 Figura 54. Algoritmo KNN con feature engineering. Diagrama de bigotes en función de k. 62 Figura 55. Algoritmo KNN con feature engineering. Matriz de confusión para k=1. 62 Figura 56. Algoritmo KNN con feature engineering. Accuracy para k=1. 63 Figura 57. Algoritmo KNN. Resultados de la serie temporal vs feature engineering para k=1. 63 Figura 58. Algoritmo SVM con serie temporal. Diagrama de bigotes en función de kernel y C. 64 Figura 59. Algoritmo SVM con serie temporal. Matriz de confusión para kernel radial con C=10. 65 Figura 60. Algoritmo SVM con serie temporal. Accuracy para kernel radial y C=10. 65 Figura 61. Algoritmo SVM con feature engineering. Diagrama de bigotes en función de kernel y C. 66 Figura 62. Algoritmo SVM con feature engineering. Matriz de confusión para kernel radial con C=100. 67 Figura 63. Algoritmo SVM con feature engineering. Accuracy para kernel radial y C=100. 67 Figura 64. Algoritmo SVM. Resumen de los resultados. 68 Figura 65. Algoritmo SVM. Resultados de la serie temporal vs feature engineering para mejor hiperparametrización. 68 xxi Figura 66. Accuracy para la mejor hiperparametrización de cada algoritmo. 69 Figura 67. Ejemplo de la técnica window warping para el aumento de datos. Disponible en [40]. 72 Figura 68. Nuevo diseño del dispositivo de toma de datos. 73 Figura 69. Encapsulamiento del sensor BNO055. 73 Figura 70. Sistema para una predicción en tiempo real. 74 xxiii Notación MEMS Microelectromechanical Systems IoT Internet of Things MOSFET Metal Oxide Semiconductor Field Effect Transistor IMU Inertial Measurement Unit DOF Degrees of Freedom CNN Convolutional Neural Network KNN K Nearest Neighbors SVM Support Vector Machines LSTM Long Short-Term Memory ODR Output Data Rate BDO Bit Data Output HAR Human Activity Recognition BLE Bluetooth Low Energy CSV Comma Separated Values 1 1 INTRODUCCIÓN n los últimos años, el uso de sistemas microelectromecánicos (MEMS) ha vivido una gran expansión en multitud de sectores, a pesar de que esta tecnología se venía desarrollando desde varias décadas atrás. Su origen tiene lugar con la revolución del silicio, gracias a dos importantes invenciones en 1959: el chip de circuito integrado y el Metal Oxide Semiconductor Field Effect Transistor (MOSFET), que condujo a la miniaturización de la electrónica, tal y como predijo la ley de Moore [1]. La fabricación masiva de estos sistemas debido a la popularidad de su uso en multitud de dispositivos inteligentes ha provocado una bajada drástica de su precio, facilitando así su expansión en todos los ámbitos [2]. Un uso muy conocido de estos sistemas MEMS son los wearables, dispositivos de tamaño reducido que se colocan en el cuerpo humano e interactúan con él y otros dispositivos para una finalidad concreta. Estos dispositivos, que pueden ser pulseras, relojes o anillos, entre otros, recogen información del cuerpo que puede ser procesada por ellos mismos o por otro dispositivo al que estén conectados de forma remota. Esta interconexión digital de objetos a través de la red es lo que se conoce como el internet de las cosas (IoT, por sus siglas en inglés), donde cada objeto (no necesariamente wearables) puede mandar y recibir información sin necesidad de intervención humana. Los wearables que han conseguido más popularidad son aquellos que cuantifican la actividad física y realizan un seguimiento biométrico. Un ejemplo son las pulseras y relojes inteligentes, los cuales permiten realizar un seguimiento continuo de los movimientos y actividades que realiza la persona que lo utiliza. Es común ver que los usuarios de esta tecnología cuantifican diariamente los pasos realizados, la distancia recorrida o las horas de sueño. Para poner en magnitud la popularidad de estos dispositivos, según un estudio de mercado del CCS Insight [3], el pasado año 2020 se vendieron 193 millones de dispositivos en todo el mundo, con un valor de mercado de 24.000 millones de dólares. Además, para 2021 se estima un crecimiento del 24%, alcanzando los 239 millones de unidades de venta [3]. Estas pulseras de actividad también se usan para seguimiento biométrico; ya que pueden realizar, entre otras cosas, electrocardiogramas o mediciones de cantidad de oxígeno en sangre, habiéndose popularizado este último con la llegada del coronavirus SARS-CoV-2. También son útiles para el seguimiento de personas dependientes, donde la rápida detección de caídas o accidentes puede jugar un papel fundamental en una situación de emergencia. Ahora bien, ¿para qué usar estos dispositivos en la práctica deportiva a todos los niveles? La respuesta es sencilla: dan acceso a millones de datos. Los datos son la base de la información y con la información se construye el conocimiento [4]. Hoy en día existe la posibilidad de procesar cantidades enormes de datos; un fenómeno que está transformando los deportes profesionales en prácticamente todos los niveles, desde los aficionados en sus casas hasta los deportistas en el terreno de juego, pasando por cuerpos técnicos, médicos y clubes. Esta tecnología permite realizar diversas acciones como comparar el rendimiento de los jugadores o recopilar las estadísticas de los partidos [5]. Cualquier dato generado en el terreno de juego es susceptible de ser analizado y estudiado. Por ejemplo, en un partido de tenis de una hora y media de duración se generan unos 70.000 registros, y durante un partido de fútbol se pueden llegar a capturar alrededor de ocho millones de datos [6]. Resulta evidente que esta ingente cantidad de información solo puede ser analizada mediante las nuevas tecnologías. Si E “Nunca consideres el estudio como una obligación, sino como una oportunidad para penetrar en el bello y maravilloso mundo del saber.” - Albert Einstein - Clasificación de golpes y sistema desarrollado 8 Figura 2. Palas y pelota de pádel. Disponible en: https://www.compramejor.es/mejores-palas-padel/ [Consulta 08/11/2021] 3.1 Problema de clasificación de golpes Como se vio en el punto 2, la clasificación de golpes de pádel puede ser considerada como una clasificación de movimientos de mano. Por tanto, la clasificación de golpes consistirá en identificar qué movimiento ha realizado el deportista con la mano con la que coge su pala. Para ello se hace uso de dos sensores: un acelerómetro y un giroscopio, colocados en la muñeca del deportista, mediante los cuales se consiguen 6 grados de libertad: tres aceleraciones lineales y tres velocidades angulares. Para llevar a cabo la clasificación, los algoritmos de machine learning necesitan una base de datos que recoja multitud de muestras de aquellos datos que se quieran clasificar, en este caso golpes de pádel. Por tanto, un objetivo previo a la clasificación es crear dicha base de datos. Para ello, se necesita un dispositivo que recoja los datos del golpe como son las velocidades y aceleraciones que experimenta la mano del deportista cuando realiza cada golpe, además de un sistema de detección de golpes que permita guardar cada golpe de forma estándar y eliminar aquella información que no es de interés. A continuación, se verán cada uno de los puntos anteriores. 3.2 Dispositivo para toma de muestras El dispositivo para la toma de muestra consta de los siguientes componentes hardware y software: 3.2.1 Raspberry Pi Una Raspberry Pi es un ordenador de placa simple de bajo coste desarrollado por la Raspberry Pi Foundation. Fue diseñado originalmente para la enseñanza de informática en las escuelas, aunque su potencial ha provocado que su uso se extienda por más ámbitos [20]. El modelo utilizado es una Raspberry Pi 4 que cuenta con 4GB de RAM. 3.2.2 IMU Una unidad de medida inercial o IMU, por sus siglas en inglés, es un dispositivo electrónico que mide las velocidades y aceleraciones que sufre un objeto. Consta de un acelerómetro, que mide las aceleraciones lineales en los 3 ejes del espacio, y de un giroscopio, que mide las velocidades angulares en los 3 ejes. En algunos casos cuenta también con un magnetómetro, que mide el campo magnético en cada eje del espacio. 9 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel La IMU utilizada es la LSM9DS1, la cual está incorporada en el Sense Hat, un dispositivo que se conecta a la Raspberry Pi a través del GPIO. Figura 3. Ejes del Sense Hat. 3.2.3 Plataforma Para poder colocar la Raspberry Pi a la muñeca, se ha fabricado una plataforma impresa en 3D sobre la que se conecta la placa mediante tornillos y se sujeta a la muñeca mediante velcros. Figura 4. Raspberry Pi + Sense Hat + Plataforma. El dispositivo tiene unas dimensiones de 99x68x24 mm y un peso de 103 gramos. Pese a la robustez del dispositivo, permite realizar los movimientos típicos de pádel sin dificultades, dado que se trata de un deporte donde la muñeca no suele tener mucho movimiento, como sí es el caso de otros deportes de raqueta como el tenis de mesa. 3.2.4 Batería externa La alimentación de la Raspberry Pi se realiza mediante USB por una batería externa portátil, de las que se usan habitualmente para cargar los smartphones. La Raspberry Pi 4 se carga a 5V 3A, una configuración común en la telefonía móvil actual, por lo que hay en el mercado un amplio abanico de posibilidades. 3.2.5 VNC Viewer VNC es un programa que permite tomar el control del ordenador servidor remotamente a través de un cliente multiplataforma. Por tanto, permite gobernar remotamente la Raspberry Pi desde cualquier ordenador. Para llevarlo a cabo, se establece una conexión Wifi a través de un smartphone, a la que se conectarán tanto el ordenador como la Raspberry. Esta conexión es importante ya que permite guardar los datos etiquetados correctamente. Clasificación de golpes y sistema desarrollado 10 3.2.6 Python Python es un lenguaje de programación de código abierto, dinámico, interpretado y multiplataforma. Es administrado por la Python Software Foundation, y fue creado a finales de los ochenta por Guido van Rossum [21]. Es el tercer lenguaje más usado en el mundo, por detrás de C y Java, especialmente popular en el procesamiento de datos. Este lenguaje se ha usado tanto en la programación del dispositivo de toma de muestras como en el algoritmo de clasificación. La multitud de librerías de las que Python dispone hace que sea un lenguaje muy indicado para este proyecto. 3.3 Sistema desarrollado El dispositivo para toma de muestras cuenta, por tanto, con la IMU del Sense Hat (LSM9DS1) conectada a la Raspberry Pi. Ambos se dispondrán colocados en la muñeca del deportista para poder llevar a cabo la toma de muestras. La Raspberry Pi se alimenta vía USB mediante una batería externa portátil, que irá colocada en la cintura del deportista. Por último, la Raspberry se conecta gracias a VNC Viewer a un ordenador portátil de forma inalámbrica mediante una red Wifi, que es proporcionada por un smartphone. En la Figura 5 se muestra un esquema de esta configuración. Figura 5. Sistema de toma de datos. 11 4 CONJUNTO DE DATOS 4.1 Caracterización del conjunto de datos. Como punto de partida es importante determinar qué golpes se quieren clasificar. Existen multitud de golpes de pádel, los cuales se pueden realizar con diferentes efectos o dejando que la pelota toque la pared antes de devolverla. Para este estudio, se considerarán los golpes más comunes en base a la consulta de dos expertos, ambos entrenadores nacionales. Se tendrá en cuenta si se ha realizado el golpe antes o después de rebotar la pelota en la pared, pero no se considerará el efecto de la pelota en cada golpe. Así pues, se clasificará 13 golpes distintos: 0. Fondo derecha 1. Fondo revés 2. Derecha con pared 3. Revés con pared 4. Globo de derecha 5. Globo de revés 6. Globo de derecha con pared 7. Globo de revés con pared 8. Volea de derecha 9. Volea de revés 10. Bandeja 11. Remate 12. Saque A continuación, se explicará en qué consiste cada uno de los golpes anteriores. Cabe destacar que la numeración de cada golpe en el listado coincide con el número que lo representa en la base de datos, como se verá más adelante. 0. Fondo derecha: se golpea la pelota del mismo lado del brazo hábil del jugador, después de que la pelota bote en el suelo, habitualmente ligeramente por detrás de la línea de servicio. 1. Fondo revés: es el golpe opuesto al de derecha, ya que la pelota se golpea del lado contrario al brazo hábil del jugador. También se realiza después de botar la pelota, habitualmente ligeramente por detrás de la línea de servicio. 2. Derecha con pared: es un golpe que se realiza hacia delante después de que la pelota haya contactado con la pared del fondo de la pista, golpeando la bola del mismo lado del brazo hábil del jugador. 3. Revés con pared: es un golpe que se realiza hacia delante después de que la pelota haya contactado con la pared del fondo de la pista, golpeando la bola del lado contrario al brazo hábil del jugador. 4. Globo de derecha: es un golpe de defensa que busca lanzar la pelota con una altura suficiente como para que el jugador contrario que se encuentra cerca de la red no logre devolverla desde su posición y se vea obligado a retroceder. Se golpea la pelota del mismo lado del brazo hábil del jugador. 5. Globo de revés: es un golpe de defensa que busca lanzar la pelota con una altura suficiente como para que el jugador contrario que se encuentra cerca de la red no logre devolverla desde su posición y se vea obligado a retroceder. Se golpea la pelota del lado contrario al brazo hábil del jugador. 6. Globo de derecha con pared: es un golpe de defensa que busca elevar la pelota para que el jugador contrario retroceda, golpeando la pelota del mismo lado del brazo hábil del jugador. A diferencia del globo de derecha, en este caso se golpea la bola después de que haya contactado con la pared del fondo Conjunto de datos 12 de la pista. 7. Globo de revés con pared: es un golpe de defensa que busca elevar la pelota para que el jugador contrario retroceda, golpeando la pelota del lado contrario al brazo hábil del jugador. A diferencia del globo de revés, en este caso se golpea la bola después de que haya contactado con la pared del fondo de la pista. 8. Volea de derecha: es un golpe de ataque que se realiza cerca de la red y sin dejar botar la pelota. Busca mantener al contrario en el fondo de la pista y ganar el punto. La pelota se golpea del mismo lado del brazo hábil del jugador. 9. Volea de revés: es un golpe de ataque que se realiza cerca de la red y sin dejar botar la pelota. Busca mantener al contrario en el fondo de la pista y ganar el punto. La pelota se golpea del lado contrario al brazo hábil del jugador. 10. Bandeja: en un golpe a medio camino entre una volea y un remate que se realiza en media pista y busca no perder la iniciativa en la red. Se realiza del lado del brazo hábil del jugador. 11. Remate: golpe que se realiza extendiendo el brazo hacia arriba y golpeando la bola en el punto más alto. Se realiza del lado del brazo hábil del jugador con la intención de finalizar el punto. 12. Saque: es el golpe con el que se inicia el juego y es el único en el que el propio jugador se coloca la bola. El contacto con la bola debe ser a la altura de la cintura o por debajo, y siempre después de haber botado la bola. A diferencia que en el tenis no se busca ganar el punto directo, se pretende poner en dificultad al contrario para poder ganar la posición de ataque en la red. Se realiza del lado del brazo hábil del jugador. Aunque existen otros golpes propios del pádel como son: la bajada de pared, la chiquita o el remate por tres, se consideran que los golpes anteriores son los más representativos y comunes en un partido de pádel. El trabajo propuesto se podría extender fácilmente para considerar otros golpes de pádel. Conocidos los golpes que se recogerán en el conjunto de datos, se pasará a exponer cómo es exactamente. La base de datos ha sido realizada con 12 personas, de las que cabe destacar las siguientes características: 13 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Tabla 2. Deportistas del conjunto de datos. ID Deportista Sexo Nivel Mano Revés Altura (cm) Edad (años) Número de golpes 1 Hombre 1 Diestro 1 178 37 109 2 Mujer 2 Diestro 1 157 34 157 3 Hombre 2 Diestro 1 187 23 136 4 Hombre 3 Diestro 1 175 47 313 5 Hombre 4 Diestro 1 176 38 269 6 Mujer 5 Diestro 1 170 28 231 7 Hombre 2 Diestro 1 173 50 183 8 Mujer 1 Diestro 1 164 23 131 9 Hombre 3 Diestro 1 185 30 181 10 Mujer 3 Diestro 2 167 25 236 11 Hombre 4 Diestro 1 184 32 163 12 Mujer 3 Diestro 1 164 22 219 Total 2328 Algunas características como sexo, altura, edad o número de golpes no necesitan explicación. El resto serán explicadas a continuación. El ID del deportista es un número único para cada jugador, que sirve para identificarlo. Para identificar el nivel de juego de cada persona, se ha llevado a cabo la siguiente clasificación: 1. Beginner-novice: el deportista no está federado y lleva menos de un año jugando regularmente. 2. Amateur: el deportista no está federado y lleva más de un año jugando regularmente. 3. Experienced intermediate level: el deportista juega competiciones federadas en su comunidad y es categorizado como jugador nivel intermedio por dos entrenadores nacionales. 4. Experienced high level: el deportista juega competiciones federadas en su comunidad y es categorizado como jugador nivel alto por dos entrenadores nacionales. 5. Professional: el deportista es internacional, juega en el World Padel Tour (competición más importante del pádel). En cuanto a la mano con la que juega el deportista, puede observarse que en esta toma de datos todos son diestros. Esto es debido a que la inmensa mayoría de los jugadores son diestros y no es fácil encontrar jugadores zurdos. No obstante, se verá en el apartado 7.2, como punto a tratar en trabajos futuros. Conjunto de datos 14 Respecto a revés, identifica si el deportista realiza el golpe de revés usando una mano o las dos. Por tanto, tomará valores 1 o 2, respectivamente. Cabe destacar que en el pádel normalmente se realiza el golpe de revés a una mano, siendo el golpe de revés a dos manos característico de jugadores que se inician en el pádel después de haber practicado tenis. En resumen, el dataset ha sido realizado por 12 personas (7 hombres y 5 mujeres) de diferentes niveles de juego (desde novato hasta profesional). Se han guardado un total de 2328 golpes de los 13 tipos de golpes que son objeto de estudio en este documento. La cantidad de golpes registrados de cada tipo es la siguiente: Figura 6. Golpes en la base de datos por tipo de golpe. 4.2 Proceso de toma de datos Para llevar a cabo el proceso de toma de datos de una forma óptima serán necesarias tres personas: el deportista, una persona responsable de lanzar las bolas al deportista, y una tercera persona responsable de controlar la Raspberry Pi y grabar los datos. No obstante, también se podría llevar a cabo con 2 personas o incluso con una que haga todo, pero el proceso se volvería lento y tedioso. La mayoría de los golpes también han sido grabados en vídeo. 4.2.1 El deportista En el punto 3.2 se vio el dispositivo para la toma de muestras. El deportista llevará la Raspberry Pi durante el desarrollo de la toma de muestras, junto con el Sense Hat y la batería. El único requisito a nivel técnico es que conozca y sepa ejecutar los golpes que realiza en las pruebas. 4.2.2 Responsable de lanzar las bolas Esta persona se encarga de que al deportista le llegue la bola en unas condiciones aptas para realizar el golpe que se desee. Por tanto, el responsable de lanzar las bolas deberá conocer el deporte. El uso de material de entrenamiento como un carrito de bolas facilitarán enormemente su trabajo. 15 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 4.2.3 Responsable del registro de datos Esta persona se encarga de guardar los datos de la prueba. Con el ordenador, manejará la Raspberry Pi y guardará los datos de acelerómetro y giroscopio. Además, se graba la prueba en vídeo para validar de forma visual lo que se ha realizado. Un trípode para la cámara/smartphone facilita este trabajo. Cabe destacar que el mismo smartphone que se usa para establecer una conexión wifi, se usa para grabar en vídeo la prueba. En cuanto a la captura de datos, se llevará a cabo de la siguiente forma. Se divide el proceso en 13 pruebas, cada una de ellas identificada con el nombre del golpe que se quiere guardar. Cada prueba tendrá una duración establecida (normalmente se ha establecido en minuto y medio) y durante su desarrollo, el deportista solo podrá realizar el tipo de golpe que se está guardando. De dicha forma, todos los golpes estarán etiquetados, lo que se conoce como aprendizaje supervisado. A modo de ejemplo, si la prueba es de golpes de remate, durante la prueba el deportista solo realiza golpes de remate, y la prueba se guarda como “remate.csv”. El periodo de muestreo es de 20 Hz. Figura 7. Deportista durante una sesión de toma de datos. 4.3 Detector de golpes Llegados a este punto, lo que se ha obtenido es un documento de texto plano que recoge los datos de acelerómetro y giroscopio con un periodo de 20 Hz, que se corresponde a un periodo de tiempo en el que se ha realizado una colección de algún tipo de golpe. De todos los datos recogidos, algunos se corresponderán con un golpe, mientras que otros se corresponderán al tiempo entre golpes en el que el deportista puede estar esperando la siguiente bola o moviéndose por la pista para colocarse correctamente. Por tanto, se necesita un sistema que detecte cuándo se ha realizado un golpe para que filtre los datos y elimine aquellos que no son de interés. Una cuestión importante es qué es exactamente un golpe. ¿Es el golpe el instante de tiempo en el que se produce el impacto con la bola?, ¿es ese instante del impacto más un intervalo de tiempo posterior?, ¿o anterior? En este estudio se ha considerado que el golpe es el intervalo de tiempo que engloba la preparación del golpeo, el impacto con la bola, y el movimiento inmediatamente posterior al impacto. De esta forma habrá suficiente información para poder clasificar cada tipo de golpe. Ahora bien, ¿qué intervalo de tiempo es el adecuado?, o aún más importante, ¿qué diferencia ese intervalo de tiempo donde se produce el golpe al resto de datos de la prueba? Conjunto de datos 16 4.3.1 Condición de detección En [10] se realizó un detector de golpes sencillo, que consistía en un umbral en la derivada del giroscopio que obtenía buenos resultados. En un principio, se optó por la misma solución, pero en determinadas circunstancias los resultados no resultaron satisfactorios. Dado que la idea de un umbral de detección resultó bastante interesante, ya que los 6 GDL sufrían cambios significativos al producirse un golpe, alcanzando valores máximos y mínimos tanto en acelerómetro como giroscopio, se optó por definir un umbral en cada GDL; de forma que, si alguno de los ejes de acelerómetro y giroscopio supera su umbral correspondiente en la misma muestra, se podría asumir que se ha producido un golpe. Pero los umbrales de acelerómetro y giroscopio se pueden superar en más de una ocasión durante un mismo golpe, por lo que se opta por una variable que desactive la búsqueda de un golpe mientras no se haya guardado el último golpe detectado; es decir, mientras la muestra actual pertenezca un intervalo de tiempo de un golpe ya detectado. El diagrama de flujo del detector de golpes sería el mostrado en la Figura 8. Figura 8. Diagrama de flujo del detector de golpes En esta figura: 𝐴𝑥=𝑎𝑐𝑒𝑙𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑙𝑖𝑛𝑒𝑎𝑙 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑥 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 𝐴𝑦=𝑎𝑐𝑒𝑙𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑙𝑖𝑛𝑒𝑎𝑙 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑦 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 𝐴𝑧=𝑎𝑐𝑒𝑙𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑙𝑖𝑛𝑒𝑎𝑙 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑧 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 𝑉𝑥=𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑥 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 𝑉𝑦=𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑦 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 17 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 𝑉𝑧=𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑒𝑛 𝑒𝑙 𝑒𝑗𝑒 𝑧 𝑑𝑒 𝑙𝑎 𝑚𝑢𝑒𝑠𝑡𝑟𝑎 𝑎𝑐𝑡𝑢𝑎𝑙 𝑈𝑎=𝑢𝑚𝑏𝑟𝑎𝑙 𝑑𝑒 𝑙𝑎 𝑎𝑐𝑒𝑙𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑈𝑣=𝑢𝑚𝑏𝑟𝑎𝑙 𝑑𝑒 𝑙𝑎 𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 Los valores estimados para cada umbral son: 4.3.2 Duración del golpe En la literatura se pueden encontrar algunos ejemplos sobre qué duración es la adecuada para un golpe. En [8] se tomaron 70 muestras por golpe con una tasa de muestreo de 50 Hz, lo que supone una duración de 1.4 segundos por golpe. En [9] se tomaron 20 muestras con una tasa de 20 Hz, por lo que la duración era de un segundo. En [10] se cogieron 1000 muestras con una tasa de 1 kHz, siendo la duración también de un segundo. En [22] se lleva a cabo un estudio donde se observa que una tasa correcta para reconocer actividades humanas se encuentra entre los 20 y 30 Hz. Fijar una duración del golpe mayor o menor es un tema subjetivo y que puede depender de la naturaleza del golpe. Por ejemplo, hay golpes que requieren una mayor preparación previa al impacto con la bola, como ocurre con el golpeo de bandeja, mientras que hay otros golpes que no se preparan tanto, como es el caso de una volea. Pero el objetivo en este apartado es buscar una duración uniforme de manera que todos los tipos de golpes queden registrados con la misma duración para poder luego clasificarlos. En un principio, se probó con una duración de un segundo como se mostraba en estudios anteriores, pero el clasificador visto en el apartado 4.3.1 no funcionaba correctamente, ya que identificaba más de un golpe cuando se realizaba uno solo, especialmente en los golpes de bandeja y remate. Por tanto, se estableció una duración de 2 segundos. Cabe destacar que cuando se detecta un golpe se guardan las muestras correspondientes a la duración del golpe, de forma que la detección queda justamente en el centro del intervalo. 4.3.3 Resultados El detector de golpe fue probado con un total de 362 golpes, de los cuales 354 fueron detectados. El procedimiento de validación fue comparar los golpes realizados y detectados con el vídeo que se había grabado en cada prueba. Es un procedimiento lento pero eficaz. La matriz de confusión sería la siguiente: Tabla 3. Matriz de confusión del detector de golpes. Predicción Positivos Negativos Observación Positivos 354 8 Negativos 0 - 𝑼𝒂=𝟑𝑮𝒔 𝑼𝒗=𝟓𝒓𝒂𝒅/𝒔 Metodología: Algoritmos de aprendizaje automático 24 5.1.4 Parámetros e hiperparámetros En el apartado 5.1.2 se ha hablado tanto de parámetros como de hiperparámetros, sin entrar en más detalles. Generalmente, se considera parámetros a aquellas variables internas al modelo cuyo valor es estimado a partir de los datos de entrada, mientras que los hiperparámetros son las variables accesibles al programador que son externas al modelo y que no pueden ser calculadas con los datos de entrada. 5.1.5 Overfitting El overfitting o sobreajuste es uno de los problemas más comunes en el aprendizaje automático. En general, el overfitting tiene lugar por dos motivos: el modelo utilizado es muy complejo y/o faltan datos de entrenamiento. Esto provoca que el modelo no sea preciso con nuevos datos de entrada que no haya visto anteriormente, haciendo predicciones incorrectas. El overfitting es, por tanto, un fenómeno no deseable. Para evitarlo, existen algunas técnicas como la regularización. 5.1.6 Regularización La regularización consiste en un conjunto de estrategias orientadas a evitar el overfitting durante el entrenamiento del modelo. Aunque existen diferentes alternativas, todas persiguen el mismo objetivo. Por ejemplo, en las redes neuronales, la regularización se lleva a cabo mediante una capa dropout; en SVM la regularización se controla introduciendo una penalización en la función objetivo; y en el árbol de decisión se limita el tamaño del árbol. Todos los casos serán estudiados más adelante. 5.1.7 Librerías para aprendizaje automático 5.1.7.1 Tensor Flow - Keras Tensor Flow es una plataforma de código abierto para aprendizaje automático. Keras es la API de alto nivel de Tensor Flow, y es una librería de código abierto que permite construir y entrenar modelos de aprendizaje profundo. Presenta tres ventajas clave: tiene una interfaz sencilla, es modular y configurable, y es fácil de extender [24]. En este estudio se usa la versión 2.3.0 de tensorflow y la versión 1.0.8 de keras. 5.1.7.2 Scikit-learn Scikit-learn es una librería de libre acceso para aprendizaje automático en Python, construida sobre NumPy, SciPy y matplotlib, otras librerías conocidas de Python [25]. En este estudio se usa la versión 0.24.2. Ambas plataformas simplifican la construcción de los algoritmos presentados en este estudio, por lo que suponen una herramienta esencial en la creación de los modelos. La versión utilizada de Python ha sido la versión 3.8 y la plataforma en la que se ha llevado a cabo la programación ha sido Spyder 4.2.5, en Anaconda. 5.2 Redes neuronales densamente conectadas Antes de hablar de redes neuronales se debe hablar de Inteligencia Artificial, Machine Learning y Deep Learning. Una introducción a este ámbito se recoge en el libro de Jordi Torres [26], Deep Learning. Introducción práctica con Keras, que será usado de base en los siguientes párrafos. La Inteligencia Artificial es un campo muy extenso que engloba muchas áreas relacionadas con el aprendizaje automático, que dotan a las máquinas de capacidades que pueden ser comparables a la inteligencia característica de los humanos. El Machine Learning, o aprendizaje automático, es un campo dentro de la Inteligencia Artificial que proporciona a los ordenadores la capacidad de aprender sin ser explícitamente programados para ello, es decir, que no han recibido reglas explícitas para lograr su tarea, sino que son capaces de realizarlas de forma automática. Por último, el Deep Learning, o aprendizaje profundo, es una subparte dentro del Machine Learning que permite crear modelos compuestos de múltiples capas mediante las cuales un conjunto de datos de entrada 25 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel genera una salida próxima a la esperada [26]. Figura 14. Inteligencia Artificial, Machine Learning y Deep Learning. Disponible en: https://medium.com/@experiencIA18/diferencias-entre-la-inteligencia-artificial-y-el-machine- learning-f0448c503cd4 [Consulta 26/10/2021] Una red neuronal es un caso concreto de estrategia de Deep Learning que se ha popularizado en los últimos años al conseguir grandes resultados en el área de visión por computador. Las redes neuronales son modelos computacionales formadas por neuronas conectadas entre sí, de forma que cada conexión está asociada a un peso que determina la importancia de dicha conexión al multiplicarse por el valor de entrada [26]. Para entender mejor el funcionamiento de una red neuronal, se comenzará por la red neuronal más simple: el perceptrón. 5.2.1 Perceptrón El perceptrón es la forma más simple de red neuronal porque consta de una sola capa que contiene una sola neurona. El perceptrón recibe los valores de entrada, realiza una suma ponderada en función de unos pesos y el resultado lo introduce en una función de activación que genera el resultado final. Una representación gráfica del funcionamiento del perceptrón se muestra en la Figura 15. Figura 15. Diagrama de un perceptrón con 5 señales de entrada. Disponible en: https://es.wikipedia.org/wiki/Perceptrón [Consulta 26/10/2021] Metodología: Algoritmos de aprendizaje automático 26 La salida 𝑦(𝑥) del perceptrón que realiza la predicción tiene la forma siguiente: 𝑧=∑𝜔𝑖·𝑥𝑖+𝜃 𝑝 𝑖=1 (4) 𝑦(𝑥)={ 1 𝑠𝑖 𝑧≥0 0 𝑠𝑖 𝑧<0 (5) Donde, 𝑦(𝑥)=𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖ó𝑛 𝑑𝑒𝑙 𝑚𝑜𝑑𝑒𝑙𝑜 𝑧=𝑓𝑢𝑛𝑐𝑖ó𝑛 𝑠𝑢𝑚𝑎𝑑𝑜𝑟𝑎 𝑥𝑖=𝑑𝑎𝑡𝑜𝑠 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎, 𝑖={1,2,…,𝑝} 𝜔𝑖=𝑝𝑒𝑠𝑜𝑠 𝑠𝑖𝑛á𝑝𝑡𝑖𝑐𝑜𝑠 𝜃=𝑠𝑒𝑠𝑔𝑜 La ecuación (4) realiza una división del espacio de búsqueda en dos regiones, de forma que cada región representa a una clase. Por ejemplo, para una entrada de dos dimensiones, la división vendría dada por una línea recta, que se representa en la Figura 16. En esta figura, la recta 𝑧 divide el espacio de búsqueda en dos regiones que representan a cada clase: una región representa los círculos rojos y la otra a los círculos azules. Si la entrada tuviese tres dimensiones, la división estaría definida por un plano en lugar de una recta. Figura 16. División de clases. Perceptrón. El aprendizaje del perceptrón consiste, por tanto, en determinar los pesos sinápticos (𝜔𝑖) y el sesgo o umbral (𝜃) que provocan que 𝑧 realice una división correcta de las clases. El proceso comienza con unos valores aleatorios que se van modificando en función de la diferencia entre los valores deseados y los calculados por la red [27]. La principal limitación del perceptrón es que solo es capaz de realizar una clasificación binaria. Para una clasificación multiclase habría que añadir al menos otra neurona. En el caso anterior, la función de activación es una función escalón entre 0 y 1. Para cambiar la función de activación a, por ejemplo, una función sigmoid, bastaría con cambiar la expresión de 𝑦(𝑥), como se muestra en la ecuación (6). 𝑦(𝑥)=1 1+𝑒−𝑧 (6) 𝒙𝟏 𝒛 𝒙𝟐 27 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Figura 17. Función de activación en escalón (roja) vs sigmoid (azul). 5.2.2 Proceso de aprendizaje El perceptrón es un caso muy simple porque tiene una sola capa con una sola neurona, pero lo habitual es encontrar redes con multitud de capas y neuronas. Una red neuronal está formada por neuronas conectadas entre ellas, donde a cada conexión se le asocia un peso, como se mostró en el apartado anterior para el caso particular del perceptrón. En la Figura 18 se representa gráficamente una de estas redes donde cada neurona de una capa se conecta con todas las neuronas de la capa siguiente, de ahí su nombre. Figura 18. Red neuronal densamente conectada. Ejemplo con dos capas. Disponible en: https://www.researchgate.net/figure/Example-of-fully-connected-neural- network_fig2_331525817 [Consulta 26/10/2021] Antes de explicar con detalle el funcionamiento del proceso de aprendizaje de la red neuronal, es necesario introducir el concepto de función de activación. Cada neurona posee una función de activación que determina la salida de la neurona y que permite introducir la no linealidad en las capacidades de modelado de la red; es decir, permite propagar hacia delante la salida de una neurona. Las funciones de activación más comunes son [26]: → Linear: es una función identidad en la que la salida es igual que la entrada. 𝑓(𝑥)=𝑥 (7) Metodología: Algoritmos de aprendizaje automático 28 → Sigmoid: permite reducir valores extremos o atípicos en datos válidos. A partir de un rango casi infinito, la función obtiene probabilidades simples entre 0 y 1. 𝑓(𝑥)=1 1+𝑒−𝑥 (8) → Tanh: es similar a la función sigmoid, pero en un rango entre -1 y 1. 𝑓(𝑥)=tanh (𝑥) (9) → Softmax: permite generalizar una regresión logística de forma que se pueden clasificar múltiples clases y no solo en binario. Por ello, es típica en la última capa de una clasificación multiclase. Garantiza que la suma de todas las neuronas de salida sea 1 y que la probabilidad más alta se use como predicción final. 𝑦𝑖=𝑒𝑖 ∑𝑒𝑖 (10) → ReLU: permite activar un solo nodo si la salida supera un cierto umbral. 𝑓(𝑥)=max {0,𝑥} (11) Figura 19. Funciones de activación a) Linear, b) Sigmoid, c) Tanh, d) ReLU Volviendo al proceso de aprendizaje de la red, este proceso consiste en asignar unos valores a los parámetros de la red (pesos y sesgos) que permitan que la predicción del modelo sea aceptable. El aprendizaje puede ser interpretado como un proceso de ida y vuelta, donde hay tres conceptos importantes: forwardpropagation, function loss y backpropagation [26]. El forwardpropagation consiste en pasar el conjunto de datos de entrenamiento a través de toda la red para que 29 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel las neuronas apliquen sus transformaciones y la red pueda calcular sus predicciones. El paso de los datos por todas las neuronas de la red implica que cada neurona recibe la información de la capa anterior, aplica su transformación y la pasa a la capa siguiente. Cuando esta información haya cruzado toda la red, la capa final ha realizado su transformación y por tanto la predicción de la red. La predicción de la red puede coincidir o no con la etiqueta de cada dato de entrenamiento. El error de las predicciones se calcula mediante la function loss, que compara la predicción con el resultado correcto (los datos poseen su etiqueta, ya que se trata de aprendizaje supervisado). El objetivo del aprendizaje será minimizar este error. Para poder reducir el error, la estimación loss debe ser enviada al resto de la red para corregir así los pesos. Es decir, la información se propaga hacia atrás, lo que se conoce como backpropagation. Partiendo de la capa de salida, la estimación loss se propaga hacia todas las neuronas de la capa anterior que contribuyen directamente a la salida. No obstante, cada neurona solo recibe una fracción de la señal total de loss, en función de la contribución relativa que haya aportado a la salida con la que se ha calculado la function loss. El proceso se repite capa por capa hasta que todas las neuronas de la red reciban su información [26]. Gráficamente, el proceso es el siguiente: Figura 20. Forwardpropagation, backwardpropagation y loss. Disponible en [26]. Una vez se ha propagado hacia atrás el error cometido en la predicción, se pueden ajustar los pesos de las conexiones entre neuronas. Este ajuste debe realizarse teniendo en cuenta que el objetivo es minimizar el error lo máximo posible, para lo que se usa el gradient descent. Esta técnica usa la derivada (o gradiente) de la function loss, para ver cuánto debe cambiar el modelo para dirigir el error al mínimo global. En general, los datos se dividen en lotes (batches) que pasarán por la red un número determinado de veces (epochs). El gradiente se calcula con cada paso de un lote por la red. 5.2.3 Hiperparámetros Como se mostró en el apartado 5.1.4, un parámetro es una variable interna del modelo cuyo valor se estima en el proceso de aprendizaje, mientras que un hiperparámetro es una variable externa al modelo y cuyo valor es proporcionado por el programador. Los hiperparámetros más comunes son el número de epochs, el batch size y el learning rate [26]. 5.2.3.1 Número de epochs Indica el número de veces en la que los datos de entrenamiento pasan por la red neuronal en el proceso de Metodología: Algoritmos de aprendizaje automático 30 entrenamiento. Por ejemplo, si existen 2000 datos y se consideran 10 epochs, los 2000 datos pasarán 10 veces por la red neuronal. 5.2.3.2 Batch size Dado el gran tamaño de los datos de entrenamiento en aplicaciones típicas de Deep Learning, es habitual dividir estos en lotes más pequeños para ser procesados por la red. El batch size indica el tamaño del lote que pasará por la red en una iteración del entrenamiento antes de actualizar el gradiente. 5.2.3.3 Learning rate Este hiperparámetro indica la rapidez con la que aprende el modelo, es decir, cómo actualiza los parámetros. Un learning rate grande puede ser bueno para acelerar el aprendizaje del modelo, pero podría provocar que el proceso converja a una solución subóptima o incluso que no alcance la convergencia. Por otro lado, un learning rate pequeño ofrece una mejor oportunidad de alcanzar el mínimo error, pero podría suponer un proceso de aprendizaje inaceptablemente lento. 5.2.4 Overfitting y regularización Con el objetivo de evitar que el modelo se ajuste en exceso a los datos de entrenamiento, en las redes neuronales se puede incluir una capa dropout. El dropout consiste en desactivar arbitrariamente neuronas durante el entrenamiento para evitar que el modelo se haga excesivamente dependiente en un grupo pequeño de ellas, provocando overfitting. De esta forma, se le impide al modelo hacer demasiado importantes ciertas neuronas, ya que se le obliga a entrenar sin ellas. En la Figura 21 se representa gráficamente la aplicación de dropout a una red neuronal, donde se aprecia que una vez que se aplica, hay ciertas neuronas que no están conectadas al resto. Figura 21. Aplicación de dropout a una red reuronal. Disponible en [28]. Por último, para poder implementar una red neuronal fácilmente en un ordenador y llevar a cabo la clasificación de golpes, se hace uso de Keras. 5.3 Redes neuronales convolucionales 1D En el punto anterior se presentó la estructura de una red neuronal densamente conectada. La diferencia principal entre una capa densamente conectada y una capa especializada en la operación de convolución, o capa convolucional, es que la capa densa aprende patrones globales en su espacio global de entrada, mientras que la capa convolucional aprende patrones locales en pequeñas ventanas espaciales. Esto es así debido a que las redes neuronales convolucionales 1D hacen la suposición de que las entradas son series temporales, permitiendo codificar ciertas propiedades para reconocer elementos concretos en la serie temporal [26]. Por tanto, este tipo de redes son especialmente adecuadas para el análisis de secuencias temporales de sensores, como es el caso del acelerómetro y giroscopio. 31 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel En otras palabras, en una capa convolucional las neuronas se conectan por pequeñas zonas localizadas, mientras que en una capa densamente conectada todas las neuronas de la primera capa se conectan con todas las de la segunda [26]. Pero ¿cómo se conectan exactamente esas pequeñas zonas? La conexión se realiza mediante un filtro (al que se llama kernel) que recorre la serie temporal, que no es más que un conjunto de pesos cuyo valor se estima en el proceso de aprendizaje. Por tanto, para cada valor de entrada, el kernel aplica sus pesos a una serie de elementos consecutivos y obtiene un valor de salida [29]. Dicho valor se corresponde con el producto escalar de la subsecuencia de la entrada y un vector kernel de pesos aprendidos de la misma longitud que la subsecuencia de la entrada. Para obtener el siguiente valor de la salida, se sigue el mismo procedimiento con el mismo valor de los pesos de kernel (los pesos se actualizan cuando cada lote pasa por la red), pero la subsecuencia de entrada se desplaza hacia delante para agregar un valor nuevo y eliminar el más antiguo. Este proceso se realiza hasta completar la serie temporal para cada elemento del lote (batch) [29]. En la Figura 22 se representa gráficamente el proceso para un ejemplo con un kernel de longitud 3. Para una subsecuencia de entrada o ventana de convolución, se le aplica el producto escalar del kernel y se obtiene un valor de salida. En la figura se muestran 3 subsecuencias distintas (verde, rojo y amarillo), donde la ventana de convolución se ha ido desplazando secuencialmente hacia la derecha. Figura 22. Operación de convolución. Para el caso concreto de este proyecto, en la Figura 23 se representa la serie temporal del clasificador de golpes de pádel (tres velocidades y tres aceleraciones) y cómo el filtro kernel recorre la serie temporal con una ventana de tamaño fijo (en este caso tiene un valor de 3). Es decir, las neuronas se conectan en pequeñas zonas localizadas y no en todo el espacio global de entrada como lo hacían las redes neuronales densamente conectadas. Figura 23. Ejemplo de kernel para golpes de pádel. . . . kernel producto escalar salida entrada Metodología: Algoritmos de aprendizaje automático 32 5.3.1 Hiperparámetros Los principales hiperparámetros de una red neuronal convolucional 1D en Keras son [26] [30]: 5.3.1.1 Filters: El número de filtros representa el número de características que se desea manejar para hacer la clasificación. 5.3.1.2 Kernel_size: Es el tamaño de la ventana de convolución que recorre la serie temporal. Por ejemplo, en la Figura 23 el kernel_size tiene un valor de 3. 5.3.1.3 Padding: Consiste en agregar ceros en los extremos de la serie temporal antes de hacer pasar la ventana por ella. Los valores que puede tomar son: valid (no hay padding), same (se añade tantos ceros como sea necesario para que la salida tenga la misma dimensión que la entrada) y causal (convolución causal, es decir, la salida [𝑡] no depende de la entrada [𝑡+1]). 5.3.1.4 Stride: Indica el número de pasos en que se mueve la ventana de convolución. Cuanto mayor sea, menor superposición tendrá la ventana. 5.3.1.5 Activation: Función de activación que se emplea. En el apartado 5.2.2 se vieron las principales funciones de activación. 5.4 Árbol de decisión Un árbol de decisión es un algoritmo de aprendizaje automático supervisado que construye un árbol durante el entrenamiento, que es el que se aplica a la hora de realizar la predicción. Dicho árbol contiene condicionales del tipo if-else anidados que permiten alcanzar el valor buscado. Construido el árbol, es posible conocer la clase de un nuevo objeto haciéndolo pasar por el árbol y respondiendo sucesivamente a las preguntas. Una de las grandes ventajas es que no son sensibles a la escala de los datos, lo que simplifica sustancialmente el preprocesamiento [31]. 5.4.1 Estructura Un árbol de decisión está compuesto por un nodo raíz, nodos de decisión y nodos terminales [32]. Estos se relacionan entre sí formando ramas (o subárboles) a través de flechas, como se detalla a continuación. 5.4.1.1 Nodo raíz Representa a toda la población y se divide en dos o más conjuntos. El nodo raíz también es un nodo de decisión. 5.4.1.2 Nodo de decisión Nodo que se divide en subnodos adicionales, donde hay que tomar una decisión. 5.4.1.3 Nodo terminal Nodo donde termina el flujo y representa la clase a la que pertenece el objeto que haya llegado hasta él. 33 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 5.4.1.4 Rama o subárbol Subsección del árbol de decisión. 5.4.1.5 Flechas Nexos de unión entre nodos. Figura 24. Árbol de decisión de 7 clases. 5.4.2 Función de impureza En cada nodo de decisión existe un conjunto de elementos de diferentes clases. El criterio utilizado para tomar las decisiones es la minimización de una función de impureza que evalúa la calidad de la división realizada. Para elegir la variable con la que se obtiene la mejor división se hace uso de tres funciones de impureza, que se describirán a continuación [31]. En un escenario con 𝑘 clases y con 𝑝𝑘 como fracción de elementos de la clase k en la muestra total: 5.4.2.1 Error de clasificación: Mide la clase con mayor número de elementos. A menor error de clasificación, mayor pureza. 𝑒𝑟𝑟𝑜𝑟 𝑑𝑒 𝑐𝑙𝑎𝑠𝑖𝑓𝑖𝑐𝑎𝑐𝑖ó𝑛=1 − max(𝑝𝑘) (12) 5.4.2.2 Índice Gini: Mide el grado de impureza de un nodo. A mayor índice Gini, menor pureza, por lo que interesa la variable con menor Gini ponderado. 𝐺𝑖𝑛𝑖=1−∑𝑝𝑘2 𝑘 (13) 5.4.2.3 Entropía: Mide el desorden de un sistema. A menor entropía, mayor pureza. Nodo raíz Nodo de decisión Nodo terminal Nodo terminal Nodo de decisión Nodo de decisión Nodo terminal Nodo terminal Nodo terminal Nodo de decisión Nodo terminal Nodo terminal Subárbol Resultados 40 Tabla 5. Configuraciones red neuronal densa. Serie temporal. Clasificador con dos capas. Número de filtros de la primera capa [50, 100, 200, 1000] Epochs [10, 40, 70] Batch size [30, 50, 70] Entre las posibles configuraciones, el clasificador que obtuvo una mayor accuracy fue el siguiente: Model: "sequential_352" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= flatten_352 (Flatten) (None, 240) 0 _________________________________________________________________ dense_704 (Dense) (None, 1000) 241000 _________________________________________________________________ dense_705 (Dense) (None, 13) 13013 ================================================================= Total params: 254,013 Trainable params: 254,013 Non-trainable params: 0 Este modelo tiene una primera capa con 1000 filtros, seguido de una segunda con 13. La primera capa tiene como función de activación la función ReLU (Rectified Linear Unit), mientras que la función de la segunda es softmax. Para poder llevar a cabo una clasificación multiclase, la función de activación de la última capa debe ser softmax, ya que devuelve la distribución de probabilidad sobre clases de salida mutuamente excluyentes [26]. Por tanto, tanto en este como en los clasificadores de redes neuronales que se verán a continuación, la última capa será una capa densamente conectada con 13 filtros y función de activación softmax. Cabe destacar que, antes de la primera capa, se dispone una capa de aplanamiento de las características llamada flatten. Esto es así ya que los datos se recogen de la base de datos en una matriz, pero las capas densas necesitan un vector como entrada. En cuanto a los hiperparámetros relativos a epochs y batch size, se han tomado valores de 70 y 30, respectivamente, obteniéndose una accuracy de 89.14% (± 0.52%), como se resume en la Figura 28. Figura 28. Red neuronal densa con serie temporal. Clasificador con dos capas. Accuracy para mejores hiperparámetros. 41 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel La matriz de confusión para el mejor de los casos de esta configuración se muestra en la Figura 29. Gracias a la matriz de confusión se pueden identificar las clases con las que más problemas tiene el algoritmo para su clasificación. Cada casilla de la matriz se identifica por dos valores: el valor que ha predicho el algoritmo (eje horizontal) y el valor real del golpe (eje vertical). Por tanto, una casilla que en el eje horizontal tenga RP y en el eje vertical R, se corresponderá con el número de golpes en los que el algoritmo ha identificado como un golpe de Revés Pared un golpe que realmente es de fondo Revés (todos los golpes se asociaron a sus iniciales al principio de este capítulo). Por ejemplo, si en dicha casilla hay un 3, significa que ha identificado como RP tres golpes que realmente son R. Por tanto, la accuracy del clasificador será mayor cuanto más altos sean los números de la diagonal principal de la matriz y más bajos sean el resto. En la Figura 29, el error más común, es decir, el valor más alto fuera de la diagonal principal, es predecir un golpe GDP en lugar de un GD, y un golpe B en lugar de un RM, ambos con 4 predicciones erróneas. Le sigue confundir un golpe GDP con DP, DP con GDP y RP con GRP, todos con 3 errores. El algoritmo tiene, por tanto, mayores problemas de clasificación con aquellos golpes cuya dinámica es más parecida. Por ejemplo, el error más común en este caso es confundir un golpe GDP con GD. El movimiento que realiza la mano en ambos golpes es muy similar ya que ambos son golpes de globo y de derecha, donde la diferencia reside en que en el golpe con pared se golpea la pelota después de que esta haya tocado la pared del fondo de la pista, mientras que en el golpe sin pared se golpea la pelota sin dejar que toque la pared de fondo. El siguiente error más común es confundir un golpe B con RM, donde ambos golpes se realizan con la mano elevada: a la altura de la cabeza en el caso de la bandeja y más alta y con el brazo extendido en el caso del remate. Para el resto de los casos puede compararse el movimiento de los golpes atendiendo a la explicación realizada en el apartado 4.1. Figura 29. Red neuronal densa con serie temporal. Clasificador con dos capas. Matriz de confusión. 6.1.1.2 Clasificador con tres capas densamente conectadas En este caso, se probará un clasificador con tres capas densamente conectadas. Como en el caso anterior, la Resultados 42 última capa tendrá 13 filtros, coincidiendo con el número de clases que se van a clasificar. Se probará una serie de configuraciones según los valores de la Tabla 6. El número de filtros de la segunda capa será la mitad del de la primera capa. Tabla 6. Configuraciones red densa. Serie temporal. Clasificador con tres capas. Número de filtros de la primera capa [50, 100, 200, 1000] Epochs [10, 40, 70] Batch size [30, 50, 70] El clasificador que alcanzó una mayor accuracy fue el siguiente: Model: "sequential_506" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= flatten_506 (Flatten) (None, 240) 0 _________________________________________________________________ dense_1161 (Dense) (None, 1000) 241000 _________________________________________________________________ dense_1162 (Dense) (None, 500) 500500 _________________________________________________________________ dense_1163 (Dense) (None, 13) 6513 ================================================================= Total params: 748,013 Trainable params: 748,013 Non-trainable params: 0 Este modelo tiene una primera capa con 1000 filtros, seguido de una segunda con 500 y una tercera con 13. Como se comentó en el punto anterior, las capas densas van precedidas de una capa de aplanamiento de los datos; y la función de activación será ReLU, excepto para la última capa que será softmax. Los hiperparámetros epochs y batch size se han fijado en 70 y 30, respectivamente, obteniéndose una accuracy de 90.44% (± 0.57%), como se muestra en la Figura 30. Figura 30. Red densa con serie temporal. Clasificador con tres capas. Accuracy para mejores hiperparámetros. La matriz de confusión para el mejor de los casos de esta configuración se muestra en la Figura 31. En este caso, el error más común es confundir golpe GDP con GD, con 4 fallos. Confundir B con RM, RM con B y GDP con DP tienen todos 3 fallos. De nuevo, hay mayores problemas con aquellos golpes más similares. 43 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Figura 31. Red neuronal densa con serie temporal. Clasificador con 3 capas. Matriz de confusión. 6.1.2 Red neuronal densa con feature engineering 6.1.2.1 Clasificador con dos capas densamente conectadas Como se vió anteriormente, la última capa tendrá 13 filtros con función de activación softmax. El número de filtros de la primera capa, el número de epochs y el tamaño de los lotes de las diferentes configuraciones se muestran en la tabla siguiente. Tabla 7. Configuraciones red neuronal densa. Feature engineering. Clasificador con dos capas. Número de filtros de la primera capa [100, 500, 1000, 1500, 2000] Epochs [40, 70, 100, 200] Batch size [30, 50, 70] La configuración con mayor accuracy fue de 2000 filtros en la primera capa, epoch de 200 y batch size 30. Consigue una accuracy de 79.99% (± 1.18%), como se muestra en la Figura 32. El clasificador es el siguiente: Model: "sequential_379" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= flatten_379 (Flatten) (None, 18) 0 _________________________________________________________________ dense_758 (Dense) (None, 2000) 38000 Resultados 44 _________________________________________________________________ dense_759 (Dense) (None, 13) 26013 ================================================================= Total params: 64,013 Trainable params: 64,013 Non-trainable params: 0 Figura 32. Red neuronal densa con feature engineering. Clasificador con dos capas. Accuracy para mejores hiperparámetros. La matriz de confusión para el mejor de los casos de esta configuración se muestra en la Figura 33. En este caso, el error más común es confundir un golpe VR con R, con 7 fallos. Hay varios casos con 4 fallos, entre los que destacan VD con B. Estos golpes también tienen ciertas similitudes, siendo su principal diferencia una mayor altura de golpeo para el golpe de bandeja y una mayor preparación. Figura 33. Red neuronal densa con feature engineering. Clasificador con dos capas. Matriz de confusión. 45 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 6.1.2.2 Clasificador con tres capas densamente conectadas Para cada configuración, el número de filtros de la primera capa viene determinado en la Tabla 8. La segunda capa tendrá la mitad de los filtros de la primera, y la última capa tendrá 13. El número de epochs y el tamaño de los lotes de las diferentes configuraciones serán: Tabla 8. Configuraciones red neuronal densa. Feature engineering. Clasificador con tres capas. Número de filtros de la primera capa [100, 500, 1000, 1500, 2000] Epochs [40, 70, 100, 200] Batch size [30, 50, 70] Entre las posibles configuraciones, el clasificador con una mayor accuracy fue con 1000 filtros en la primera capa, 500 en la segunda, epoch de 200 y batch size 30. Alcanza una accuracy de 80.59% (± 1.06%), como se muestra en la Figura 34. Model: "sequential_558" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= flatten_558 (Flatten) (None, 18) 0 _________________________________________________________________ dense_1374 (Dense) (None, 1000) 19000 _________________________________________________________________ dense_1375 (Dense) (None, 500) 500500 _________________________________________________________________ dense_1376 (Dense) (None, 13) 6513 ================================================================= Total params: 526,013 Trainable params: 526,013 Non-trainable params: 0 Figura 34. Red neuronal densa con feature engineering. Clasificador con tres capas. Accuracy para mejores hiperparámetros. La matriz de confusión para el mejor de los casos de esta configuración se muestra en la Figura 35. El error más Resultados 46 común es confundir un golpe VD con B y B con RM, con 5 errores. Es decir, tiene más dificultades para diferenciar la bandeja de la volea de derecha y el remate, ya que la bandeja es un golpe que por sus características se encuentra entre los otros dos, como se explicó en el apartado 4.1. Figura 35. Red neuronal densa con feature engineering. Clasificador con tres capas. Matriz de confusión. 6.1.3 Resumen de resultados de redes neuronales densamente conectadas En la Figura 36 se muestra un resumen de los resultados obtenidos para los clasificadores de red neuronal densa. Se observa que cuando la entrada es la serie temporal (ST en la figura) la respuesta del clasificador es considerablemente mejor que cuando la entrada es con la técnica feature engineering (FE en la figura). De hecho, el clasificador con feature engineering se sitúa en torno al 80 % de accuracy, mientras que el clasificador con serie temporal se sitúa cercano al 90%. La entrada con serie temporal supone, por tanto, una mejora de un 10 % de la accuracy respecto al clasificador con feature engineering. Para la red neuronal densa, la mejor hiperparametrización es aquella con tres capas, una primera capa con 1000 filtros, seguido de una segunda con 500 y una tercera con 13 (una por clase), con 70 epochs y 30 batch, que logra una accuracy máxima de 92.06%. La media es de 90.44% (± 0.57%) 47 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Figura 36. Resumen de la accuracy para los clasificadores de red neuronal densa. 6.2 Redes neuronales convolucionales 1D Las redes densamente conectadas que han sido expuestas en el apartado anterior pueden ir precedidas de una o varias capas de redes neuronales convolucionales de 1D. Como se vió en el punto 5.3, este tipo de redes hacen la suposición de que los datos de entrada son series temporales por lo que, a priori, es un buen clasificador para el tipo de datos que se están clasificando. Puesto que se espera como entrada una serie temporal, este clasificador no se probará con la técnica feature engineering. Al igual que para el caso de las redes neuronales densas, el conjunto de datos se divide de un 64 % para entrenamiento, un 16 % para validación y un 20 % para testeo. La hiperparametrización se llevará a cabo mediante una búsqueda en rejilla. El código utilizado para este algoritmo se ha basado en el código que se expone en [37]. 6.2.1 Clasificador con una capa convolucional y una capa densa Este clasificador consiste en una primera capa convolucional seguida de una capa densamente conectada de softmax. Los diferentes valores probados en este clasificador para buscar la mejor configuración vienen mostrados en la siguiente tabla: Tabla 9. Configuraciones CNN1D. Clasificador con una capa convolucional y una capa densa. Número de filtros de la capa convolucional [32, 64, 128, 256] Kernel size [3, 5, 8] Epochs [40, 70] Batch size [10, 30, 50, 70] El clasificador con los mejores hiperparámetros es el siguiente: Resultados 48 Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv1d (Conv1D) (None, 33, 128) 6272 _________________________________________________________________ dropout (Dropout) (None, 33, 128) 0 _________________________________________________________________ max_pooling1d (MaxPooling1D) (None, 16, 128) 0 _________________________________________________________________ flatten (Flatten) (None, 2048) 0 _________________________________________________________________ dense (Dense) (None, 13) 26637 ================================================================= Total params: 32,909 Trainable params: 32,909 Non-trainable params: 0 Tiene una primera capa convolucional de 128 filtros, y un kernel de 8. A continuación, hay una capa dropout cuya funcionalidad ya se conoce y una capa maxpooling, que consiste en reducir las características recogidas por la capa convolucional para quedarse solo con las más importantes. Por último, tiene una capa flatten previa a la capa densamente conectada con 13 filtros y con función de activación softmax. Epoch tiene un valor de 70 y batch size de 50. La accuracy alcanzada es de 88.63% (± 1.24%), como se muestra en la Figura 37. Figura 37. CNN1D. Clasificador con una capa convolucional y una capa densa. Accuracy para mejores hiperparámetros. La matriz de confusión se muestra en la Figura 38. Se observa que los fallos más comunes son confundir un golpe DP con GDP y un golpe GDP con GD, ambos con 5 errores. El siguiente fallo más común es un golpe GR con R, con 4 errores. 49 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Figura 38. CNN1D. Matriz de confusión para una capa convolucional y una capa densa. 6.2.2 Clasificador con una capa convolucional y dos capas densas Este clasificador tiene una primera capa convolucional seguida de dos capas densamente conectadas: una capa ReLU y otra final de softmax. Los diferentes valores probados en este clasificador se muestran en la siguiente tabla: Tabla 10. Configuraciones CNN1D. Clasificador con una capa convolucional y dos capas densas. Número de filtros de la capa convolucional [32, 64, 128, 256] Número de filtros de la primera capa densa [100, 1000] Kernel size [3, 5, 8] Epochs [40, 70] Batch size [10, 30, 50, 70] El clasificador con los mejores hiperparámetros es el siguiente: Model: "sequential_441" _________________________________________________________________ Resultados 56 6.3 Árbol de decisión 6.3.1 Árbol de decisión con serie temporal Para crear un clasificador mediante un árbol de decisión, existe un conjunto de hiperparámetros que se pueden modificar para adaptar la red y obtener así un árbol de decisión óptimo para cada caso. Para encontrar la combinación óptima, se llevará a cabo una búsqueda de rejilla con los valores mostrados en la Tabla 13. La entrada para este clasificador será la serie temporal de cada golpe, y la división realizada del conjunto de datos se corresponde a un 70 % para entrenamiento y un 30 % para testeo. Tabla 13. Configuraciones árbol de decisión con serie temporal. Max_depth [1, 10, 20, 30, 40] Min_samples_split [2, 4, 8, 10, 20, 100] Min_samples_leaf [1, 2, 3, 4, 5, 6, 10] Criterion [entropy, gini] La mejor configuración de hiperparámetros es la que tiene una profundidad del árbol de 40 (max_depth), 4 muestras como mínimo para dividir un nodo (min_samples_split), una muestra por hoja como mínimo (min_samples_leaf) y función de impureza entropy. El clasificador obtiene una accuracy de 60.59% (± 1.06%). Figura 46. Árbol de decisión con serie temporal. Accuracy para mejores hiperparámetros. La matriz de confusión para el mejor de los casos se muestra en la Figura 47. En este caso, los errores más comunes son confundir un golpe DP con D, con 18 fallos. Con 12 fallos se encuentran R con RP y R con VR. 57 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel Figura 47. Árbol de decisión con serie temporal. Matriz de confusión. 6.3.2 Árbol de decisión con feature engineering En este caso, la entrada al clasificador está determinada por la técnica feature engineering. Como se comentó anteriormente, se tendrá como entrada el valor máximo, mínimo y medio de la serie temporal de cada grado de libertad de cada golpe. La división realizada del conjunto de datos se corresponde a un 70 % para entrenamiento y un 30 % para testeo. Para encontrar la configuración óptima para el clasificador, se lleva a cabo una búsqueda en rejilla con los valores de la Tabla 14. Tabla 14. Configuraciones árbol de decisión con feature engineering. Max_depth [1, 10, 20, 30, 40] Min_samples_split [2, 4, 8, 10, 20, 100] Min_samples_leaf [1, 2, 3, 4, 5, 6, 10] Criterion [entropy, gini] La mejor configuración de hiperparámetros es la que tiene una profundidad del árbol de 10 (max_depth), 2 muestras como mínimo para dividir un nodo (min_samples_split), una muestra por hoja como mínimo (min_samples_leaf) y función de impureza entropy. El clasificador obtiene una accuracy de 60.76% (± 0.90%). Resultados 58 Figura 48. Árbol de decisión con feature engineering. Accuracy para mejores hiperparámetros. La matriz de confusión para el mejor de los casos se muestra en la Figura 49. Para este caso, los errores más comunes se cometen al confundir un golpe R con RP y B con RM, ambos con 13 fallos. Les sigue R con VR, con 12 fallos. Figura 49. Árbol de decisión con feature engineering. Matriz de confusión. 6.3.3 Resumen de resultados de árbol de decisión En la Figura 50 se muestra un resumen de los resultados obtenidos para los clasificadores de árbol de decisión. El clasificador con serie temporal obtiene una accuracy media de 60.59 %, frente a un 60.76 % del clasificador con feature engineering. Ambos valores medios están muy próximos, sin embargo, el clasificador con feature engineering tiene una menor dispersión. En cuanto al valor máximo, la entrada con la serie temporal logra una 59 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel mayor accuracy, alcanzando el 62.09 %. Figura 50. Resumen de la accuracy para los clasificadores de árbol de decisión. 6.4 K Vecinos más próximos (KNN) 6.4.1 KNN con serie temporal En el punto 5.5 se vio que este clasificador tiene una variable 𝑘 que controla el número de vecinos más próximos que se tienen en cuenta para la clasificación. En este caso, se estudiará el comportamiento del algoritmo KNN con los datos de la serie temporal. Se ha probado con diferentes valores para la variable k, incluyendo los valores pares puesto que no se trata de una clasificación binaria. Cabe recordar que, en caso de empate, Scikit Learn escoge el valor que aparezca antes en el conjunto de vecinos. Los resultados se resumen en la Tabla 15. Tabla 15. Algoritmo KNN con serie temporal. Accuracy en función de k. k 1 2 3 4 5 6 7 8 9 Accuracy (%) 84.12 79.97 80.97 79.26 78.83 78.11 78.25 77.11 76.25 k 10 11 12 13 14 15 20 25 30 Accuracy (%) 74.68 75.39 74.25 74.68 72.96 73.10 68.67 68.38 63.66 Se observa que la mayor accuracy se obtiene para 𝑘=1, donde alcanza un 84.12%. Este es un caso especial dentro del algoritmo KNN, ya que solo considera el vecino más próximo en lugar de un conjunto de ellos. Para el resto de los valores, generalmente la accuracy desciende al aumentar el valor de 𝑘. Un diagrama de bigotes con los resultados de la tabla anterior se muestra en la Figura 51. Resultados 60 Figura 51. Algoritmo KNN con serie temporal. Diagrama de bigotes en función de k. La matriz de confusión para 𝑘=1 se muestra en la Figura 52. Para este caso, los errores más comunes es confundir un golpe GDP con DP, con 8 fallos, seguido de un golpe DP con D, GR con R y GRP con RP, estos últimos con 7 errores. Se observa que de nuevo los fallos más comunes se corresponden con los golpes más similares. Figura 52. Algoritmo KNN con serie temporal. Matriz de confusión para 𝑘=1. Cabe destacar que los resultados de este algoritmo no tienen dispersión ya que el conjunto de datos se dividió en entrenamiento y testeo de una forma aleatoria pero fija (para que la división fuese siempre la misma). De esta forma, aún realizando infinitas veces la predicción, los resultados siempre serían los mismos, ya que se 61 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel estudiarían las mismas distancias en cada iteración. Si, por el contrario, se realizan divisiones distintas del conjunto de datos para la mejor configuración (serie temporal con 𝑘=1), se obtiene una accuracy de 83.36% (± 1.08%), como se muestra en la Figura 53. Figura 53. Algoritmo KNN con serie temporal. Accuracy para 𝑘=1. 6.4.2 KNN con feature engineering A diferencia del apartado anterior, el algoritmo no recibirá como entrada la serie temporal, sino los valores máximos, mínimos y medios de la serie temporal de cada grado de libertad. Se ha realizado la clasificación con diferentes valores para la variable k, obteniéndose los siguientes resultados. Tabla 16. Algoritmo KNN con feature engineering. Accuracy en función de k. k 1 2 3 4 5 6 7 8 9 Accuracy (%) 68.24 64.95 65.38 64.66 64.38 64.81 64.52 63.52 63.66 k 10 11 12 13 14 15 20 25 30 Accuracy (%) 63.52 63.23 63.23 63.52 61.52 62.37 60.66 58.80 58.94 Para este clasificador, al igual que pasaba con el clasificador para la serie temporal como entrada, la accuracy máxima se obtiene para 𝑘=1, aunque en este caso obtiene solo un 68.24 %. Un diagrama de bigotes con los resultados de la tabla anterior se muestra en la Figura 54. Resultados 62 Figura 54. Algoritmo KNN con feature engineering. Diagrama de bigotes en función de 𝑘. La matriz de confusión para 𝑘=1 se muestra en la Figura 55. Para este caso, los errores más comunes tienen lugar con 10 fallos, entre los que se encuentra confundir un golpe D con DP, RP con R, y S con DP. Figura 55. Algoritmo KNN con feature engineering. Matriz de confusión para 𝑘=1. Como se comentó en el apartado anterior, los resultados no tienen dispersión porque se han realizado con una división fija de los datos. Ejecutando repetidas veces el algoritmo con diferentes divisiones, se obtiene un 63 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 66.64% (± 0.92%) de accuracy, como se muestra en la Figura 56. Figura 56. Algoritmo KNN con feature engineering. Accuracy para 𝑘=1. 6.4.3 Resumen de resultados KNN En la Figura 57 se muestra un resumen de los resultados del algoritmo KNN para la serie temporal y feature engineering, ambos con 𝑘=1. Se observa que la serie temporal tiene mejores resultados, alcanzando un 83.63% de media. En el caso de la entrada con feature engineering, se queda en una media de 66.64%. En ambos casos, el mejor valor de 𝑘 es la unidad, es decir, se realiza una mejor clasificación asignando la clase del vecino más próximo. El valor máximo de nuevo se obtiene para la serie temporal como entrada, alcanzando un 84.84%. Figura 57. Algoritmo KNN. Resultados de la serie temporal vs feature engineering para 𝑘=1. 6.5 Máquinas de vector soporte (SVM) 6.5.1 SVM con serie temporal Las máquinas de vector soporte, como se vió en el apartado 5.6, cuentan una serie de hiperparámetros que se Resultados 64 pueden modificar para ajustar correctamente el modelo y conseguir una mejor respuesta. En este caso, se ha estudiado la accuracy obtenida en función del filtro kernel y la regularización. No se mostrarán los resultados en función de los métodos one-versus-one y one-versus-all, puesto que no muestran diferencias entre ambos. Los resultados obtenidos para el SVM con serie temporal se resumen en la Tabla 17. Tabla 17. Algoritmo SVM con serie temporal. Accuracy (%) en función de kernel y C. Regularización (C) 0.01 0.1 0.5 1 2 10 12 20 100 Filtro Kernel Lineal 81.40 79.83 80.40 80.40 80.40 80.40 80.40 80.40 80.40 Polinómico 17.45 56.22 76.39 82.69 85.69 88.27 88.13 88.13 88.13 Radial 17.17 55.94 79.40 85.84 86.98 90.41 90.27 89.99 90.41 Sigmoide 18.60 41.63 62.80 65.09 62.66 55.22 53.79 54.51 52.22 Merece la pena recordar que el valor de C es inversamente proporcional a la fuerza de la regularización; es decir, cuanto mayor sea el valor de C, menor será la regularización, por lo que se generaliza menos el modelo. Puede observarse que la mayor accuracy (90.41%) se obtiene para un kernel radial con regularización 𝐶=10 y 𝐶=100. Aunque con 𝐶=10 𝑦 100 se alcanza la misma accuracy, no se obtiene la misma matriz de confusión, ya que los fallos que cometen no son exactamente los mismos. Sin embargo, son muy parecidos ya que se cometen con los mismos golpes y en cantidades casi exactas, por lo que se mostrará la matriz de confusión para un solo caso. La matriz de confusión para 𝐶=10 se muestra en la Figura 59. El filtro kernel polinómico se acerca bastante, consiguiendo 88.27 % para 𝐶=10. El kernel lineal se mantiene prácticamente invariante a la regularización, cercano al 80 %. El kernel sigmoide tiene su mejor respuesta para una regularización unitaria, donde logra superar el 65 %. En la Figura 58 se muestra un diagrama de bigotes para los resultados de la tabla anterior, donde se puede constatar visualmente la importancia de una correcta hiperparametrización: en función de la hiperparametrización se obtiene una accuracy entre un 17.17% y un 90.41%, es decir, una diferencia de más de un 73% entre la mejor y la peor hiperparametrización. Figura 58. Algoritmo SVM con serie temporal. Diagrama de bigotes en función de kernel y C. 65 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel La matriz de confusión se muestra en la Figura 59. Vuelve a ocurrir que los errores más comunes tienen lugar entre aquellos golpes con dinámica similar. El error más común para este caso es confundir un golpe GDP con GD, con 10 fallos. Con 6 errores se encuentra confundir un golpe GR con R y B con RM. Figura 59. Algoritmo SVM con serie temporal. Matriz de confusión para kernel radial con 𝐶=10. Como ocurría en anteriormente, estos resultados no tienen dispersión ya que la división del conjunto de datos se dividió en entrenamiento y testeo de una forma aleatoria pero fija. Si se realizan divisiones distintas del conjunto de datos para la mejor configuración (serie temporal con kernel radial y 𝐶=10), se obtiene una accuracy de 90.52% (± 1.24%), como se muestra en la Figura 60. Figura 60. Algoritmo SVM con serie temporal. Accuracy para kernel radial y 𝐶=10. Conclusiones y trabajos futuros 72 necesarios para un correcto entrenamiento de los modelos. Como solución a este problema, existe una técnica llamada “data augmentation”, o aumento de datos, que consiste en la aplicación de transformaciones aleatorias (pero realistas) a los datos con el objetivo de aumentar el tamaño y la diversidad del conjunto de entrenamiento [38]. Puesto que aumenta la diversidad de los datos, es muy útil para mejorar el overfitting. Un ejemplo de aumento de datos de entrenamiento en series temporales se lleva a cabo en [39], donde Woo Oh y Jeong realizan un estudio sobre el aumento de datos para la detección de fallos en rodamientos a partir de las vibraciones de estos. En [40], se lleva a cabo un estudio sobre el aumento de datos en series temporales usando redes neuronales convolucionales. Usan dos métodos para lel aumento de datos, los cuales son: • Window Slicing: consiste en extraer segmentos de la serie temporal y hacer la clasificación en estos cortes. El tamaño del segmento es un parámetro de este método. En la etapa de entrenamiento, el algoritmo aprende usando estos segmentos; y en el test, cada segmento de la serie es clasificado por el algoritmo, de forma que la clase de la serie original será aquella con más votos entre sus segmentos. Esta técnica está inspirada en la visión computacional. • Window Warping: esta técnica es más específica para series temporales y consiste en deformar un segmento de la serie seleccionado aleatoriamente acelerándolo o decelerándolo, como se muestra en la Figura 67. Figura 67. Ejemplo de la técnica window warping para el aumento de datos. Disponible en [40]. En este estudio, Le Guennec, Malinowski y Tavenard llegaron a la conclusión que la técnica del aumento de datos mejoraba el rendimiento de las redes neuronales convolucionales [40]. Por tanto, como trabajo futuro se propone el uso de la técnica data augmentation en el conjunto de datos realizado, estudiando el comportamiento de los distintos clasificadores con esta técnica respecto a la base de datos original. Otro aspecto para mejorar la base de datos sería la diferenciación entre los distintos efectos de cada golpe. En la base de datos actual se han realizado los golpes con varios efectos, pero solamente se han etiquetado con el tipo de golpe. Sería posible realizar una diferenciación en los golpes actuales inspeccionando cada golpe en los vídeos realizados durante las pruebas, pero sería un proceso muy lento. Por tanto, se propone recoger nuevos datos en los que solo se realice un tipo de efecto en cada prueba, realizando tantas pruebas por cada golpe como posibles efectos tenga. De esta forma se podría tener nuevos datos etiquetados con el tipo de golpe y efecto de una forma más sencilla, a la vez que se aumenta la base de datos con golpes reales. De igual forma, aunque la base de datos es ya suficientemente representativa, se podría aumentar con nuevos tipos de golpes como la chiquita o el remate por tres. 73 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel En cuanto a los fallos que se cometen en la clasificación, podría estudiarse qué perfil de jugador presenta mayores dificultades a la hora de clasificar sus golpes. La actual base de datos representa desde jugadores principiantes hasta jugadores profesionales, por lo que las diferentes ejecuciones en función del nivel del jugador podrían dar lugar a diferentes resultados en la clasificación. Asimismo, los diferentes efectos que no se han etiquetado en la base de datos podrían ser el origen de los errores más comunes en la clasificación. Por otro lado, un asunto importante en la captura de datos que es susceptible de mejora es el dispositivo de toma de datos. El dispositivo actual, descrito en el apartado 3.2, tiene en la muñeca del deportista una plataforma con la Raspberry Pi y el Sense Hat. Lo ideal sería limitar la implementación en la muñeca al equipamiento indispensable, es decir, la IMU responsable de recoger los movimientos de la misma, de forma que el dispositivo interfiera lo menos posible en el libre movimiento del deportista, haciéndolo más cómodo para su uso en entrenamientos largos o competiciones. En este sentido, se ha diseñado una nueva versión del dispositivo, mostrado en la Figura 68, que supone una significativa reducción en peso y volumen con respecto al diseño anterior. Se trata de una IMU Adafruit BNO055 encapsulada para introducirla en una correa de Apple Watch, como se muestra en la Figura 69. Esta se conecta por cable a la Raspberry Pi, que puede alojarse cómodamente en la cintura del deportista junto a la batería. Tiene un peso de 37 gramos (sensor + cápsula + correa). Se propone por tanto el uso de este dispositivo para las nuevas recogidas de datos. Figura 68. Nuevo diseño del dispositivo de toma de datos. Figura 69. Encapsulamiento del sensor BNO055. Aunque este dispositivo supone una mejora considerable respecto al primer diseño, tanto en volumen como en peso, es evidente que aún necesita mejoras. Respecto al volumen del dispositivo, hay numerosos jugadores que practican pádel con un Apple Watch, que tiene exactamente las mismas dimensiones. Por otro lado, este dispositivo tiene un peso de 37 gramos, frente a los 50 gramos de un Apple Watch, por lo que no se considera que sea un problema su uso en el terreno de juego. Sin embargo, este diseño se conecta por cable a la placa, lo que sí puede presentar molestias durante las pruebas. Por ende, sería interesante para futuros diseños incluir un dispositivo bluetooth de bajo consumo (BLE) que, además de solucionar el problema del cable, redujese el consumo de batería, haciendo el dispositivo más eficiente. Otra línea de estudio destacable respecto al sensor sería examinar si la respuesta de los algoritmos es sensible a la frecuencia de muestreo de la IMU o a la duración del golpe establecida. Conclusiones y trabajos futuros 74 Por otra parte, en el conjunto de datos creado en este documento todos los deportistas tienen algo en común: todos ellos son diestros. Aunque la inmensa mayoría de los jugadores son diestros, hay una pequeña parte de jugadores zurdos que deberían tener representación en la base de datos. En trabajos futuros, se propone la inclusión de estos jugadores en la base de datos, así como técnicas de data augmentation que permitan utilizar el conjunto de datos existente de jugadores diestros para clasificar golpes de jugadores zurdos. Por último, se podría implementar un modelo ya entrenado para predecir los golpes en tiempo real. Este sistema tendría que leer los datos en ventanas de una duración fija (y mayor a la duración del golpe, que son 40 muestras) con solapamiento entre ellas, detectar los posibles golpes en cada ventana y pasar estos golpes al modelo ya entrenado para que realice la predicción. Un esquema del sistema se muestra en la Figura 70. Figura 70. Sistema para una predicción en tiempo real. 75 REFERENCIAS [1] Wikipedia, «Microelectromechanical Systems,» 2021 June 14. [En línea]. Available: https://en.wikipedia.org/wiki/Microelectromechanical_systems. [Último acceso: 13 07 2021]. [2] M. Kos y I. Kramberger, «A Wearable Device and System for Movement and Biometric Data Acquisition for Sports Applications,» IEEE, 2017. [3] CCS Insight, «Healthy Outlook for Wearables,» 24 Febrero 2021. [En línea]. Available: https://www.ccsinsight.com/press/company-news/healthy-outlook-for-wearables-as-users-focus-on- fitness-and-well-being/. [Último acceso: 09 Julio 2021]. [4] J. Murua, «El valor de los datos en el deporte,» 2 Noviembre 2018. [En línea]. Available: https://economiaenchandal.com/2018/11/02/el-valor-de-los-datos-en-el-deporte/. [Último acceso: 13 Julio 2021]. [5] J. P. Da Silva, «La era del Big Data en el deporte,» Expansión, 23 Diciembre 2015. [En línea]. Available: https://www.expansion.com/economia-digital/2015/12/23/567ad9aaca47417e6a8b45b8.html. [Último acceso: 13 Julio 2021]. [6] Three Points, «Big Data aplicado a los deportes.,» 26 Mayo 2020. [En línea]. Available: https://www.threepoints.com/es/big-data-aplicado-a-los-deportes. [Último acceso: 13 Julio 2021]. [7] S. Ke, H. Thuc, Y. Lee, J. Hwang, J. Yoo y K. Choi, «A Review on Video-Based Human Activity Recognition,» MPDI, 2013. [8] S. S. Tabrizi, S. Pashazadeh y V. Javani, «Comparative Study of Table Tennis Forehand Strokes Classification Using Deep Learning and SVM.,» IEEE SENSORS JOURNAL, vol. 20, nº 22, 2020. [9] L. Benages Pardo, D. Buldain Pérez y C. Orrite Uruñuela, «Detection of Tennis Activities with Wearable Sensors,» MPDI, 2019. [10] M. Kos, J. Ženko, D. Vlaj y I. Kramberger, «Tennis Stroke Detection and Classification Using Miniature IMU Device,» de The 23rd International Conference of System, Signals and Image Processing, Bratislava, 2016. [11] D. Whiteside, O. Cant, M. Connolly y M. Reid, «Monitoring Hitting Load in Tennis Using Inertial Sensors and Machine Learning,» International Journal of Sports Physiology and Performance, 2017. [12] C. J. Ebner y R. D. Findling, «Tennis Stroke Classification: ComparingWrist and Racket as IMU Sensor Position,» de MOMM, Munich, 2019. [13] K.-C. Lin, C.-W. Wei, C.-L. Lai, I.-L. Cheng y N.-S. Chen, «Development of a badminton teaching system with wearable technology for improving students’ badminton doubles skills,» AECT, 2021. [14] J. Ramón-Llín, J. Guzmán, S. Llana, G. Vuckovic, D. Muñoz y B. Sánchez, «Análisis de la distancia Referencias 76 76 recorrida en pádel en función del nivel de juego y el número de puntos por partido.,» FEADEF, 2021. [15] J. Ramón-Llín, J. Guzmán, D. Muñoz, R. Martínez-Gallego, A. Sánchez-Pay y B. Sánchez-Alcaraz, «Análisis secuencial de golpeos finales del punto en pádel mediante árbol decisional.,» Revista internacional de medicina y ciencias de la actividad física y del deporte, 2021. [16] A. Escudero-Tena, B. Sánchez-Alcaraz, J. García-Rubio y S. Ibáñez, «Analysis of Game Performance Indicators during 2015–2019 World Padel Tour Seasons and Their Influence on Match Outcome,» Int. J. Environ. Res. Public Health, 2021. [17] M. Javadiha, C. Andujar, E. Lacasa, A. Ric y A. Susin, «Estimating Player Positions from Padel High- Angle Videos: Accuracy Comparison of Recent Computer Vision Methods,» MPDI, 2021. [18] B. Play, «Manual de Usuario». Barcelona. [19] I. Aguilera Calle, D. García Moreno, V. Morante Pindado, A. Pidal Gallego, J. Arroyo Gallardo y M. F. Cárdenas Bonett, Reconocimiento de actividad mediante pulsera con sensores, Madrid, 2017. [20] Wikipedia, «Raspberry Pi,» [En línea]. Available: https://es.wikipedia.org/wiki/Raspberry_Pi. [Último acceso: 09 Julio 2021]. [21] Wikipedia, «Python,» [En línea]. Available: https://es.wikipedia.org/wiki/Python. [Último acceso: 09 Julio 2021]. [22] E. K. Antonsson y R. W. Mann, «The frequency content of gait,» Journal of Biomechanics, vol. 18, nº 1, pp. 39-47, 1985. [23] G. Cartes Domínguez, «Padel-Shot-Classification-and-Dataset,» 6 11 2021. [En línea]. Available: https://github.com/guillecartes/Padel-Shot-Classification-and-Dataset. [Último acceso: 6 11 2021]. [24] TensorFlow, «Keras,» 21 Septiembre 2020. [En línea]. Available: https://www.tensorflow.org/guide/keras?hl=es. [Último acceso: 09 Julio 2021]. [25] Scikit-Learn, «Scikit-Learn. Machine Learning in Python,» [En línea]. Available: https://scikitlearn.org/stable/. [Último acceso: 26 10 2021]. [26] J. Torres, Deep Learning. Introducción práctica con Keras, Barcelona: Watch This Space, 2018. [27] D. Calvo, «Perceptrón – Red neuronal,» 2018 12 8. [En línea]. Available: https://www.diegocalvo.es/perceptron/. [Último acceso: 2021 10 26]. [28] R. S. Srinivasamurthy, «Understanding 1D Convolutional Neural Networks Using Multiclass Time- Varying Signals,» All Theses, 2018. [29] ICHI.PRO, «Predicción y redes convolucionales temporales,» ICHI.PRO, 2021. [En línea]. Available: https://ichi.pro/es/prediccion-y-redes-convolucionales-temporales-102124506152164. [30] Keras, «Conv1D layer,» [En línea]. Available: https://keras.io/api/layers/convolution_layers/convolution1d/. [Último acceso: 31 8 2021]. [31] InteractiveChaos, «Árbol de decisión,» [En línea]. Available: https://interactivechaos.com/es/manual/tutorial-de-machine-learning/arbol-de-decision. [Último acceso: 77 Comparación de algoritmos de aprendizaje automático para clasificación de golpes de pádel 24 08 2021]. [32] Sitio Big Data, «Árbol de decisión en Machine Learning,» Wordpress, 14 12 2019. [En línea]. Available: https://sitiobigdata.com/2019/12/14/arbol-de-decision-en-machine-learning-parte-1/. [Último acceso: 24 08 2021]. [33] Merkle, «El algoritmo K-NN y su importancia en el modelado de datos,» Merkle, 1 9 2020. [En línea]. Available: https://www.merkleinc.com/es/es/blog/algoritmo-knn-modelado-datos. [Último acceso: 24 8 2021]. [34] E. Campo León, Introducción a las SVM., Zaragoza: Universidad de Zaragoza, 2016. [35] J. Amat Rodrigo, «Máquinas de Vector Soporte (SVM) con Python,» cienciadedatos.net, Diciembre 2020. [En línea]. Available: https://www.cienciadedatos.net/documentos/py24-svm-python.html. [Último acceso: 30 08 2021]. [36] Scikit Learn, «sklearn.svm.SVC,» 2020. [En línea]. Available: https://scikitlearn.org/stable/modules/generated/sklearn.svm.SVC.html. [Último acceso: 30 08 2021]. [37] J. Brownlee, «1D Convolutional Neural Network Models for Human Activity Recognition,» 28 8 2020. [En línea]. Available: https://machinelearningmastery.com/cnn-models-for-human-activity-recognition- time-series-classification/. [Último acceso: 14 5 2021]. [38] TensorFlow, «Aumento de datos,» TensorFlow, 05 10 2021. [En línea]. Available: https://www.tensorflow.org/tutorials/images/data_augmentation. [Último acceso: 21 10 2021]. [39] J. Woo Oh y J. Jeong, «Data augmentation for bearing fault detection with a light weight CNN,» Procedia Computer Science, nº 175, pp. 72-79, 2020. [40] A. Le Guennec, S. Malinowski y R. Tavenard, «Data Augmentation for Time Series Classification using Convolutional Neural Networks,» HAL, 2016.