ATENCIÓN, ESTA PÁGINA ES PARTE DE UN TRABAJO EN CURSO, Y POR TANTO SUS CONTENIDOS SE ENCUENTRAN SUJETOS A REVISIONES Y CAMBIOS SIN PREVIO AVISO.

Esta página describe el proceso de anonimización definido para los datasets del Núcleo Común que contengan información personal a proteger.

1. ¿Qué es la anonimización?

Contrariamente a la creencia popular, anonimizar un conjunto de datos no consiste sólo en evitar la identificación eliminando los denominados identificadores directos, es decir, aquellos datos que normalmente identifican unívocamente a un individuo, como puedan ser el DNI, o el nombre y apellidos.

Es también necesario (y mucho más complejo), tratar de evitar la reidentificación, es decir, poder identificar los datos de un individuo dentro del dataset partiendo de un subconjunto de datos conocidos, que en este caso se denominan identificadores indirectos y que pueden ser sencillos de obtener por parte de un potencial “atacante”. Ejemplos clásicos de identificadores indirectos son la fecha de nacimiento, el género, el código postal, el nivel de estudios , la profesión, etc.

El riesgo es que conocer un subconjunto de identificadores indirectos nos permita reindentificar al individuo al no haber otros individuos dentro del dataset con los mismos valores; por ejemplo: si en un dataset al que se le hayan quitado los identificadores directos, solo hay una persona con fecha de nacimiento “A”, género “B”, código postal “C”, nivel de estudios “D” y sector profesional “E”, esa persona quedará reidentificada y por tanto sus demás datos expuestos al potencial atacante.

2. Procesos de anonimizacion

Para evitar la reindentificación se pueden utilizar diferentes técnicas. A continuación se explican las que se han utilizan en el “Núcleo Común”. En la definición de cada dataset se especifica si está o no anonimizado.

2.1 Permutación de bloques de variables en grupos

Este proceso de anonimización consiste en agrupar los registros en base a grupos y las variables en base a bloques de coherencia, y permutar, dentro de cada grupo de registros, los bloques de variables.

2.1.1 Proceso

Paso 1: Separar el dataset en grupos

  1. Elegimos un subconjunto de variables pivote, que serán las variables que determinarán la formación de los grupos.

  2. Separamos el dataset en tantos grupos como valores combinados distintos tengan las variables pivote

El proceso de anonimización garantiza que se conservará la relación entre las variables pivote y todas las demás, por lo que es importante seleccionar variables que se usen habitualmente como criterio de agregación en los análisis del dataset.

Paso 2: Permutar aleatoriamente los bloques de variables entre los registros de cada grupo

  1. Asignamos las variables restantes (no pivote) a bloques de coherencia, de tal forma que las variables cuya relación queramos preservar estén en el mismo bloque de coherencia.

  2. Permutamos aleatoriamente los bloques de coherencia de los registros del grupo.

Cada bloque de coherencia debe contener variables cuyos valores están especialmente relacionados o son dependientes entre sí, y garantiza que esos valores estarán siempre juntos tras el proceso de permutación, es decir, conservarán su coherencia interna.

Paso 3: Detectar y desidentificar grupos pequeños

  1. De los grupos generados en el Paso 1, identificamos aquellos con un nº de registros menor a un valor umbral “X”.

  2. En esos grupos, se eliminan los valores de las variables pivote que sean necesarios para “disolverlos” en un grupo mayor y menos identificable.

 

2.1.2 Diferencial de privacidad

El diferencial de privacidad es la especificación y cuantificación de la información que se ha perdido respecto al dataset original como efecto colateral del proceso de anonimización.

En el caso del proceso de anonimización que nos ocupa, la pérdida de información viene de los siguientes dos efectos:

2.1.2.1 Pérdida de información relacional

Al permutar los registros se pierde una parte de la información relacional, esto es, datos que antes estaban asociados entre sí por pertenecer al mismo individuo, pasan a estar disociados. Es esencial que el reutilizador entienda la información relacional que se pierde, y la información relacional que se preserva. Esto viene expresado por las dos siguientes afirmaciones:

Se mantienen las siguientes relaciones:

  • La relación entre las variables pivote y todas las demás variables del dataset

  • La relación entre las variables que comparten un mismo bloque de coherencia

Se pierden las siguientes relaciones:

  • La relación entre variables no pivote que NO comparten un mismo bloque de coherencia

2.1.2.2 Posible pérdida de valores en las variables pivote

Se eliminarán valores de las variables pivote que den lugar a grupos pequeños, lo que puede acarrear una pérdida de datos en estas variables (es decir, que aparezcan vacías para determinados registros)

