Skip to content

oeg-upm/saint-experiments-wp2-wp4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SAINT — WP4: Clustering de keywords

Este repositorio recoge los experimentos realizados en el WP4 para analizar si las keywords utilizadas en campañas publicitarias pueden agruparse según su similitud semántica.

Para ello se han probado distintas técnicas de vectorización y clustering. Los experimentos principales comparan TF-IDF y embeddings contextuales con K-Means y HDBSCAN.

El ROI no se incorpora a los vectores ni se utiliza para calcular la similitud entre keywords. En varios experimentos se emplea como criterio de filtrado y, una vez generados los clústeres, como variable de análisis para comprobar cómo se distribuyen las keywords con rendimiento positivo y negativo dentro de cada grupo.

Los datos utilizados son internos y no forman parte del repositorio.


Objetivos

Los experimentos se han planteado con los siguientes objetivos:

  • Identificar grupos de keywords con similitud semántica dentro de cada destino.
  • Intentar reconocer patrones de agrupamiento de las keywords.
  • Comparar distintas técnicas de representación de texto.
  • Evaluar la coherencia de los grupos obtenidos.
  • Detectar keywords que no encajan claramente en ningún clúster.
  • Analizar la distribución del ROI dentro de los grupos semánticos.
  • Localizar términos asociados a rendimientos bajos o negativos.
  • Evaluar el comportamiento de los métodos sobre conjuntos de distinto tamaño.

Datos

El dataset original se encuentra almacenado en formato Parquet y contiene aproximadamente 35 millones de registros, de los cuales alrededor de 9 millones corresponden a keywords únicas.

Los registros incluyen información mensual y están clasificados por destino. El análisis inicial permite estudiar:

  • el número de keywords por destino;
  • la distribución mensual;
  • las keywords que aparecen en varios periodos;
  • la presencia de duplicados;
  • la proporción de keywords con ROI igual o distinto de cero;
  • la evolución del ROI a lo largo de los meses.

Para los experimentos se seleccionan subconjuntos filtrados por destino. Esto permite trabajar con escenarios de diferente volumen y comparar la eficacia y escalabilidad de las técnicas utilizadas.

Los nombres reales de los destinos y las keywords no se publican en el repositorio.


Metodología

El trabajo se divide en tres etapas principales:

  1. Vectorización de las keywords.
  2. Aplicación de algoritmos de clustering.
  3. Evaluación e interpretación de los resultados.
Dataset
    ↓
Análisis y filtrado por destino
    ↓
Preparación y agregación por keyword
    ↓
Vectorización
    ├── TF-IDF
    ├── Word2Vec
    └── Sentence Transformers
    ↓
Clustering
    ├── K-Means
    ├── HDBSCAN
    └── BERTopic
    ↓
Evaluación de los grupos
    ↓
Análisis del ROI

Vectorización

TF-IDF

TF-IDF transforma las keywords en vectores a partir de la frecuencia e importancia de sus términos.

Este método se utiliza como punto de partida porque es rápido, fácil de interpretar y permite detectar coincidencias entre palabras y expresiones.

Su principal limitación es que la proximidad entre dos keywords depende fundamentalmente del vocabulario compartido. Dos expresiones con una intención similar pueden aparecer alejadas si utilizan palabras diferentes.

Sentence Transformers

En el informe esta línea de trabajo se describe como vectorización con BERT. En el código se implementa mediante Sentence Transformers utilizando el modelo:

all-MiniLM-L6-v2

Este modelo genera una representación de la keyword completa y permite comparar expresiones por su proximidad semántica, aunque no compartan exactamente los mismos términos.

Word2Vec

Word2Vec se utiliza como prueba complementaria.

El modelo genera un vector para cada palabra y la representación de una keyword se obtiene calculando la media de los vectores de las palabras que la componen.

Clustering

K-Means

K-Means divide las keywords en un número fijo de grupos.

El número de clústeres debe establecerse antes del entrenamiento, por lo que se prueban diferentes valores de K y se comparan mediante métricas de validación.

HDBSCAN

HDBSCAN agrupa las observaciones a partir de zonas de mayor densidad.

A diferencia de K-Means, no obliga a asignar todas las keywords a un grupo. Las observaciones que no pertenecen claramente a ningún clúster reciben la etiqueta -1 y se consideran ruido.

BERTopic

BERTopic se incluye como una prueba exploratoria para comprobar si puede facilitar la identificación y descripción automática de temas.

No forma parte de las conclusiones principales del informe.


Evaluación

Los experimentos utilizan distintas métricas y técnicas de visualización.

Método del codo

