Рубрики
Без рубрики

Простая дифференциальная конфиденциальность

Фотография на обложке Франки Чамаки на Unsplash Извините, что мы снова кодируем? Дифференциал p … Tagged с дифференциальной обработкой, Python.

Простой путь (серия 2 частей)

Фотография на обложке Франки Чамаки на Unsplash

Извините, что мы снова кодируем?

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

Механизм случайного ответа

Хорошо, давайте перейдем к деталям того, как мы собираемся изменить эти данные. Мы хотим начать просто, поэтому мы кодируем механизм случайного ответа. Это самый простой механизм для дифференциальной конфиденциальности. Он переворачивает монету, если это головы, то он сохраняет то же значение. Если это хвосты, он переворачивает его снова, и если это головы, он возвращает истину, и если хвосты, то он возвращает ложь. Теперь, опять же, как я уже говорил, это очень простой алгоритм, так что он работает только с нулями, а также истинными и ложными.

Кодирование механизма случайного отклика

Наш первый шаг – получить набор данных для нашего алгоритма. Если вы собираетесь использовать реальные данные, вам нужно преобразовать их в массив. Вы также можете использовать этот пример данных для проверки, работает ли ваш алгоритм:

Вы также можете запустить цикл, который генерирует случайные значения и подталкивает их к массиву.

Теперь, когда у нас есть наши данные, давайте начнем с создания функции, называемой RAND_RESPONSE и используем ее как то, что мы называем приватизировать наши данные. Мы создаем его с одним параметром, данные , для данных, которые мы создали ранее.

Теперь мы называем петлю, чтобы пройти через массив:

for a in data:

Затем мы устанавливаем переменную, B, в качестве случайного числа и используем операторы, чтобы сказать, является ли она 0 или 1. Нам понадобится Numpy для этого, поэтому установите его через PIP, если вы еще этого не сделали:

pip install numpy

и теперь импортируйте его в наш код:

from numpy import random

Мы импортировали конкретный файл, называемый случайным для генерации случайных чисел.

Теперь давайте создадим номер:

b = random.randint(2);

Это генерирует случайное целое число, либо 0, либо 1.

Далее мы поместили операторы IF, чтобы найти число и соответственно изменить значение:

if b == 0:        
   a[i] = 0
if b == 1:        
   b1 = random.randint(2)    

   if b1 == 0:            
      a[i] = 0  

   if b1 == 1:            
      a[i] = 1

А теперь мы закончили! У вас должно быть что -то вроде этого:

Когда вы запускаете RAND_RESPONSE (DATA), а затем печатаете данные, вы должны увидеть, что данные немного изменились. Теперь это не очень частное, но это первый шаг. Теперь, когда вы знаете, как дифференциальная конфиденциальность, попробуйте другие механизмы, такие как экспоненциальный механизм и механизм Лапласа. Если вы хотите использовать эти алгоритмы, вы можете использовать мой пакет Python Diffpriv.

Quantalabs/diffpriv

Дифференциальный пакет конфиденциальности, посвященный выполнению одной вещи: позволяя дифференциальной конфиденциальности быть легкой.

Простой путь (серия 2 частей)

Оригинал: “https://dev.to/quantalabs/simple-differential-privacy-3phh”