O que se entende por "ruído de Laplace"?

9

Atualmente, estou escrevendo um algoritmo para privacidade diferencial usando o mecanismo de Laplace.

Infelizmente, não tenho formação em estatística; portanto, muitos termos são desconhecidos para mim. Então agora estou tropeçando no termo: ruído de Laplace . Para tornar um diferencial de conjunto de dados privado, todos os trabalhos apenas falam sobre a adição de ruído de Laplace de acordo com a distribuição de Laplace aos valores da função.

k(X)=f(X)+Y(X)

(k é o valor privado diferencial, f o valor retornado pela função de avaliação e Y o ruído de Laplace)

Isso significa que eu criei variáveis ​​aleatórias a partir da distribuição Laplace, de acordo com essa função que tenho na wikipedia https://en.wikipedia.org/wiki/Laplace_distribution ?

Y=μb sgn(U)ln(12|U|)

UPDATE: plotei até 100 variáveis ​​aleatórias extraídas da função acima, mas isso não me dá uma distribuição de Laplace (nem mesmo perto). Mas acho que deve modelar uma distribuição de Laplace.

UPDATE2:

Essas são as definições que tenho:

(O mecanismo de Laplace). Dada qualquer função f:N|X|Rk , o mecanismo de Laplace é definido como: ML(x,f(·),ϵ)=f(x)+(Y1,...,Yk) onde Y são variáveis ​​aleatórias iid extraídas de Lap(f/ϵ)

Assim como:

Para gerar Y (X), uma escolha comum é usar uma distribuição de Laplace com média zero e parâmetro de escala Δ (f) / ε

Lotte
fonte
A segunda equação que você tem é o CDF e não o PDF. Você deseja obter uma amostra do PDF. Aqui está um código python para amostra a partir da distribuição de Laplace (biexponencial) ( docs.scipy.org/doc/numpy-1.9.3/reference/generated/... )
Luca
11
Você pode fornecer a referência exata que menciona o "ruído de Laplace"? Eu acho que eles significam adicionar rv Y a X onde Y segue a distribuição de Laplace. Como sobre sua atualização, este método faz o trabalho - você deve ter feito erro em seu código, ou é apenas o fato de que você fez única 100 retira-lo, se você tenta 5000 ou mais eu acho que iria começar a olhar mais " Laplace "...
Tim
Acho que meu enredo se parece mais com um CDF, eu o adicionei acima, assim como meu código. Aqui estão os links para as citações: 1 2
Lotte
Eu também vi o código que estou usando antes e não sei por que ele me fornece resultados como este. O gráfico mostra meu código, repetido 1000 vezes para f = 1 e eps = 1. Mas acho que meu ponto principal é se eu entendi "Ruído de Laplace" corretamente. O código que eu posso exercitar de alguma forma.
Lotte

Respostas:

14

Você está correto, adicionando ruído Laplace significa que, na sua variável você adiciona a variável que segue a distribuição Laplace . Existem várias razões pelas quais é chamado de ruído . Primeiro, pense no processamento do sinal, onde a mensagem é enviada por algum canal e, devido à natureza imperfeita do canal, o sinal recebido é barulhento, então você deve isolar o sinal do ruído. Segundo, na criptografia também falamos sobre ruído pseudo-aleatório e privacidade diferencial está relacionada à criptografia. Terceiro, em estatística e aprendizado de máquina, também podemos falar sobre ruído estatístico ; os modelos estatísticos incluem termos de ruído ou erro, etc. (há até um livro sobre nomes de previsãoYXYSinal e o barulho de Nate Silver). Então, usamos ruído como sinônimo mais preciso de aleatoriedade ambígua .

Quanto à geração aleatória, há várias maneiras de desenhar valores aleatórios após a distribuição Laplace, por exemplo:

  1. O método de transformação inversa descrito na Wikipedia:
f <- function(n) {
   u <- runif(n, -0.5, 0.5)
   sign(u)*log(1-2*abs(u))
}
  1. Se e são variáveis aleatórias independentes seguintes distribuição exponencial, em seguida, seguinte distribuição de Laplace :V Y = U - VUVY=UV
g <- function(n) { rexp(n)-rexp(n) }
  1. Se segue distribuição de Laplace, entãosegue a distribuição exponencial , portanto:| Y |Y|Y|
h <- function(n) { rexp(n)*sample(c(-1,1), n, replace = TRUE) }

Nas plotagens abaixo, você pode ver a distribuição de amostras desenhadas usando cada uma das funções que acompanham a densidade de Laplace (linha vermelha).105

insira a descrição da imagem aqui

Para simplificar os exemplos, eu uso a distribuição padrão de Laplace com scale = 1, mas você pode alterar facilmente os resultados multiplicando os resultados usando diferentes fatores de escala.

Tim
fonte
Obrigado! Isso está respondendo à minha pergunta, eu estava realmente confuso sobre o termo "ruído" e não consegui encontrar uma explicação adequada.
Lotte
Eu tracei o histograma para o meu código e parece bom :)
Lotte
2

A distribuição Laplace ou dupla exponencial cai exponencialmente à esquerda e à direita em torno de alguma média. É basicamente o exponencial espelhado para o outro lado.

  • Se você deseja a probabilidade, use a probabilidade do exponencial e adicione um abs () ao valor observado. A probabilidade de log é simplesmente o abs () dos resíduos, multiplicado pela taxa do exponencial.

  • Para provar, o mais fácil é extrair de -1,1 e multiplicar com um extra da distribuição exponencial, disponível na maioria das linguagens de programação. Como alternativa, como observado acima, você também encontrará implementações diretas do Laplace, mas isso pode exigir um pouco mais de pesquisa.

Florian Hartig
fonte