2.1.3 Ejemplo

Imaginemos el siguiente dataset de partida, que contiene información sobre estudiantes matriculados en un determinado año académico y en una determinada Universidad. Para poder ilustrar mejor los efectos de la anonimización, los valores que corresponden al mismo individuo han sido coloreados del mismo color:

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

A

A

A

HOMBRE

36

24

24

A

A

B

MUJER

48

48

48

A

A

C

HOMBRE

16

0

0

A

A

B

HOMBRE

60

36

36

A

A

A

MUJER

16

0

0

A

B

C

MUJER

24

18

12

B

C

C

MUJER

36

36

36

B

C

B

MUJER

12

12

12

En este ejemplo, sólo con conocer - por ejemplo - los identificadores indirectos “año de nacimiento” y “género” podríamos reidentificar a bastantes individuos: si conocemos a un determinado estudiante (hombre) de la Titulación A de esa Universidad que nació en el año C, lo puedo identificar unívocamente en el dataset, ya que no existe otro registro con esos mismo datos (tercer registro, en negrita y cursiva):

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

A

A

A

HOMBRE

36

24

24

A

A

B

MUJER

48

48

48

A

A

C

HOMBRE

16

0

0

A

A

B

HOMBRE

60

36

36

A

A

A

MUJER

16

0

0

A

B

C

MUJER

24

18

12

B

C

C

MUJER

36

36

36

B

C

B

MUJER

12

12

12

la reindentificación nos ha permitido obtener información que no teníamos: que se matriculó de 16 créditos y no se presentó a ninguno. Esto ejemplifica lo que queremos evitar mediante la anonimización.

 

Paso 1: Separar el dataset en grupos

El primer paso para anonimizar este dataset es separarlo en grupos. Para ello debemos elegir un subconjunto de variables “pivote” cuyos valores serán los que definirán la cantidad y composición de esos grupos. Es buena práctica que las variables pivote coincidan con variables que se suelan usar como criterios de agrupación a la hora de analizar los datos del dataset que se esté anonimizando. Para el ejemplo, elegiremos las variables “TITULACIÓN” y “CENTRO”.

Esto da lugar tres grupos, a saber:

GRUPO

TITULACIÓN

CENTRO

Nº DE REGISTROS

GRUPO

TITULACIÓN

CENTRO

Nº DE REGISTROS

1

A

A

5

2

A

B

1

3

B

C

2

El grupo 1 se compone de los 5 registros con Titulación “A” y Centro “A”:

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

A

A

A

HOMBRE

36

24

24

A

A

B

MUJER

48

48

48

A

A

C

HOMBRE

16

0

0

A

A

B

HOMBRE

60

36

36

A

A

A

MUJER

16

0

0

El grupo 2 se compone del único registro con Titulación “A” y Centro “B”:

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

A

B

C

MUJER

24

18

12

El grupo 3 se compone los dos registros con Titulación “B” y Centro “C”:

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

B

C

C

MUJER

36

36

36

B

C

B

MUJER

12

12

12

 

Paso 2: Permutar aleatoriamente los bloques de variables entre los registros de cada grupo

El siguiente paso es asignar las variables restantes (las que no forman parte del “pivote”) a bloques de coherencia. Cada bloque de coherencia debe contener variables cuyos valores están especialmente relacionados o son dependientes entre sí, y garantiza que esos valores estarán siempre juntos tras el proceso de permutación, es decir, conservarán su coherencia interna. Recordemos que tras el proceso de permutación sólo se garantiza que se conservará la relación entre las variables pivote y todas las demás, y entre las variables que compartan bloque de coherencia.

Para este caso elegimos tres bloques de coherencia, compuestos por las siguientes variables:

  • Bloque 1:

    • Variable “Año Nacimiento”

  • Bloque 2:

    • Variable “Género”

  • Bloque 3:

    • Variable “Créditos Matriculados”

    • Variable “Créditos Presentados”

    • Créditos “Créditos Superados”

Esto quiere decir que, en el proceso de permutación, las tres variables relacionadas con los créditos se permutarán juntas, conservando su coherencia interna. Las variables “Año Nacimiento” y “Género”, por el contrario, sólo conservarán la coherencia con las variables “pivote” (“Estudio” y “Centro”).

Procedamos a la permutación aleatoria de los bloques de coherencia entre los registros de cada grupo:

 

VARIABLES PIVOTE

BLOQUE 1

BLOQUE 2

BLOQUE 3

 

VARIABLES PIVOTE

BLOQUE 1

BLOQUE 2

