Crear datos de "demostración" a partir de datos reales: disfrazarse sin desfigurar

9

(No tengo una idea real de con qué etiquetar esto porque no soy estadístico y no sé en qué campo se encuentra esto. Siéntase libre de agregar etiquetas más adecuadas).

Trabajo para una empresa que produce software de análisis de datos, y necesitamos un conjunto de datos decente para probar y demostrar nuestro último producto. No podemos simplemente llenar la base de datos con la salida de un generador de números aleatorios porque las salidas del programa se volverían absurdas. Una de las formas más simples de obtener dichos datos es de un cliente; Tenemos una gran cantidad de datos de una prueba que ejecutamos. Ahora, obviamente, no podemos publicar los datos reales de un cliente, por lo que debemos modificarlos un poco, pero aún necesitamos que se comporten como datos reales.

El objetivo aquí es tomar su conjunto de datos y aplicarle un "fuzz" para que no pueda reconocerse específicamente como suyo. Mi memoria de la teoría estadística es en sí un poco confusa, así que me gustaría explicar esto por ustedes:

Esencialmente, los datos que tenemos (del cliente) son en sí mismos una muestra de todos los datos que existen (en el país o en el mundo). Lo que me gustaría saber es qué tipo de operaciones se pueden aplicar para hacer que la muestra ya no sea fuertemente representativa de la población de muestra del cliente, mientras que la mantenga más o menos representativa de la población mundial.

Como referencia, hasta donde sabemos, los datos que tenemos generalmente siguen distribuciones aproximadas normales (gaussianas).

El conjunto de datos original no está ampliamente disponible, pero en teoría podría reconocerse a partir de algunas características específicas de la región (no sabemos cuáles son esas características, y es dudoso que alguien lo haga a un nivel suficiente, pero sabemos que existen variaciones de un lugar a otro). poner). De todos modos, estoy más interesado en la teoría de esto que en la práctica: quiero saber si una operación hace que sea imposible (o al menos difícil) identificar el conjunto de datos de origen mediante el parámetro X, si alguien tiene o no puede funcionar parámetro X en primer lugar.

El enfoque que se me ocurrió es separar las lecturas en varios tipos (sin revelar mucho, digamos que un grupo podría ser "largo" o "tiempo dedicado a hacer X"). Para cada uno de ellos, calcule Desviación Estándar. Luego, a cada valor, agregue un valor aleatorio entre los valores positivo y negativo de (n * stddev) donde n es alguna fracción que puedo usar para ajustar el resultado hasta que los datos estén lo suficientemente "confusos". No quería simplemente aplicar un rango estático (por ejemplo, aleatorio entre 90% y 110% del valor original) porque algunos valores varían mucho más o menos que otros; en algunas mediciones, apenas se nota un 10% por encima de la media , pero en otros te hace un valor atípico serio.

¿Es esto suficiente para enmascarar la fuente de los datos originales? Si no es así, ¿por qué medidas estadísticas los datos seguirían siendo identificables y cómo los enmascararía mientras mantengo los datos resultantes vagamente realistas?

anaximandro
fuente
3
En un comentario reciente a una pregunta relacionada , proporcioné enlaces a algunos documentos de encuesta sobre este tema que están disponibles en línea. Los enlaces se centran en ocultar datos del censo, pero muchos de ellos abordan las cuestiones de ocultar datos en general.
whuber
Puede ser prudente señalar que de ninguna manera soy un estadístico o incluso un matemático. Soy programador de profesión, por lo que puedo manejar explicaciones algorítmicas, pero el álgebra extravagante convierte mi cerebro en masilla. Además, esto no necesita ser particularmente riguroso; Las demostraciones en las que se utilizarán estos datos son generalmente presentaciones: diez o veinte minutos de uno de nuestros representantes hurgando en el software. Si a alguien se le permite probar el software durante un período prolongado, comenzarán poniendo sus propios datos en él; no podrán realmente examinar los datos de demostración.
anaximandro
2
Sugeriría contratar a un estadístico que haya hecho esto antes. No hagas de este tu primer rodeo. No quieres estar enganchado por hacer un trabajo terrible en esto, ¿verdad? Ver arstechnica.com/tech-policy/2009/09/…
David J.

Respuestas:

2

Hay algunas sugerencias:

  1. Conviértalo a una forma adimensional. Si va de 0 a 1 y no tiene unidades como furlongs por quincena o toneladas de carbón, entonces es más difícil de reconocer.
  2. Agregue un pequeño número aleatorio. Cuando enredas un gaussiano con un gaussiano, simplemente obtienes otro gaussiano. No cambia la esencia de la misma, pero moverse de valores exactos mantiene a alguien buscando números en Google para tratar de descubrir qué es.
  3. Me gusta la idea de rotarlo. Podría tomar un retraso de cierto número de pasos de tiempo para crear un conjunto de datos 2d a partir del conjunto de datos 1d. Luego puede usar PCA o SVD (después de centrar y escalar) para determinar una rotación. Una vez que los datos se rotan adecuadamente, ha cambiado la variación y ha confundido la información en sí misma. Puede informar uno de los ejes de coordenadas rotados como "datos de muestra".
  4. Puede mezclarlo con datos fuertemente formados de alguna otra fuente. Entonces, si sus datos de muestra son datos del mercado de valores, puede agregar perturbaciones según el clima o las variaciones de la media del tono de su banda sonora favorita de los Beatles. Ya sea que las personas puedan o no tener sentido de Nasdaq, tendrán problemas para darle sentido a Nasdaq + Beatles.
Estudiante
fuente
1

Sugeriría un enfoque de dos pasos. El primer paso sería el muestreo con reemplazo, similar al método utilizado en bootstrapping. En R, podrías usar

 newdata = sample(olddata, replace = TRUE)

Ahora tiene un conjunto de datos diferente con las mismas propiedades que el original. El segundo paso sería agregar una variable aleatoria centrada alrededor de cero:

 newdata = newdata + runif(1, min = -10, max = 10)

Cualquier variable aleatoria que sea simétrica alrededor de cero funcionará y los límites de la distribución no son importantes.

Al final, debe tener un conjunto de datos completamente diferente con las mismas propiedades que el conjunto de datos anterior.

wcampbell
fuente
1
¿Qué quieres decir con "con las mismas propiedades"? Por lo menos, las variaciones y covarianzas serán diferentes. Si está interesado en las relaciones entre variables, eso es realmente importante.
Charlie