Qu'entend-on par «bruit de Laplace»?

9

J'écris actuellement un algorithme de confidentialité différentielle en utilisant le mécanisme de Laplace.

Malheureusement, je n'ai aucune expérience en statistique, donc beaucoup de termes me sont inconnus. Alors maintenant, je trébuche sur le terme: bruit de Laplace . Pour rendre un différentiel de jeu de données privé, tous les articles parlent simplement d'ajouter du bruit de Laplace selon la distribution de Laplace aux valeurs de la fonction.

k(X)=F(X)+Oui(X)

(k est la valeur privée différentielle, f la valeur renvoyée par la fonction d'évaluation et Y le bruit de Laplace)

Est-ce à dire que je crée des variables aléatoires à partir de la distribution de Laplace selon cette fonction que j'ai de wikipedia https://en.wikipedia.org/wiki/Laplace_distribution ?

Oui=μ-b sgn(U)ln(1-2|U|)

MISE À JOUR: J'ai tracé jusqu'à 100 variables aléatoires tirées de la fonction ci-dessus, mais cela ne me donne pas une distribution de Laplace (même pas proche). Mais je pense que cela devrait modéliser une distribution Laplace.

MISE À JOUR2:

Ce sont les définitions que j'ai:

(Le mécanisme de Laplace). Étant donné n'importe quelle fonction F:N|X|Rk , le mécanisme de Laplace est défini comme: ML(X,F(·),ϵ)=F(X)+(Oui1,...,Ouik) où Y sont iid des variables aléatoires tirées de Lunep(F/ϵ)

Aussi bien que:

Pour générer Y (X), un choix courant consiste à utiliser une distribution de Laplace avec une moyenne nulle et un paramètre d'échelle Δ (f) / ε

Lotte
la source
La deuxième équation que vous avez est le CDF plutôt que le PDF. Vous souhaitez échantillonner à partir du PDF. Voici du code python à échantillonner de la distribution Laplace (biexponentielle) ( docs.scipy.org/doc/numpy-1.9.3/reference/generated/… )
Luca
1
Pouvez-vous fournir la référence exacte qui mentionne le "bruit de Laplace"? Je suppose que cela signifie ajouter rv Y à X où Y suit la distribution de Laplace. Comme au sujet de votre mise à jour, cette méthode ne travail - vous devez avoir fait erreur dans votre code, ou il est tout simplement le fait que vous avez fait que 100 tire, si vous tente 5000 ou plus je pense que ce serait commencer à chercher plus " Laplace "...
Tim
Je pense que mon intrigue ressemble plus à un CDF, je l'ai ajouté ci-dessus, ainsi que mon code. Voici les liens vers les citations: 1 2
Lotte
J'ai également vu le code que j'utilise auparavant et je ne sais pas pourquoi il me donne un résultat comme celui-ci. L'intrigue montre mon code, bouclé 1000 fois pour f = 1 et eps = 1. Mais je pense que mon point principal est, si j'ai bien compris le "bruit de Laplace". Le code que je peux utiliser d'une manière ou d'une autre.
Lotte

Réponses:

14

Vous avez raison, l'ajout de bruit de Laplace signifie qu'à votre variable vous ajoutez la variable qui suit la distribution de Laplace . Il y a plusieurs raisons pour lesquelles il est appelé bruit . Tout d'abord, pensez au traitement du signal, où le message est envoyé sur un canal et en raison de la nature imparfaite du canal, le signal reçu est bruyant, vous devez donc isoler le signal du bruit. Deuxièmement, en cryptographie, nous parlons également de bruit pseudo-aléatoire et la confidentialité différentielle est liée à la cryptographie. Troisièmement, dans les statistiques et l'apprentissage automatique, nous pouvons également parler de bruit statistique , les modèles statistiques incluent le bruit ou les termes d'erreur, etc. (il y a même un livre sur les noms de prévisionXOuiSignal et le bruit de Nate Silver). Nous utilisons donc le bruit comme synonyme plus précis de l' aléatoire ambigu .

En ce qui concerne la génération aléatoire, il existe plusieurs façons de dessiner des valeurs aléatoires après la distribution de Laplace, par exemple:

  1. La méthode de transformation inverse décrite sur Wikipedia:
f <- function(n) {
   u <- runif(n, -0.5, 0.5)
   sign(u)*log(1-2*abs(u))
}
  1. Si et sont des variables aléatoires indépendantes suivant la distribution exponentielle, alors suit la distribution de Laplace :UVOui=U-V
g <- function(n) { rexp(n)-rexp(n) }
  1. Si suit la distribution de Laplace, alorssuit la distribution exponentielle , donc:Oui|Oui|
h <- function(n) { rexp(n)*sample(c(-1,1), n, replace = TRUE) }

Sur les graphiques ci-dessous, vous pouvez voir la distribution de échantillons tirés en utilisant chacune des fonctions avec la densité de Laplace qui l'accompagne (ligne rouge).dix5

entrez la description de l'image ici

Pour simplifier les exemples, j'utilise la distribution standard de Laplace avec scale = 1, mais vous pouvez facilement changer les résultats en multipliant les résultats en utilisant différents facteurs d'échelle.

Tim
la source
Merci! Cela répond à ma question, j'étais juste vraiment confus au sujet du terme "bruit" et je n'ai pas pu trouver une explication appropriée.
Lotte
J'ai tracé l'histogramme de mon code et il a l'air bien :)
Lotte
2

La distribution exponentielle de Laplace ou double chute exponentiellement vers la gauche et la droite autour d'une moyenne. C'est essentiellement l'exponentielle reflétée de l'autre côté.

  • Si vous voulez la vraisemblance, utilisez la vraisemblance de l'exponentielle et ajoutez un abs () à la valeur observée. La probabilité logarithmique est simplement l'abs () des résidus, multiplié par le taux de l'exponentielle.

  • Pour échantillonner, le plus simple est de tirer de -1,1 et de multiplier par un tirage de la distribution exponentielle, disponible dans la plupart des langages de programmation. Alternativement, comme indiqué ci-dessus, vous trouverez également des implémentations directes de Laplace, mais cela peut nécessiter un peu plus de recherche.

Florian Hartig
la source