BLOQUE 3

GRUPO

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

1

A

A

B

MUJER

16

0

0

1

A

A

A

HOMBRE

16

0

0

1

A

A

B

MUJER

36

24

24

1

A

A

C

HOMBRE

48

48

48

1

A

A

A

HOMBRE

60

36

36

2

A

B

C

MUJER

24

18

12

3

B

C

B

MUJER

12

12

12

3

B

C

C

MUJER

36

36

36

Tras este paso, es importante darse cuenta de que ya no se puede afirmar que los datos de cada registro (fila) pertenezcan al mismo individuo.

 

Paso 3: Detectar y desidentificar grupos pequeños

El último paso consiste en detectar y desidentificar grupos pequeños, ya que normalmente la probabilidad de reidentificación por inferencia estadística es inversamente proporcional al tamaño del grupo (en este ejemplo tenemos un caso extremo de grupo de tamaño 1: bastaría con saber la titulación y el centro del estudiante del grupo 2 para reindentificarlo por completo).

Para este ejemplo identificaremos y suprimiremos los grupos de menos de 4 registros. Esto nos lleva a eliminar ( ) todos los valores de las variables pivote para los grupos 2 y 3 (que son de tamaño 1 y 2, respectivamente), “disolviéndose” ambos grupos pequeños en otro más grande y sin identificación de titulación/centro, quedando el dataset final anonimizado así:

 

VARIABLES PIVOTE

BLOQUE 1

BLOQUE 2

BLOQUE 3

 

VARIABLES PIVOTE

BLOQUE 1

BLOQUE 2

BLOQUE 3

GRUPO

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

1

A

A

B

MUJER

16

0

0

1

A

A

A

HOMBRE

16

0

0

1

A

A

B

MUJER

36

24

24

1

A

A

C

HOMBRE

48

48

48

1

A

A

A

HOMBRE

60

36

36

2

C

MUJER

24

18

12

3

B

MUJER

12

12

12

3

C

MUJER

36

36

36

 

Diferencial de privacidad

El diferencial de privacidad - esto es, la cuantificación de la información que hemos perdido como efecto colateral del proceso de anonimización - puede ser representado con la siguiente tabla, que especifica la pérdida de información de cada campo así como la conservación o pérdida de la relación entre variables:

 

PÉRDIDA DE INFORMACIÓN

VARIABLES PIVOTE

BLOQUE 1

BLOQUE 2

BLOQUE 3

TITULACIÓN

CENTRO

AÑO NACIMIENTO

GÉNERO

CRÉDITOS MATRICULADOS

CRÉDITOS PRESENTADOS

CRÉDITOS SUPERADOS

 

VARIABLES PIVOTE

TITULACIÓN

37,5%

CENTRO

37,5%

BLOQUE 1

AÑO NACIMIENTO

0%

BLOQUE 2

GÉNERO

0%

 

 

BLOQUE 3

CRÉDITOS MATRICULADOS

0%

CRÉDITOS PRESENTADOS

0%

CRÉDITOS SUPERADOS

0%

La tabla de diferencial de privacidad nos indica, por ejemplo, las siguientes cosas:

  • El dataset anonimizado final nos permitirá realizar cualquier cálculo (recuentos, medias, máximos, mínimos, etc.) sobre cualquier variable usando como criterio de agrupación la Titulación, el Centro, o ambos.

  • El dataset anonimizado nos permitirá calcular, por ejemplo, la tasa de éxito (créditos superados respecto a créditos matriculados), al haberse conservado la relación entre ambas variables (puesto que ambas pertenecen al mismo bloque de coherencia, lo que se denota con un en la tabla)

  • El dataset anonimizado NO nos permitirá calcular, por ejemplo, la media de créditos matriculados por Género, al NO haberse conservado la relación entre las variables implicadas (“género” y “créditos matriculados” pertenecen a distintos bloques de coherencia, lo que se denota con un en la tabla)

  • Las variables pivote (“Titulación” y “Centro”) han perdido el 37,5% de sus valores (NOTA: en los datasets reales esta pérdida suele ser marginal)

En resumen: los dos datos fundamentales que el reutilizador debe conocer para interpretar correctamente un dataset anonimizado son:

  1. ¿Cuales son las variables “pivote”?

  2. ¿Cuáles son los bloques de coherencia?

Estos dos datos se especifican en el apartado 4 (Anonimización) en la definición de cada dataset.

Es esencial que el reutilizador conozca y entienda las implicaciones de la anonimización en cada dataset anonimizado, pues es determinante para establecer la viabilidad y corrección del uso que quiera darle al mismo.