Privacidad

Anonimización: ¿Debo Compartir Mis Datos?

Sep 2021
3 min de lectura
Anonimización: ¿Debo Compartir Mis Datos?

Imagina que trabajas en el Departamento de Cardiología del Hospital Central de Wakanda y quieres construir un modelo de predicción basado en datos clínicos de tus pacientes, en colaboración con el departamento equivalente del Hospital Gregorio Marañón en España.

Para colaborar con ellos, necesitas compartir tu conjunto de datos de pacientes, pero contiene información sensible. Por lo tanto, debes anonimizar los datos manteniendo la utilidad de los datos originales, los patrones subyacentes y las distribuciones de probabilidad. Al buscar técnicas de anonimización en Google, te das cuenta de que la mejor solución es generar un conjunto de datos sintéticos basado en tus datos originales, que para mayor comprensión en este ejemplo, es el Stroke Prediction Dataset disponible en Kaggle.

Así que tienes las siguientes variables de los 5110 pacientes en tu conjunto de datos:

  • Género: 59% Mujeres, 41% Hombres.
  • Edad: desde bebés con meses de nacimiento hasta pacientes de 82 años.
  • Hipertensión: 1 si el paciente es hipertenso, 0 en caso contrario.
  • Enfermedad Cardíaca: 1 si el paciente tiene enfermedad cardíaca, 0 en caso contrario.
  • Alguna Vez Casado: ¿El paciente ha estado casado alguna vez? 66% es Verdadero.
  • Tipo de Trabajo: 5 opciones: Niños, Nunca Trabajó, Autónomo, Trabajo Gubernamental, Privado.
  • Tipo de Residencia: Urbano 51%, Rural 49%.
  • Nivel promedio de glucosa: Nivel promedio de glucosa en sangre.
  • IMC: Índice de Masa Corporal.
  • Estado de Fumador: 4 opciones: Desconocido, Ex Fumador, Fuma, Nunca Fumó.
  • Accidente Cerebrovascular: Evento de accidente cerebrovascular, 1 si sí, 0 en caso contrario.

Para cada uno de los pacientes tienes un número de identificación único. Los datos se ven así:

original_data

Dado que el 4% de los registros de IMC son valores faltantes, los imputaste basándote en los vecinos más cercanos usando la clase KNNImputer de scikit learn.

Después de eso, dividiste aleatoriamente el conjunto de datos original en dos conjuntos de datos:

  1. Conjunto de datos de entrenamiento (85% de los registros originales).
  2. Conjunto de datos de prueba (15% de los registros originales).

Para analizar la calidad de los datos sintéticos, planeas construir un modelo de machine learning que clasifique al paciente en dos categorías: aquellos con alta probabilidad de tener un accidente cerebrovascular y aquellos que no. Para lograr esto, entrenarás un algoritmo Random Forest (sin ajuste fino, sin validación cruzada, etc.) en el conjunto de datos original (Train) y el nuevo conjunto de datos sintético, haciendo predicciones con ambos modelos resultantes en el mismo conjunto de datos Test y comparando los resultados.

Siguiendo este plan, usas nuestro motor de generación de datos sintéticos llamado Sinteza:

  1. Ingresas el conjunto de datos Train.
  2. Especificas la clave primaria: Id.

Cuando el proceso se completa, generas el mismo número de registros sintéticos: 4343.

synthetic data

Esto te permite comparar el conjunto de datos Train original y el conjunto de datos sintético a través de las métricas que proporcionamos.

Métricas

A continuación puedes encontrar los resultados de algunas de las métricas que calculamos en nuestro informe de calidad. Muestran qué tan buenos son los datos sintéticos en comparación con los originales.

Distancia al Registro Más Cercano Conjunto de Datos Original: 0.25: 2.186687 | 0.5: 2.725821 | 0.75: 3.476650 | Promedio: 2.796386

Conjunto de Datos Sintético: 0.25: 2.156844 | 0.5: 2.753047 | 0.75: 3.451898 | Promedio: 2.787263

Ratio de Distancia al Vecino Más Cercano Conjunto de Datos Original: 0.25: 0.752828 | 0.50: 0.863203 | 0.75: 0.938945

Conjunto de Datos Sintético: 0.25: 0.753449 | 0.50: 0.866232 | 0.75: 0.940377

Porcentaje de Coincidencias Idénticas - Datos Originales vs Sintéticos (Comparamos con todos los registros originales disponibles antes de la división Train/Test)

IMS: 0.0%. 0 de 5110 tienen coincidencias idénticas dentro de los datos originales.

Matriz de Correlación (Arriba: Original - Abajo: Sintético)

real corr synthetic corr

Gráficos

dens hists bars

Para concluir, creas dos modelos, entrenando el mismo algoritmo Random Forest con los mismos hiperparámetros en ambos conjuntos de datos:

  1. El conjunto de datos Train original.
  2. El conjunto de datos sintético (con el mismo número de filas que el original).

Crear datos sintéticos usando SINTEZA es la mejor manera de anonimizar tu conjunto de datos.

Para mejorar el rendimiento de los modelos y porque eso podría ser un paso natural antes del entrenamiento si estás trabajando con el conjunto de datos original, previamente sobremuestraste la clase minoritaria de la variable objetivo (Stroke) con un algoritmo SMOTE. Lo haces en ambos conjuntos de datos para tener el mismo pipeline de transformaciones de datos que conducen a resultados más confiables en términos de comparación.

Luego haces predicciones en el conjunto de datos Test usando ambos modelos. Los resultados son los siguientes:

  • Precisión del modelo entrenado con datos originales: 0.8657
  • Precisión del modelo entrenado con datos sintéticos: 0.8579
  • Puntuación F1 del modelo entrenado con datos originales: 0.1889
  • Puntuación F1 del modelo entrenado con datos sintéticos: 0.1550
  • Puntuación ROC AUC del modelo entrenado con datos originales: 0.5486
  • Puntuación ROC AUC del modelo entrenado con datos sintéticos: 0.5339

Conclusiones

Como puedes ver, los datos sintéticos generados mantienen los patrones e información estadística del conjunto de datos original, pero al ser sintéticos, aseguran la privacidad del paciente. Crear datos sintéticos usando SINTEZA es la mejor manera de anonimizar tu conjunto de datos. Ahora puedes compartir el conjunto de datos sintético con el Departamento de Cardiología del Hospital Gregorio Marañón. ¡Bien hecho!

#anonymization
Anonimización: ¿Debo Compartir Mis Datos? | Dedomena AI