Similitud de Jaccard

Escrito por

en

La Similitud de Jaccard (Jaccard Similarity) es una de las medidas de similitud más utilizadas para comparar conjuntos de datos. Su principal objetivo es cuantificar el grado de coincidencia entre dos conjuntos mediante la relación entre los elementos que comparten y el total de elementos distintos que contienen.

A diferencia de otras métricas como la Similitud del Coseno o la Correlación de Pearson, la Similitud de Jaccard no tiene en cuenta la magnitud de los valores ni las puntuaciones asignadas por los usuarios. Únicamente considera si un elemento pertenece o no a un conjunto, lo que la convierte en una herramienta especialmente útil para trabajar con datos binarios, preferencias implícitas y sistemas de recomendación donde interesa conocer la presencia o ausencia de interacciones.

Gracias a su sencillez y facilidad de interpretación, tiene aplicaciones en sistemas de recomendación, minería de datos, recuperación de información, procesamiento del lenguaje natural, bioinformática y visión por computador.

¿Qué es la Similitud de Jaccard?

La Similitud de Jaccard es una medida matemática que cuantifica el grado de semejanza entre dos conjuntos comparando los elementos que tienen en común respecto al total de elementos distintos presentes en ambos.

Matemáticamente se define como:

$$
J(A,B)=
\frac{|A\cap B|}
{|A\cup B|}
$$

donde:

  • \(A \cap B\) representa la intersección de ambos conjuntos.
  • \(A \cup B\) representa la unión de ambos conjuntos.

El resultado siempre se encuentra entre 0 y 1.

¿Cómo funciona?

La Similitud de Jaccard compara exclusivamente la pertenencia de los elementos a un conjunto.

El procedimiento general consiste en:

  1. Identificar los elementos del primer conjunto.
  2. Identificar los elementos del segundo conjunto.
  3. Calcular la intersección entre ambos.
  4. Calcular la unión de ambos conjuntos.
  5. Dividir el número de elementos comunes entre el número total de elementos distintos.

Cuanto mayor sea la proporción de elementos compartidos, mayor será la similitud.

Interpretación de los valores

La Similitud de Jaccard siempre toma valores comprendidos entre 0 y 1.

ValorInterpretación
1Ambos conjuntos son idénticos
0.75Alta similitud
0.50Similitud moderada
0.25Baja similitud
0No comparten ningún elemento

A diferencia de Pearson o Coseno, nunca produce valores negativos.

Ejemplo conceptual

Supongamos las películas que han visto dos usuarios de una plataforma:

A = ('Matrix', 'Interstelar', 'Origen', 'Dune')
B = ('Matrix', 'Dune', 'Avatar', 'Gladiator')

La intersección contiene:

  • Matrix
  • Dune

La unión contiene las contiene todas, por tanto:

$$
J=
\frac{2}{6}

0.33
$$

Esto indica que ambos usuarios comparten aproximadamente un tercio de sus preferencias.

Ejemplo con datos binarios

Supongamos que cada columna representa si un usuario ha comprado un producto.

ProductoUsuario AUsuario B
Libro11
Portátil10
Ratón01
Monitor11
Auriculares00

Los productos compartidos son:

  • Libro
  • Monitor

La unión contiene:

  • Libro
  • Portátil
  • Ratón
  • Monitor

Resultado:

$$
J=
\frac{2}{4}

0.50
$$

¿Por qué es importante en los sistemas de recomendación?

Muchos sistemas de recomendación trabajan con feedback implícito, donde únicamente interesa saber si un usuario ha interactuado con un elemento.

Por ejemplo:

  • Ha comprado un producto.
  • Ha visto una película.
  • Ha escuchado una canción.
  • Ha pulsado sobre una noticia.
  • Ha añadido un artículo a favoritos.

En estos casos no existen puntuaciones, únicamente presencia o ausencia de interacción. La Similitud de Jaccard resulta especialmente adecuada para este tipo de escenarios.

Beneficios

La Similitud de Jaccard ofrece numerosas ventajas.

  • Muy sencilla de interpretar.
  • Ideal para datos binarios.
  • No depende de escalas de valoración.
  • Fácil de implementar.
  • Muy utilizada en filtrado colaborativo implícito.
  • Robusta frente a diferencias de magnitud.
  • Adecuada para conjuntos dispersos.

¿Cuándo utilizar la Similitud de Jaccard?

Es recomendable utilizarla cuando:

  • Se trabaja con datos binarios.
  • Se dispone únicamente de información de presencia o ausencia.
  • Se analizan compras.
  • Se estudian clics.
  • Se comparan etiquetas.
  • Se analizan intereses compartidos.
  • Se desarrollan sistemas de recomendación basados en feedback implícito.

No suele ser la mejor opción cuando existen valoraciones numéricas.

Ventajas y desventajas

VentajasDesventajas
Muy sencilla de interpretarIgnora la intensidad o puntuación de las interacciones
Ideal para datos binariosNo funciona bien con datos continuos
Fácil implementaciónNo distingue entre usuarios muy activos y poco activos
Muy utilizada en sistemas implícitosPuede infraestimar la similitud cuando existen pocos elementos comunes
EscalableNo considera relaciones entre elementos

