Construyo modelos de machine learning y cuento lo que de verdad aciertan.

Aprendizaje supervisado, no supervisado y profundo, procesamiento del lenguaje con transformers y LLM locales, y machine learning para audio y EEG, del diseño de variables a una evaluación honesta. Ahora termino el Data Science Career Accelerator de la Universidad de Cambridge.

En Barcelona, con disponibilidad para trabajar en remoto. Abierta a puestos de machine learning e ingeniería de IA, y a doctorados en machine learning aplicado al audio y a la cognición musical.

Fig. 1 · Abandono de estudiantes. Abandonos detectados por el modelo XGBoost ajustado a medida que llegan los datos de cada estudiante, en tres etapas. Conjunto de test reservado: 5.013 estudiantes, 779 abandonos.
Proyectos

Cada proyecto con la cifra que alcanzó y sus límites

Machine learning aplicado

Proyectos del curso de la Universidad de Cambridge
Estudiantes que seguían en el curso y acabaron abandonando, modelo de la etapa 3.
Aprendizaje supervisado · 2026

Predecir el abandono de estudiantes y mostrar cuándo la predicción sirve de algo

25.059 estudiantes internacionales, con datos que llegan en tres etapas: primero la solicitud, después la asistencia y por último los resultados de los módulos. Comparé XGBoost con una red neuronal en cada etapa, con una partición agrupada por estudiante y un conjunto de test reservado de 5.013.

La puntuación de 0,993 en la última etapa era demasiado buena: los expedientes imputados delataban la respuesta. Evaluado de nuevo sobre los 4.339 estudiantes que seguían en el curso, el modelo detecta 105 de 136 abandonos futuros. Una partición temporal mantuvo el ROC-AUC en 0,891, 0,904 y 0,980, pero mostró que el umbral de decisión tendría que recalibrarse con cada nueva promoción.

Python · XGBoost · Keras · scikit-learn · pandas

0,977 ROC-AUC en estudiantes que siguen en el curso
Cuatro enfoques sobre las mismas reseñas. Las etiquetas del LLM local se consolidaron en 20 temas.
Procesamiento del lenguaje y LLM · 2026

Separar las quejas de toda la cadena de las de cada centro en reseñas de clientes

Decenas de miles de reseñas de dos plataformas para una cadena de gimnasios británica, un cliente bajo acuerdo de confidencialidad. Comparé BERTopic (embeddings MiniLM, UMAP, HDBSCAN y fusión jerárquica), clasificación de emociones con transformers, LDA ajustado según la coherencia c_v y un LLM local (phi4-mini en Ollama, temperatura 0) para etiquetar los temas.

Los resultados se dan como tasas con umbrales de volumen mínimo, no como recuentos brutos. Corregí artefactos de fechas debidos a cargas masivas y documenté dónde las etiquetas del LLM eran vagas o no se apoyaban en los datos.

BERTopic · sentence-transformers · UMAP · HDBSCAN · Hugging Face · Ollama · Gensim

20 temas, con recomendaciones por centro
Clientes por segmento, K-means con k = 5.
Aprendizaje no supervisado · 2026

De 951.668 pedidos a cinco segmentos de clientes

Construí una vista por cliente a partir de los pedidos: frecuencia, recencia, valor del ciclo de vida, coste unitario y edad para 68.300 clientes de 47 países, en un pipeline de scikit-learn con StandardScaler y K-means.

Elegí k = 5: ahí se aplana la curva del codo y el coeficiente de silueta alcanza su máximo, aunque el índice de Davies–Bouldin era algo mejor con k = 6, y así lo indico. El clustering jerárquico de Ward mostró una estructura más amplia de dos grupos que los cinco segmentos subdividen, y cada segmento lleva asociada una acción de marketing.

pandas · scikit-learn · SciPy · PCA · t-SNE

68.300 clientes en cinco segmentos

Audio, música y cerebro

Investigación propia
Mejora al añadir la sorpresa de altura al modelo del EEG, un punto por oyente. La barra marca la mediana.
EEG y modelos de secuencias · en curso

¿Explica la sorpresa musical cómo responde el cerebro a Bach?

Conjunto de datos público (CC0): EEG de 20 oyentes y 7.839 notas. Entrené 24 modelos de secuencias GRU en PyTorch (altura y ritmo, tres semillas, con y sin aumento de datos), con el diseño fijado antes de entrenar, y ajusté funciones de respuesta temporal en MNE con validación cruzada anidada por pieza.

La sorpresa de altura de la GRU con aumento mejoró la predicción del EEG en 16 de 20 oyentes, más que IDyOM o IDyOMpy, y se mantuvo entre semillas y al dejar fuera una pieza o un oyente. El resultado del ritmo no se sostuvo, y así lo cuento. Por el camino reproduje un efecto publicado y mostré que validar por ensayos lo infla.

PyTorch · MNE-Python · regresión ridge · pruebas de Wilcoxon · pytest

1,15 d de Cohen de la mejora por altura, 16 de 20 oyentes (p < 0,0001)
Acentos 3 · 6 · 8 · 10 · 12 · tiempo fuerte percibido: 3 · Modo: frigio.
Recuperación de información musical · 2026

Distinguir palos flamencos a partir del audio

Clasifica soleá, seguiriya, bulería y alegrías. Los cuatro comparten el compás de 12 tiempos, así que las variables salen de la teoría musical: modo frigio frente a mayor, la cadencia andaluza y dónde cae la armonía dentro del ciclo, junto con MFCC y croma.