Se analiza la evolución de la inercia al aumentar el número de clústeres.

El objetivo es localizar un punto a partir del cual el incremento de K deja de producir una mejora importante.

Coeficiente de silueta

El coeficiente de silueta permite evaluar la cohesión interna de los grupos y su separación respecto a los demás clústeres.

Un valor más alto indica una mejor separación.

Métricas complementarias

El notebook de validación también calcula:

  • Calinski-Harabasz.
  • Davies-Bouldin.

Estas métricas se utilizan para complementar el método del codo y el coeficiente de silueta.

Reducción de dimensionalidad

PCA y UMAP se utilizan para proyectar las representaciones a dos dimensiones y facilitar la visualización de:

  • la distribución de los grupos;
  • las zonas de solapamiento;
  • las keywords alejadas de los grupos principales;
  • las observaciones clasificadas como ruido.

Estas proyecciones se utilizan como apoyo visual y no sustituyen el análisis del contenido de los clústeres.


Resumen de experimentos

Experimento Tipo Situación
TF-IDF + K-Means Experimento principal Incluido en el informe
Sentence Transformers + K-Means Experimento principal Incluido en el informe
Sentence Transformers + HDBSCAN Experimento principal Incluido en el informe
TF-IDF + UMAP + HDBSCAN Comparación adicional Incluido en los notebooks
Word2Vec + K-Means Prueba exploratoria Incluido en los notebooks
BERTopic Prueba exploratoria Incluido en los notebooks
TF-IDF + K-Means con datos sintéticos Prueba técnica exploratoria

Resultados principales

TF-IDF + K-Means

En el experimento con TF-IDF y K-Means se seleccionaron seis clústeres.

El método del codo no proporcionó un resultado concluyente sobre el número óptimo de grupos.

En la representación bidimensional los clústeres parecen estar relativamente diferenciados. Sin embargo, al revisar las keywords de cada grupo, la coherencia semántica es limitada.

Los grupos tienden a formarse alrededor de palabras compartidas. Esto permite identificar patrones léxicos, pero no garantiza que todas las keywords tengan la misma intención.

Sentence Transformers + K-Means

Los embeddings generados con Sentence Transformers producen una representación más rica que TF-IDF.

Los clústeres aparecen más dispersos en la proyección bidimensional, pero la revisión de las keywords muestra agrupamientos semánticamente más coherentes.

Esto indica que la separación visual en dos dimensiones no es suficiente para determinar la calidad de los grupos. La interpretación debe completarse revisando las keywords representativas de cada clúster.

Sentence Transformers + HDBSCAN

HDBSCAN se utiliza para detectar grupos basados en densidad y separar las keywords que no encajan claramente en ninguno de ellos.

Las observaciones consideradas atípicas se agrupan bajo la etiqueta:

-1

Este grupo se interpreta como ruido o conjunto de keywords sin una pertenencia estable.

Los resultados muestran grupos de menor tamaño y, en determinados casos, con una mayor afinidad semántica entre sus elementos. No obstante, la distribución continúa siendo dispersa y depende de los parámetros utilizados.

Análisis del ROI

Después de generar los clústeres se analiza el ROI de las keywords que forman cada grupo.

Las visualizaciones permiten distinguir keywords con valores positivos y negativos y observar su posición dentro del espacio semántico.

Los resultados muestran que dentro de un mismo clúster pueden aparecer keywords con comportamientos de rendimiento diferentes.

Por tanto, la similitud semántica no implica necesariamente que las keywords presenten un ROI similar.


Organización de los notebooks

Los notebooks se encuentran en:

saint-experiments-wp4/notebooks/
notebooks/
├── data_analysis.ipynb
├── data_preparation.ipynb
├── synthetic_tfidf_kmeans_smoke_test.ipynb
├── vectorization_and_kmeans_validation.ipynb
├── sentence_transformers_kmeans.ipynb
├── sentence_transformers_hdbscan.ipynb
├── tfidf_umap_hdbscan.ipynb
├── word2vec_kmeans.ipynb
└── bertopic_exploration.ipynb

Descripción de los notebooks

data_analysis.ipynb

Realiza el análisis inicial del dataset.

El notebook:

  • carga los archivos Parquet mediante PyArrow;
  • calcula el número total de filas y keywords únicas;
  • compara las keywords con ROI igual y distinto de cero;
  • obtiene el mismo análisis desglosado por destino;
  • localiza keywords duplicadas;
  • identifica keywords repetidas dentro de un mismo destino;
  • recoge los meses y valores de ROI asociados a las keywords repetidas;
  • calcula el número de keywords únicas por destino;
  • calcula el número de keywords únicas por destino y mes;
  • genera visualizaciones de la distribución mensual.

