Curso de Matemáticas para IA · Lección 4 de 180
Notación de conjuntos para datasets de IA: pertenencia, particiones y filtraciones
Aprende conjuntos, pertenencia, unión, intersección y particiones encontrando y corrigiendo solapamientos en una división de datos de entrenamiento, validación y prueba.
Supón que un clasificador de imágenes obtiene un 96 % en sus datos de validación. Después alguien observa que img-04 se utilizó para el entrenamiento y la validación. La puntuación puede parecer precisa, pero uno de sus ejemplos ya no era desconocido.
Los conjuntos nos dan una forma compacta de expresar y comprobar ese fallo. Un conjunto registra qué objetos pertenecen a una colección. A partir de ahí, la intersección expone el solapamiento, la unión comprueba la cobertura y una partición describe una asignación limpia de cada ejemplo a exactamente una división del dataset.
Al terminar esta lección, podrás leer notación de pertenencia y de construcción de conjuntos, calcular operaciones habituales y poner en práctica una primera auditoría de los identificadores de entrenamiento, validación y prueba. Esto desarrolla el lado de los datos de la visión de variables, modelos y aprendizaje introducida en la lección 1.
La pertenencia convierte una colección en una afirmación de sí o no
Un conjunto es una colección cuya pertenencia no es ambigua. Si es el conjunto de todos los identificadores de ejemplos de un dataset pequeño, podemos escribir
Las llaves significan «el conjunto que contiene estos elementos». La afirmación
se lee «img-02 es un elemento de ». El símbolo niega esa afirmación, por lo que .
El número de elementos distintos de un conjunto finito es su cardinalidad, escrita . En el ejemplo anterior, .
La notación de construcción de conjuntos describe una regla, no una lista larga
Enumerar todos los elementos deja de ser práctico en un dataset real. La notación de construcción de conjuntos define la pertenencia mediante una condición:
Se lee de izquierda a derecha: « es el conjunto de ejemplos de cuyo nombre es cat». Los dos puntos significan «tal que». También se usa habitualmente una barra vertical, , en la misma posición.
La condición posterior a los dos puntos actúa como un filtro. Para
si img-01 e img-04 tienen la etiqueta cat, entonces
Esta notación separa el universo considerado—aquí, —de la regla de pertenencia. Sin , «todas las imágenes de gatos» podría significar todas las imágenes de gatos existentes, no los ejemplos disponibles para este proyecto.
Tres operaciones auditan una división de datos
Sean , y los conjuntos de identificadores de entrenamiento, validación y prueba. Tres operaciones responden a preguntas de ingeniería distintas.
| Operación | Notación | Pregunta sobre el dataset |
|---|---|---|
| Intersección | ¿Qué identificadores aparecen en ambos conjuntos? | |
| Unión | ¿Qué identificadores distintos aparecen en al menos un conjunto? | |
| Diferencia | ¿Qué identificadores de entrenamiento faltan en validación? |
El conjunto vacío, escrito , no contiene elementos. Por tanto, afirma que entrenamiento y validación no comparten identificadores. Estos conjuntos se llaman disjuntos.
Una división limpia es una partición
Supón que el dataset completo es . Los conjuntos de entrenamiento, validación y prueba forman una partición de cuando cumplen dos requisitos.
Primero, su unión cubre todo el dataset:
Segundo, cada par es disjunto:
La cobertura evita que un ejemplo desaparezca. La disjunción por pares evita que ocupe dos divisiones. Juntas indican que cada elemento de pertenece exactamente a una parte.
| Ejemplo | Entrenamiento | Validación | Prueba |
|---|---|---|---|
img-01gato atigrado | |||
img-02golden retriever | |||
img-03autobús urbano | |||
img-04bicicleta roja | |||
img-05gorrión | |||
img-06velero | |||
img-07roble |
Esto aún no es una partición Corrige el identificador solapado o no cubierto.
- Dtrain
- {img-01, img-02, img-03, img-04}
- Dvalidation
- {img-04, img-05}
- Dtest
- {img-06, img-07}
Solapamiento: {img-04}
Sin cubrir: ∅
El estado inicial cubre los siete identificadores, pero falla la prueba de partición porque img-04 pertenece tanto a como a . Desmarca una de esas dos pertenencias para producir una partición válida. Después deja un identificador sin marcar en ninguna parte: el solapamiento desaparece, pero falla la condición de cobertura.
Los conjuntos de Python reflejan la auditoría
La documentación oficial de Python define su tipo set como una colección no ordenada de objetos distintos y hashables. Admite las mismas operaciones de unión, intersección, diferencia, pertenencia y disjunción utilizadas arriba.
all_ids = {f"img-{i:02d}" for i in range(1, 8)}
train_ids = {"img-01", "img-02", "img-03", "img-04"}
validation_ids = {"img-04", "img-05"}
test_ids = {"img-06", "img-07"}
overlap = (
(train_ids & validation_ids)
| (train_ids & test_ids)
| (validation_ids & test_ids)
)
covered = train_ids | validation_ids | test_ids
missing = all_ids - covered
is_partition = not overlap and not missing and covered == all_ids
print(sorted(overlap))
print(sorted(missing))
print(is_partition)
La salida verificada es:
['img-04']
[]
False
El operador & calcula la intersección, | la unión y - la diferencia. not overlap solo es verdadero cuando el conjunto de solapamientos está vacío.
Para una comprobación reutilizable, haz explícitas las condiciones:
def is_partition(universe, *parts):
covered = set().union(*parts)
total_memberships = sum(len(part) for part in parts)
no_overlap = total_memberships == len(covered)
return no_overlap and covered == universe
Si un identificador aparece en dos partes, la suma de sus tamaños separados supera el tamaño de la unión. Si falta un identificador, la unión difiere del universo.
Los identificadores disjuntos son necesarios, pero no suficientes contra las filtraciones
El solapamiento inicial es una forma de filtración de datos: información fuera del límite de entrenamiento influye en la construcción o evaluación del modelo. La guía de filtraciones de Scikit-learn explica que esa filtración puede hacer que la evaluación parezca demasiado optimista y recomienda separar los datos antes de ajustar los pasos de preprocesamiento.
Una intersección vacía de identificadores solo detecta la reutilización exacta de un identificador. No demuestra que el conjunto de evaluación sea realmente independiente. Dos identificadores distintos pueden apuntar a copias redimensionadas de la misma fotografía. Los fotogramas de un vídeo pueden dividirse entre entrenamiento y validación. Los registros del mismo paciente, cliente o periodo futuro pueden compartir información aunque sus identificadores de fila sean distintos.
Hay otro límite entre las matemáticas y la implementación: los conjuntos de Python no conservan las posiciones de una secuencia y descartan los valores duplicados. Conserva la lista ordenada de muestras para el entrenamiento. Deriva un conjunto de identificadores estables para las comprobaciones de pertenencia.
La lección 5 añadirá índices y subíndices, lo que permitirá distinguir la identidad de un ejemplo de su posición dentro de un lote o tensor. Esa distinción es mucho más fácil de expresar cuando el dataset tiene un límite de pertenencia claro.
Comprueba lo que has entendido
Pregunta 1
Sea D = {a, b, c}. Decide si b ∈ D y si d ∉ D.
Mostrar la solución paso a paso
Inspecciona los elementos enumerados de .
- aparece entre las llaves, así que es verdadero.
- no aparece, así que es verdadero.
La pertenencia solo pregunta si el elemento pertenece al conjunto. Su posición en la lista escrita es irrelevante.
Pregunta 2
Para D = {1, 2, 3, 4, 5}, evalúa E = {x ∈ D : x es par}.
Mostrar la solución paso a paso
Comprueba cada elemento de frente a la condición « es par»:
Conserva solo los elementos que satisfacen la regla:
La condición filtra el universo declarado ; no añade otros números pares como 6.
Pregunta 3
Sean T = {a, b, c, d} y V = {d, e}. Encuentra T ∩ V, T ∪ V y |T ∪ V|.
Mostrar la solución paso a paso
La intersección contiene los elementos presentes en ambos conjuntos. Solo cumple:
La unión contiene cada elemento distinto presente en cualquiera de los conjuntos:
Por tanto, . El mismo resultado se obtiene con la siguiente ecuación:
La resta elimina el segundo recuento de .
Pregunta 4
Un dataset D = {1, 2, 3, 4} se divide en T = {1, 2}, V = {3} y E = {4}. Demuestra que los tres conjuntos forman una partición.
Mostrar la solución paso a paso
Comprueba primero la cobertura:
Ahora comprueba cada par:
La unión cubre cada elemento de y ningún elemento aparece en dos partes. Se cumplen los dos requisitos de una partición.
Pregunta 5
Una auditoría de identificadores de entrenamiento/validación informa T ∩ V = ∅. ¿Por qué eso no demuestra la ausencia de toda filtración de datos?
Mostrar la solución paso a paso
La ecuación solo demuestra que ningún elemento exacto auditado pertenece a ambos conjuntos. Si los elementos son identificadores de fila, dos filas distintas aún pueden contener copias de la misma imagen, fotogramas del mismo vídeo o registros de la misma persona.
El límite del razonamiento es:
Audita la unidad de agrupación que corresponda al riesgo de filtración—por ejemplo, identificadores de pacientes o del vídeo de origen—y añade comprobaciones de similitud cuando identificadores diferentes puedan contener contenido casi duplicado.
Pregunta 6
Depura esta comprobación de partición: return not (train & validation) and not (train & test). ¿Qué condición falta?
Mostrar la solución paso a paso
El código comprueba dos intersecciones, pero omite tanto el par validación/prueba como la cobertura del universo.
Una comprobación completa de tres partes necesita:
no_overlap = not (
(train & validation)
or (train & test)
or (validation & test)
)
covered = (train | validation | test) == all_ids
return no_overlap and coveredLa primera condición garantiza la disjunción por pares. La segunda garantiza que ningún identificador del dataset quede sin asignar. Una partición requiere ambas.