Limitaciones

Aunque es una métrica muy útil, presenta algunas limitaciones.

  • Solo considera presencia o ausencia de elementos.
  • Ignora completamente las valoraciones.
  • No detecta relaciones lineales.
  • No tiene en cuenta la frecuencia de interacción.
  • Puede resultar poco representativa cuando los conjuntos son muy pequeños.
  • No captura similitudes semánticas entre elementos.

En aplicaciones modernas suele combinarse con otras métricas o con modelos basados en embeddings.

Similitud de Jaccard vs otras medidas

MedidaQué comparaConsidera valoresTipo de datos recomendado
Similitud de JaccardElementos compartidosNoDatos binarios
Similitud del CosenoDirección de vectoresTexto, TF-IDF, Embeddings
Similitud de PearsonRelación linealValoraciones
Distancia EuclidianaDistancia geométricaVariables numéricas
Distancia ManhattanDiferencias absolutasVariables numéricas

La Similitud de Jaccard destaca cuando el objetivo es comparar conjuntos y no valores numéricos.

Aplicaciones en Data Science y Machine Learning

La Similitud de Jaccard aparece en numerosos problemas de Ciencia de Datos. Entre sus aplicaciones más habituales destacan:

  • Sistemas de recomendación.
  • Filtrado colaborativo basado en feedback implícito.
  • Recuperación de información.
  • Procesamiento del Lenguaje Natural (NLP).
  • Comparación de documentos.
  • Detección de documentos duplicados.
  • Sistemas de etiquetado.
  • Bioinformática.
  • Visión por computador.
  • Minería de datos.
  • Segmentación de usuarios.

Es especialmente útil cuando las variables representan pertenencia a un conjunto.

Implementación en Python

Calcular la Similitud de Jaccard entre conjuntos

usuarios_a = {
    "Matrix",
    "Origen",
    "Dune",
    "Interestelar"
}

usuarios_b = {
    "Matrix",
    "Dune",
    "Avatar",
    "Gladiator"
}

jaccard = (
    len(usuarios_a & usuarios_b) /
    len(usuarios_a | usuarios_b)
)

print(jaccard)

Resultado:

0.3333333333333333

Utilizando Scikit-Learn

from sklearn.metrics import jaccard_score

usuario_a = [1,1,0,1,0]
usuario_b = [1,0,1,1,0]

score = jaccard_score(
    usuario_a,
    usuario_b
)

print(score)

Resultado:

0.5

Calcular una matriz de similitud

from sklearn.metrics import pairwise_distances
import pandas as pd

datos = pd.DataFrame([
    [1,1,0,1],
    [1,0,1,1],
    [0,1,1,0]
])

similitud = 1 - pairwise_distances(
    datos,
    metric="jaccard"
)

print(similitud)

La matriz obtenida contiene la similitud entre todos los pares de usuarios o elementos.

Complejidad computacional

El cálculo de la Similitud de Jaccard depende del número de características comparadas.

Para dos conjuntos con n elementos:

  • El cálculo tiene una complejidad aproximada de O(n).

Cuando se calcula la similitud entre todos los usuarios de una matriz:

  • La complejidad aproximada es O(m² · n),

donde:

  • m representa el número de usuarios o elementos.
  • n el número de características.

En conjuntos de datos muy grandes pueden utilizarse técnicas de indexación o aproximación para acelerar el proceso.

Buenas prácticas

Para utilizar correctamente la Similitud de Jaccard se recomienda:

  • Utilizarla únicamente con datos binarios o conjuntos.
  • Eliminar registros inconsistentes antes del cálculo.
  • Validar la métrica frente a otras alternativas.
  • Utilizar representaciones adecuadas para datos implícitos.
  • Combinarla con otras técnicas cuando existan valoraciones numéricas.
  • Optimizar el cálculo mediante estructuras eficientes cuando se trabaja con grandes volúmenes de datos.
  • Documentar claramente el significado de las variables binarias utilizadas.

Conclusión

La Similitud de Jaccard es una medida sencilla, eficiente y ampliamente utilizada para comparar conjuntos de datos mediante la proporción de elementos compartidos. Su principal fortaleza reside en que no requiere puntuaciones ni valores continuos, lo que la convierte en una excelente opción para sistemas de recomendación basados en feedback implícito, donde únicamente interesa conocer si un usuario ha interactuado o no con un elemento.

Gracias a su facilidad de interpretación y a su bajo coste computacional, la Similitud de Jaccard continúa siendo una herramienta de referencia en sistemas de recomendación, minería de datos, recuperación de información y análisis de datos binarios. No obstante, al ignorar la intensidad de las interacciones y las relaciones entre los valores, conviene utilizarla únicamente cuando el problema pueda representarse de forma natural mediante conjuntos o variables binarias, o combinarla con otras medidas de similitud cuando se requiera una representación más completa de los datos.