Este notebook se corresponde con el apartado de análisis descriptivo de los datos del informe.


data_preparation.ipynb

Prepara el conjunto que se utiliza posteriormente en los experimentos de vectorización y clustering.

El notebook:

  • carga el dataset Parquet;
  • muestra el esquema y el número total de registros;
  • filtra los datos por destino;
  • selecciona registros con ROI distinto de cero;
  • revisa las columnas, tipos y consumo de memoria;
  • calcula estadísticas sobre keywords, meses, países y categorías;
  • analiza la distribución del ROI;
  • obtiene rankings por impresiones, clics y ROI;
  • agrega los registros por keyword;
  • suma impresiones, clics, costes, conversiones e ingresos;
  • calcula CTR, CPC, tasa de conversión, ROI, CPA e ingresos por clic;
  • aplica un filtro mínimo de impresiones y clics;
  • analiza la longitud y el número de palabras de las keywords;
  • guarda el conjunto preparado para el clustering.

El archivo resultante se utiliza como entrada en el notebook de validación de vectorizaciones.


synthetic_tfidf_kmeans_smoke_test.ipynb

Es una prueba técnica con un conjunto pequeño de keywords sintéticas.

No utiliza datos internos y no forma parte de las conclusiones del informe.

El notebook:

  • crea un pequeño dataset de ejemplo;
  • limpia el texto y elimina stopwords;
  • genera vectores TF-IDF;
  • aplica K-Means;
  • muestra las keywords asignadas a cada grupo;
  • compara diferentes valores de K;
  • calcula la inercia y el coeficiente de silueta;
  • representa los clústeres mediante PCA;
  • ejecuta una prueba adicional con DBSCAN para detectar outliers.

Su finalidad es comprobar que el entorno y el flujo básico de clustering funcionan sin necesidad de acceder al dataset privado.


vectorization_and_kmeans_validation.ipynb

Compara las distintas técnicas de vectorización y evalúa diferentes configuraciones de K-Means.

El notebook:

  • carga el dataset preparado;
  • normaliza las keywords;
  • genera una representación TF-IDF;
  • entrena un modelo Word2Vec;
  • obtiene un vector por keyword a partir de la media de sus palabras;
  • genera embeddings con all-MiniLM-L6-v2;
  • utiliza Sentence Transformers como representación principal cuando está disponible;
  • prueba valores de K comprendidos entre 3 y 15;
  • calcula inercia, Silhouette, Calinski-Harabasz y Davies-Bouldin;
  • genera la gráfica comparativa de las métricas.

Este notebook permite comparar los métodos bajo un mismo procedimiento de validación.


sentence_transformers_kmeans.ipynb

Contiene el experimento principal con Sentence Transformers y K-Means.

El notebook:

  • carga el dataset;
  • filtra los registros por destino y ROI distinto de cero;
  • normaliza las keywords;
  • genera embeddings por lotes con all-MiniLM-L6-v2;
  • prueba diferentes valores de K;
  • calcula inercia y coeficiente de silueta;
  • selecciona una configuración a partir de las métricas;
  • entrena el modelo K-Means final;
  • asigna una etiqueta a cada keyword;
  • proyecta los embeddings mediante UMAP o PCA;
  • representa los grupos en dos dimensiones;
  • muestra keywords representativas por clúster;
  • incorpora impresiones, clics y ROI a las tablas de análisis.

sentence_transformers_hdbscan.ipynb

Evalúa HDBSCAN sobre los embeddings generados con Sentence Transformers.

El notebook:

  • carga y filtra el dataset;
  • normaliza las keywords;
  • genera embeddings con all-MiniLM-L6-v2;
  • prueba diferentes valores de min_cluster_size;
  • prueba diferentes valores de min_samples;
  • calcula el número de clústeres obtenido en cada combinación;
  • calcula el número de observaciones clasificadas como ruido;
  • calcula el coeficiente de silueta;
  • almacena los resultados en una tabla;
  • representa la variación del número de clústeres en función de los parámetros.

Este notebook se utiliza para estudiar la sensibilidad de HDBSCAN y seleccionar una configuración adecuada.


tfidf_umap_hdbscan.ipynb

Evalúa una combinación alternativa de TF-IDF, UMAP y HDBSCAN.

El flujo aplicado es:

Keywords
    ↓
TF-IDF
    ↓
UMAP
    ↓
HDBSCAN

