Introducción

¿Cómo definimos qué hace a dos ciclistas similares? En este proyecto, analicé datos del pelotón profesional para construir un sistema de recomendación de ciclistas. Utilizando técnicas de limpieza de datos y métricas de distancia vectorial, logré identificar qué corredores comparten perfiles de rendimiento similares, independientemente de su equipo o nacionalidad.

Proceso de Desarrollo

El proyecto se centró en transformar datos tabulares crudos en perfiles de rendimiento comparables.

1. Recolección de Datos

Los datos se obtuvieron de fuentes públicas, concretamente tras una búsqueda exhaustiva, se decidió utilizar los proporcionados en Cycling Oracle

Datos de ejemplo de Cycling Oracle

Datos de ejemplo procedentes de Cycling Oracle

Estos datos incluían una puntuación sobre 100 que refleja el rendimiento de cada ciclista en diferentes tipos de carreras (clásicas, etapas de montaña, contrarreloj, etc.), así como su edad y su puntuación media.

2. Limpieza y Normalización

La clave fue normalizar las variables numéricas (como victorias, puntos UCI, edad o especialidad) para que ninguna característica dominara sobre las otras.

  • Manejo de valores nulos: Se aplicaron técnicas para que los datos faltantes no provocaran erores en el cálculo de similitud.
  • Feature Engineering: Creación de indicadores de “perfil escalador” frente a “rodador” mediante el análisis de sus puntos.

3. Medición de Similitud: Motor de Recomendación Multimodal

Para determinar la afinidad entre corredores, implementé un sistema híbrido que combina tres métricas distintas, equilibradas mediante pesos específicos para maximizar la relevancia deportiva:

  • Similitud Coseno Ponderada (60%): En lugar de tratar todas las habilidades por igual, apliqué pesos dinámicos según las fortalezas del ciclista. Si un corredor destaca en una disciplina (score > 70), el modelo duplica el peso de esa característica, evitando que las “debilidades” (disciplinas en las que no compite) distorsionen la recomendación.

  • Distancia Euclidiana Inversa (25%): Utilizada para medir la proximidad absoluta en el espacio vectorial, asegurando que los corredores con niveles de rendimiento similares a nivel numérico obtengan una bonificación.

  • Similitud Física (15%): Procesé los datos de altura, peso y edad mediante una imputación robusta de nulos, permitiendo que el sistema compare morfologías incluso con datos incompletos.

Refinamiento Lógico

Además de las métricas matemáticas, añadí una capa de lógica de filtrado para refinar los resultados:

  • Penalización por edad: Apliqué un factor de penalización para ciclistas con una diferencia mayor a 7 años, priorizando cohortes generacionales comparables.

  • Bonificación de Perfil: Se otorga un bonus adicional si ambos corredores comparten el mismo perfil dominante (ej: Escalador vs Escalador), asegurando que el modelo prefiera especialistas en la misma disciplina.

# Combinación ponderada de métricas
combined_scores = (0.60 * cosine_scores + 0.25 * euclidean_scores + 0.15 * physical_scores)

# Aplicación de filtros inteligentes (Edad y Perfil)
results['SimilarityScore'] = results['SimilarityScore'] - results['AgePenalty']
results['SimilarityScore'] = results['SimilarityScore'] + results['ProfileBonus']

4. Construcción de la Web App

Para hacer accesible el sistema de recomendación, desarrollé una aplicación web utilizando Flask. La interfaz permite a los usuarios seleccionar un ciclista y visualizar sus recomendaciones de similitud, junto con gráficos que muestran la comparación de perfiles.

Resultado

Más allá de la validación empírica de relaciones obvias, el motor actúa como una herramienta de scouting analítico. Al identificar la firma de rendimiento subyacente en un espacio vectorial multidimensional, el modelo permite detectar talentos emergentes cuyo perfil estadístico es análogo al de los líderes del WorldTour, facilitando la prospección de promesas antes de su consolidación en la élite.

La aplicación web está disponible para su uso, y se puede acceder a ella a través del siguiente enlace: Ciclistas Similares

Buscador

Buscador

Gráfica comparativa

Gráfica comparativa

Gráficas de barras comparativas

Gráficas de barras comparativas

Tabla de ciclistas similares

Tabla de ciclistas similares