Что подразумевается под «шумом Лапласа»?

9

В настоящее время я пишу алгоритм для дифференциальной конфиденциальности с использованием механизма Лапласа.

К сожалению, у меня нет опыта в статистике, поэтому многие термины мне неизвестны. Так что теперь я спотыкаюсь о термине: шум Лапласа . Чтобы сделать дифференциальный набор данных закрытым, все статьи просто говорят о добавлении шума Лапласа в соответствии с распределением Лапласа к значениям функции.

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

(k - дифференциальное частное значение, f возвращаемое значение функцией оценки и Y - шум Лапласа)

Означает ли это, что я создаю случайные переменные из распределения Лапласа в соответствии с этой функцией из википедии https://en.wikipedia.org/wiki/Laplace_distribution ?

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

ОБНОВЛЕНИЕ: Я построил до 100 случайных величин, взятых из функции выше, но это не дает мне распределение Лапласа (даже близко). Но я думаю, что это должно моделировать распределение Лапласа.

UPDATE2:

Вот те определения, которые у меня есть:

(Механизм Лапласа). Для любой функции f:N|X|Rk механизм Лапласа определяется как: ML(x,f(·),ϵ)=f(x)+(Y1,...,Yk) где Y - случайные величины, взятые из Lap(f/ϵ)

А также:

Для генерации Y (X) распространенным выбором является использование распределения Лапласа с нулевым средним и масштабным параметром Δ (f) / ε.

Lotte
источник
Второе уравнение - это CDF, а не PDF. Вы хотите попробовать из PDF. Ниже приведен пример кода Python, который можно взять из дистрибутива Лапласа (биэкспоненциальный) ( docs.scipy.org/doc/numpy-1.9.3/reference/generated/… )
Лука,
1
Можете ли вы предоставить точную ссылку, которая упоминает «шум Лапласа»? Я предполагаю, что они означают добавление rv Y к X, где Y следует распределению Лапласа. Как насчет вашего обновления, этот метод делает работу - вы должны сделать ошибку в коде, или это просто тот факт , что вы сделали только 100 черпает из него, если пытается 5000 или больше я предполагаю , что бы начать искать более " Лаплас "...
Тим
Я думаю, что мой сюжет на самом деле больше похож на CDF, я добавил его выше, а также мой код. Вот ссылки на цитаты: 1 2
Лотте
Я также видел код, который я использую раньше, и я не знаю, почему он дает мне такой результат. График показывает мой код, зацикленный 1000 раз для f = 1 и eps = 1. Но я думаю, что моя главная мысль, если я правильно понял «шум Лапласа». Код я могу тренироваться как-то.
Лотте

Ответы:

14

Вы правы, добавление шума Лапласа означает, что к вашей переменной вы добавляете переменную которая следует за распределением Лапласа . Есть много причин, почему это называется шумом . Во-первых, подумайте об обработке сигнала, когда сообщение отправляется по некоторому каналу, и из-за несовершенной природы канала принятый сигнал зашумлен, поэтому вам необходимо изолировать сигнал от шума. Во-вторых, в криптографии мы также говорим о псевдослучайном шуме, а дифференциальная конфиденциальность связана с криптографией. В-третьих, в статистике и машинном обучении мы также можем говорить о статистическом шуме , статистические модели включают в себя шум или термины ошибок и т. Д.XYСигнал и шум Нейта Сильвера). Поэтому мы используем шум как более точный синоним неоднозначности случайности .

Что касается случайной генерации, существует несколько способов, как вы можете нарисовать случайные значения после распределения Лапласа, например:

  1. Метод обратного преобразования, описанный в Википедии:
f <- function(n) {
   u <- runif(n, -0.5, 0.5)
   sign(u)*log(1-2*abs(u))
}
  1. Если и - независимые случайные величины, следующие за экспоненциальным распределением, то следует за распределением Лапласа :UVY=UV
g <- function(n) { rexp(n)-rexp(n) }
  1. Если следует распределению Лапласа, тоследует экспоненциальному распределению , так:Y|Y|
h <- function(n) { rexp(n)*sample(c(-1,1), n, replace = TRUE) }

На графиках ниже вы можете увидеть распределение выборок, нарисованных с использованием каждой из функций с сопровождающей плотностью Лапласа (красная линия).105

введите описание изображения здесь

Чтобы упростить примеры, я использую стандартное распределение Лапласа со шкалой = 1, но вы можете легко изменить результаты, умножив результаты, используя другой коэффициент масштабирования.

Тим
источник
Спасибо! Это отвечает на мой вопрос, я просто был смущен термином «шум» и не смог найти правильного объяснения.
Лотте
Я построил гистограмму для своего кода, и она выглядит хорошо :)
Lotte
2

Распределение Лапласа или двойное экспоненциальное распределение экспоненциально падает влево и вправо вокруг некоторого среднего значения. Это в основном экспонента, отраженная на другую сторону.

  • Если вы хотите получить вероятность, используйте вероятность экспоненциального и добавьте abs () к наблюдаемому значению. Логарифмическая вероятность - это просто abs () от остатков, умноженное на коэффициент экспоненты.

  • Для примера, проще всего взять от -1,1 и умножить на ничью из экспоненциального распределения, которое доступно в большинстве языков программирования. В качестве альтернативы, как отмечено выше, вы также найдете прямые реализации Laplace, но это может потребовать немного большего поиска.

Флориан Хартиг
источник