Un Random Forest superó al gradient boosting y a una SVM. El tempo resultó ser la variable que más discrimina por sí sola, y las variables de posición en el compás redujeron la varianza de la validación cruzada en lugar de subir la media. Está publicado como aplicación de Streamlit, con pruebas de pytest e integración continua en GitHub Actions.

librosa · scikit-learn · Streamlit · pytest

0,645 F1-macro en validación cruzada (±0,115)
Curva ROC sobre 2.418 pares de grabaciones test–entrenamiento, 78 de ellos del mismo cantaor.
Deep learning · audio · 2026

Reconocer la voz de un cantaor, no su estilo

109 grabaciones históricas de flamenco de 79 cantaores, de los que solo 31 tienen más de una grabación: muy pocos datos para entrenar un codificador desde cero. Entrené con triplet loss una capa de proyección 512-256-128 sobre embeddings preentrenados de OpenL3 y evalué la verificación en conjunto cerrado.

El espacio ajustado supera al modelo base congelado. Una prueba posterior mostró que también separa los dos conjuntos de datos de origen, así que parte de lo que aprende es la procedencia de la grabación. El informe lo explica.

PyTorch · OpenL3 · triplet loss · UMAP

0,80 AUC, verificación en conjunto cerrado (EER ≈ 30 %)

Ingeniería

Práctica de backend

Cliente → API de Flask
API de Flask → PostgreSQL
API de Flask → Redis → Celery
Alembic · Docker Compose · CI

API REST · datos sintéticos · 2026

Seguir las incidencias de una aerolínea como lo haría un centro de operaciones

API REST en Flask con validación en Pydantic y autenticación por clave, SQLAlchemy y PostgreSQL con migraciones de Alembic, y un trabajador de Celery que estima el impacto y propaga los retrasos por la rotación de cada avión. Funciona en Docker Compose, con un flujo de GitHub Actions que prueba todo el sistema de principio a fin.

Flask · SQLAlchemy · PostgreSQL · Celery · Redis · Docker · pytest

99% de cobertura de pruebas, 96 pruebas de pytest
Método

Cómo trabajo, en cuatro pasos

La misma secuencia recorre todos los proyectos de arriba. Cada paso lleva un ejemplo de ellos.

  1. 1 · Datos

    Auditar antes de modelar

    Comprobar qué pueden decir los datos y qué no. En los datos de abandono, 182 estudiantes aparecían dos veces, así que la partición se agrupó por estudiante.

  2. 2 · Variables

    Codificar lo que sabe el dominio

    El modo y la posición en el compás en el flamenco. En el abandono, el orden en que llega de verdad la información de cada estudiante.

  3. 3 · Modelo

    Fijar el diseño antes de entrenar

    Primero, líneas base, y la comparación decidida de antemano. En el proyecto de EEG, los 24 modelos GRU quedaron definidos antes de entrenar ninguno.

  4. 4 · Evaluación

    Poner a prueba el propio resultado

    Una validación que responda a la pregunta. Validado por ensayos, un efecto publicado de EEG parecía sólido; validado por piezas, la mejora dejó de ser significativa (ΔR +0,0002, p = 0,35).

Escuchar

Toca unas notas. Esto es lo que ve un modelo de audio.

Cada tecla que pulsas se dibuja como un espectrograma: el tiempo avanza de izquierda a derecha, las notas más agudas quedan más arriba y el brillo es la energía. El clasificador de palos y los embeddings de cantaores parten de imágenes de tiempo y frecuencia como esta.

3 kHz 100 Hz Cadencia andaluza · La Sol Fa Mi

Haz clic en las teclas o escribe A S D F G H J K. Sintetizado en el navegador con la Web Audio API, sin samples.

Intereses de investigación

Machine learning para el audio, la música y el cerebro que escucha

Aprendizaje de representaciones, recuperación de información musical y modelos de expectativa musical contrastados con EEG. Las variables y las preguntas salen de mi formación como pianista clásica y flamenca.

Conocimientos
Machine learning
scikit-learn, XGBoost, PyTorch, Keras, aprendizaje por transferencia y de métricas, clustering, modelos de secuencias (GRU)
Lenguaje y LLM
BERTopic, LDA (Gensim), transformers de Hugging Face, sentence-transformers, LLM locales (Ollama, LM Studio)
Audio y EEG
librosa, OpenL3, MFCC, croma, F0, MNE-Python
Datos
Python, pandas, NumPy, SQL, PostgreSQL, UMAP, HDBSCAN, estadística
Ingeniería
Flask, Pydantic, Docker, Git, GitHub Actions, pytest, ruff, mypy, Celery, Redis, Streamlit
Idiomas
Español (nativo), inglés (avanzado), catalán (básico)
Experiencia
  • 2024 – hoyFundadora y profesora de pianoEstudio Pianístico, Barcelona
  • 2025Ponente invitada, neuromúsicaNus Agency, Barcelona
  • 2020 – 2024Profesora de pianoLa Clau, Colegio Patrocinio, Saint Anne's School
Formación
  • 2026Data Science Career Accelerator, Machine Learning & AIUniversidad de Cambridge (PACE)en curso
  • 2026Programación en Python, 300 horasEscuela Musk Technologies
  • 2025Máster en Neuromúsica: interacción música-cerebroUniversidad Católica San Antonio de Murcia (UCAM)60 ECTS
  • 2023 – 2024Máster en Estudios Avanzados en Flamenco, Piano FlamencoEscola Superior de Música de Catalunya (ESMUC)9,5 / 10
  • 2022Título Superior de Música, Piano ClásicoMusical Arts, Madrid9 / 10
Contacto

Puestos de machine learning e IA, doctorados y colaboraciones.

laura.ortega.garre@gmail.com