Estimar el costo de una comparación de duplicados
Código:R/duplicados-aproximados.R
estimar_costo.RdConstruye las firmas y calcula el pronóstico de candidatos sin recorrer las
cubetas ni comparar los pares. Es una operación deliberada: la medición del
reloj queda en el resultado de esta función y no es necesaria para obtener
alcance reproducible en detectar_duplicados_aproximados().
Uso
estimar_costo(
datos,
columnas = NULL,
metodo = "jw",
umbral = 0.12,
muestra = Inf,
max_pares = 50000000L,
max_resultados = 100L,
normalizar = TRUE,
perfil = NULL,
proteger_datos_personales = TRUE,
bloque = 1000L,
estrategia = "auto",
lsh_bandas = 12L,
lsh_filas = 3L,
lsh_q = 3L,
lsh_max_cubeta = 1000L,
lsh_muestra_estimacion = 400000L,
presupuesto_pares = Inf,
bloquear_por = NULL,
lotes = FALSE,
tamano_lote = 1000L,
directorio_lotes = NULL,
nucleos = getOption("lupa.nucleos", 2L)
)Argumentos
- datos
Tabla con una fila por entidad observada.
- columnas
Columnas atomicas a combinar.
NULLaplica la seleccion automatica descrita arriba; no se incluyen matrices ni listas.- metodo
Medida admitida por
stringdist::stringdistmatrix(). Por defecto,"jw".- umbral
Distancia maxima para informar un par. Por defecto
0.12.- muestra
Máximo de filas candidatas. En el camino exacto queda sujeto a
max_pares; con LSH,Infusa todas las filas.- max_pares
Máximo de pares comparados en el camino exacto. Por defecto
50000000, que permite recorrer exhaustivamente hasta 10.000 filas con el método y el bloque predeterminados; se puede reducir para limitar el tiempo. En LSH el alcance se expresa con candidatos y cubetas, por lo que este límite no se usa para recortar filas; el resultado lo marca explícitamente.- max_resultados
Maximo de pares devueltos. Por defecto
100.- normalizar
Si se recortan espacios, se pasa a minusculas y se colapsan espacios antes de calcular la distancia.
- perfil
Perfil de los mismos datos para reutilizar su clasificacion de datos personales y no volver a inferirla.
- proteger_datos_personales
Si la evidencia de columnas protegidas se reemplaza por
[valor protegido]. La supresion queda indicada en cada par.- bloque
Cantidad de filas por tesela de comparación. Por defecto
1000; controla la memoria temporal, no el número de pares comparados.- estrategia
Estrategia de comparación:
"auto"(por omisión),"teselas","muestra"o"lsh". MinHash/LSH sólo se activa automáticamente por encima del tope exhaustivo; se puede forzar con"lsh".- lsh_bandas
Número de bandas del esquema LSH. Por defecto, 12.
- lsh_filas
Número de filas de firma por banda. Por defecto, 3.
- lsh_q
Longitud de los q-gramas usados para MinHash. Por defecto, 3.
- lsh_max_cubeta
Umbral a partir del cual una cubeta se considera grande y se procesa por el mismo troceo acotado del camino exhaustivo. No se descartan pares por este umbral; el alcance informa cuántas cubetas y cuántos pares se procesaron de esta forma. Por defecto, 1000.
- lsh_muestra_estimacion
Cantidad máxima de pares de filas usados para estimar la proporción de candidatos, el tiempo del camino LSH y, si hay
bloquear_por, la pérdida de candidatos del bloqueo. La muestra es interna, reproducible y su tamaño efectivo queda enalcance. Por defecto se intentan 400.000 pares.- presupuesto_pares
Presupuesto de pares candidatos. Por defecto es
Inf; si la estimación previa lo supera, una sesión no interactiva aborta antes del recorrido y una interactiva pregunta si se continúa. También limita la comparación exacta: allí el número de pares se conoce antes de empezar.- bloquear_por
Nombre de una columna declarada por el usuario para restringir la comparación a filas con la misma clave. La clave no tiene significado incorporado en
lupa; sus tamaños, ausentes y pares que quedan fuera se registran enalcance. LosNAforman un bloque propio.- lotes
Se acepta por simetría de la firma, pero la estimación no escribe parciales ni modifica el directorio indicado.
- tamano_lote
Se acepta por simetría; no cambia el pronóstico.
- directorio_lotes
Se acepta por simetría y no se crea ni se usa al estimar.
- nucleos
Cantidad máxima de hilos que
stringdistpuede usar. Por defecto esgetOption("lupa.nucleos", 2L);NULLusa esa misma opción y un valor mayor que los núcleos disponibles se limita de forma segura. El resultado no depende de esta cantidad, pero el tiempo sí. El valor efectivo queda declarado enalcance$nucleos_usados.
Valor
Lista de clase estimacion_costo_lupa con los campos de la
estimación, alcance, disponible y razon.
Detalles
En el camino LSH, candidatos_previstos es una estimación reproducible a
partir de una muestra de firmas. tiempo_estimado_segundos es un piso de la
medida aislada y no incluye firmas, cubetas ni troceo; sus campos de reloj
tienen tiempo_determinista = FALSE. Con bloquear_por, los pares entre
bloques no entran en el pronóstico y la pérdida estructural y estimada queda
en alcance. En el camino exacto, candidatos_previstos es la cantidad de
pares que se compararán, sujeta a muestra, max_pares y bloquear_por.
La función no escribe archivos ni modifica el estado del generador de R.
Ejemplos
datos <- data.frame(
nombre = c("Ana Perez", "Ana Peres", "Luis Diaz"),
grupo = c("A", "A", "B")
)
if (requireNamespace("stringdist", quietly = TRUE)) {
costo <- estimar_costo(datos, columnas = "nombre", estrategia = "lsh")
costo$candidatos_previstos
}
#> [1] 1