El notebook:

  • carga y filtra el dataset;
  • genera vectores TF-IDF con unigramas y bigramas;
  • reduce la dimensionalidad con UMAP;
  • utiliza una representación de cinco dimensiones para el clustering;
  • genera una proyección independiente de dos dimensiones para la visualización;
  • aplica HDBSCAN;
  • identifica los clústeres y el ruido;
  • incorpora las etiquetas al DataFrame;
  • genera una visualización interactiva con Plotly;
  • permite consultar la keyword, el ROI y el clúster;
  • analiza las keywords con ROI positivo dentro de uno de los grupos.

Este experimento sirve como comparación con HDBSCAN aplicado sobre embeddings contextuales.


word2vec_kmeans.ipynb

Contiene una prueba exploratoria con Word2Vec y K-Means.

El notebook:

  • filtra el dataset por destino y ROI distinto de cero;
  • limita el tamaño de la muestra cuando el volumen supera las 500.000 filas;
  • tokeniza las keywords;
  • entrena un modelo Word2Vec de 100 dimensiones;
  • calcula el vector de cada keyword mediante la media de sus palabras;
  • aplica K-Means con cinco clústeres;
  • calcula el coeficiente de silueta;
  • calcula la distancia de cada keyword a su centroide;
  • ordena las keywords según su proximidad al centro del grupo;
  • muestra las keywords más representativas junto con ROI, clics e impresiones.

Esta prueba se utiliza como comparación entre TF-IDF y Sentence Transformers.


bertopic_exploration.ipynb

Contiene una primera prueba con BERTopic.

El notebook:

  • carga el dataset Parquet;
  • filtra las keywords por destino;
  • genera embeddings con all-MiniLM-L6-v2;
  • crea un modelo BERTopic configurado para textos en inglés;
  • obtiene el tema y la probabilidad asignados a cada keyword;
  • añade esta información al DataFrame;
  • muestra el resumen de temas generado por el modelo.

Este experimento es exploratorio y no forma parte de las conclusiones principales del informe.


Orden de ejecución

El flujo principal puede ejecutarse en el siguiente orden:

data_analysis.ipynb
    ↓
data_preparation.ipynb
    ↓
vectorization_and_kmeans_validation.ipynb
    ↓
sentence_transformers_kmeans.ipynb
    ↓
sentence_transformers_hdbscan.ipynb

Los siguientes notebooks son pruebas complementarias o independientes:

synthetic_tfidf_kmeans_smoke_test.ipynb
tfidf_umap_hdbscan.ipynb
word2vec_kmeans.ipynb
bertopic_exploration.ipynb

Conclusiones

Los experimentos muestran diferencias claras entre las representaciones utilizadas.

Con TF-IDF y K-Means se obtienen grupos parcialmente diferenciados, pero con una coherencia semántica limitada al revisar las keywords de cada clúster.

Los embeddings contextuales generan agrupamientos más coherentes, aunque su representación en dos dimensiones presenta una mayor dispersión.

HDBSCAN facilita la detección de outliers y permite separar en un grupo de ruido las keywords que no presentan una pertenencia clara.

En conjunto, los resultados indican que los embeddings contextuales son más adecuados que TF-IDF para tareas de segmentación y análisis temático de keywords.

El análisis del ROI aporta información adicional sobre el comportamiento de los grupos, pero no se observa que todas las keywords semánticamente próximas tengan necesariamente un rendimiento similar.


Trabajo futuro

A partir de los resultados obtenidos se plantean las siguientes líneas de continuidad:

  • ampliar el análisis con más datos;
  • comparar los resultados entre distintos destinos;
  • ajustar los parámetros de HDBSCAN;
  • evaluar la estabilidad de los clústeres;
  • mejorar la interpretación de los grupos;
  • generar una segmentación centrada en campañas concretas;
  • estudiar con más detalle la relación entre los grupos semánticos y el ROI.

Infraestructura

  • GPU: NVIDIA A100 PCIe.
  • Memoria GPU: 40 GB.
  • Driver NVIDIA: 550.54.14.
  • CUDA soportada: 12.4.

Dependencias principales

Los notebooks utilizan principalmente:

  • pandas;
  • NumPy;
  • PyArrow;
  • scikit-learn;
  • Sentence Transformers;
  • PyTorch;
  • HDBSCAN;
  • UMAP;
  • Plotly;
  • Gensim;
  • NLTK;
  • BERTopic;
  • Matplotlib;
  • Seaborn.

Confidencialidad

El repositorio no incluye los datos originales.

About

Clustering semántico de keywords mediante TF-IDF, BERT, K-Means y HDBSCAN para optimizar la coherencia y el ROI de campañas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors