Depersonalization algorithms for course project 2025
Project description
Общее описание
Проект состоит из следующих элементов:
- docs - файлы с документацией
- static - статические файлы
- tests - тесты к классам, реализующм алгоритмы обезличивания
- utility - модули с функциями, использующимися несколькими алгоритмами обезличивания
- класс Depersonalizator и классы с алгоритмами обезличивания расположениы в корневой директории
- классы с алгоритмами обезличивания
Методы оценки качества обезличивания
Методы оценки рисков деобезличивания
- оценка максимального k, при котором выполняется k-анонимность
- оценка максимального l, при котором выполняется l-разнообразие
- оценка минимального t, при котором выполняется t-близость
- adversarial knowledge gain, описанный в пункте 4.4 статьи https://desfontain.es/PDFs/PhD/TheCostOfPrivacyDestructionOfDataMiningUtilityInAnonymizedDataPublishing.pdf
- adversarial accuracy gain, описанный в пункте 4.4 статьи https://desfontain.es/PDFs/PhD/TheCostOfPrivacyDestructionOfDataMiningUtilityInAnonymizedDataPublishing.pdf
- оценка accuracy деобезличивания при помощи градиентного бустинга
Методы оценки полезности обезличенных данных
- решение задач классификации и регрессии при помощи градиентного бустинга на изначальном и обезличенном датасетах и сравнение качества работы моделей
- средний размер класса эквивалентности
- отношение количества уникальных записей к общему числу записей (distinctness)
- доля изменившихся отдельных значений в датасете
- неоднородная энтропия (non-uniform entropy)
- потеря информации на основе энтропии (entropy-based information loss)
- оценка расстояния между исходными и получившимися данными поэлементно (my_by_element_distance)
Оценка расстояния между исходными и получившимися данными поэлементно (my_by_element_distance)
- представляет собой среднее поэлементных расстояний
- поэлементное расстояние вычисляется по следующим принципам
- вычисляется для пары элементов
- лежит на отрезке от 0 до 1
- если один элемент - nan, а другой нет, равно 1
- если оба nan - 0
- если столбец имеет тип числовых значений
- обозначим m - минимальное значение в столбце, M - максимальное
- обозначим первый элемент a, если он - значение и [a1, a2], если это дипапазон
- аналогично b и [b1, b2] - для второго
- если оба элемента значения, то расстояние вычисляется по формуле abs(a-b)/(M-m)
- если один элемент - диапазон (пусть второй), то ((a-b1)^2+(a-b2)^2) / (2 * (M-m) * (b2 - b1))
- если столбец имеет тип порядковых значений
- r(x) - функцию получения ранга элемента в столбце, n - количество элементов в столбце
- обозначим первый элемент за a, если он - значение и за [a1, a2], если это дипапазон
- аналогично b и [b1, b2] - для второго
- если оба элемента значения, то расстояние вычисляется по формуле abs(r(a)-r(b))/(n-1)
- если один элемент - диапазон (пусть второй), то ((r(a)-r(b1))^2+(r(a)-r(b2))^2) / (2 * (M-m) * (r(b2) - r(b1)))
- если столбец имеет номинальный тип, то
- обозначим |X| мощность множества X
- обозначим \in отношение включения
- обозначим \union оператор объединения
- обозначим \intersection оператор пересечения
- обозначим первый элемент за a, а второй - за b (могут быть элементами или множествами возможных элементов)
- если оба элемента значения, то расстояние вычисляется по формуле int(a!=b)
- если один элемент - множество (пусть второй), то int(a /in b) / |b|
- если оба - множества, то |a \intersection b| / |a \union b|, то есть IOU
Интерфейс классов обезличивания:
- параметры алгоритмов задаются в конструкторах классов
- для обезличивания датасета необходимо передать его методу depersanolize
- для того чтобы указать колонки-идентификаторы, необходимо передать в параметр identifiers_ids списток индексов этих колонок
- для того чтобы указать колонки-квазиидентификаторы, необходимо передать в параметр quasi_identifiers_ids списток индексов этих колонок
- для того чтобы указать колонки с чувствительной информацией, необходимо передать в параметр sensitives_ids списток индексов этих колонок
- для того чтобы указать, что все оставшиеся колонки относятся к данному типу, необходимо передать в соответствующий параметр значение 'left'
- по умолчанию quasi_identifiers_ids = 'left'
- только один из данных параметров может иметь значение 'left'
Класс Depersonalizator:
- от данного класса наследуются все классы с алгоритмами обезличивания
- данный класс преобразует данные из входного формата, описанного выше, в формат, удобный для обработки (разбивает на идентификаторы, квазиидентификаторы и чувствительную информацию), а также преобразует выходные данные алгоритмов в единый датасет
В проекте представлены следующие классы с алгоритмы (классы) обезличивания:
- AggregationKAnonymityTimeOptimal - агрегация с разбиением на группы с взятием k-1 ближайших к данной строке с использованием описанного ниже расстояния между элементами
- AggregationLDiversityTimeOptimal - алгоритм аналогичен AggregationKAnonymityTimeOptimal, но строки отбираются до тех пор, пока датасет не станет k-анонимным и l-разнообразным
- Datafly - реализация алгоритма Datafly (https://www.cerias.purdue.edu/assets/pdf/bibtex_archive/2005-134.pdf) с автоматически создаваемым VGH
- DistributedDataKAnonymityDepersonalization - алгоритм обмена данными между двумя владельцами с соблюдением k-анонимности, представленный в статье https://www.cerias.purdue.edu/assets/pdf/bibtex_archive/2005-134.pdf, но вместо DataFly используется groupjoin (см. ниже)
- GeneralizationGreedyByOneEqualSizedGroups - обобщение, при котором каждый столбец делится на группы с одинаковым для каждого столбца минимальным количеством элементов в столбце
- GeneralizationKAnonymityTimeOptimal - обобщение с разбиением на группы с взятием k-1 ближайших к данной строке с использованием описанного ниже расстояния между элементами
- GeneralizationLDiversityTimeOptimal - алгоритм аналогичен GeneralizationKAnonymityTimeOptimal, но строки отбираются до тех пор, пока датасет не станет k-анонимным и l-разнообразным
- GroupJoin - алгоритм объединения групп строк, функция потерь для которых изменяется меньше всего, объединение происходит, пока не будет достигнута необходимая метрика (k-анонимность, l-разнообразие, t-близость)
- TestIdentifierHasher - алгоритм хеширования идентификаторов
- RandomizationDepersonalizator - добавляет к каждому значению случайную величину с распределением, задаваемым относительно исходных данных
- Shuffler - переставляет строки в заданных столбцах
- ShufflerInBatches - переставляет строки в каждой группе отдельно в заданных столбцах
- SuppressionKAnonymityBaseline - перебирает все варианты подавления значений в датасете, в поиске варианта, достигающего k-анонимности с наименьшим количеством подавлений
- SuppressionLDiversityBaseline - алгоритм, аналогичный SuppressionKAnonymityBaseline, но достигается l-разнообразие
- SuppressionKAnonimityTimeOptimal - алгоритм, аналогичный GeneralizationKAnonymityTimeOptimal, но используется расстояние Хэмминга и подавление
- SuppressionLDiversityTimeOptimal - алгоритм, аналогичный GeneralizationLDiversityTimeOptimal, но используется расстояние Хэмминга и подавление
- SuppressionTClosenessBaseline - алгоритм, аналогичный SuppressionKAnonymityBaseline, но достигается t-близость
Типы столбцов:
- real - количественные данные
- ordered - порядковые данные
- unordered - номинальные данные
Класс GeneralizationRange:
- класс хранит обобщение нескольких номинальных значений или отрезок порядковых или количественных значений
- для порядковых или количественных значений хранятся минимум и максимум отрезка
- для номинальных - список уникальных значений
- класс поддерживает сравнение на равенство, а для порядковых или количественных значений - отношение порядка
- предполагается, что отношение порядка применяется только к непересекающимся отрезкам, иначе - неопределённое поведение
Описание алгоритмов обезличивания
AggregationKAnonymityTimeOptimal
Краткое описание алгоритма
Агрегация с разбиением на группы с взятием k-1 ближайших к данной строке с использованием описанного ниже расстояния между элементами
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
Результат работы алгоритма
- K-анонимный датасет
- количество значений-квазиидентификаторов K-анонимного датасета, отличных от соответствующих значений изначального датасета
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния для всех пар строк по следующему принципу:
- расстояние между строками представляет собой сумму расстояний между соответствующими элементами
- расстояние между двумя значениями лежит на отрезке от 0 до 1
- расстояние между двумя номинальными значениями равно 0, если они равны, и 1 иначе
- расстояние между двумя порядковыми значениями равно модулю разности их рангов среди всех элементов столбца, делённому на количество строк
- расстояние между двумя вещественными значениями равно 0, если они равны, или модулю их разности, делённому на разность максимального и минимального значений, в ином случае
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с k-1 самыми близкими к ней несгруппированными строками
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе считается агрегированное значение
- для столбцов с номинальными значениями - мода
- для столбцов с порядковыми значениями - медиана
- для столбцов с числовыми значениями - среднее
- из агрегированных значений составляются агрегированные строки
- каждая строка группы заменяется на агрегированную строку
AggregationLDiversityTimeOptimal
Краткое описание алгоритма
Алгоритм аналогичен AggregationKAnonymityTimeOptimal, но строки отбираются до тех пор, пока датасет не станет k-анонимным и l-разнообразным
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- l - параметр l-разнообразия (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
Результат работы алгоритма
- L-разнообразный датасет
- количество значений-квазиидентификаторов K-анонимного датасета, отличных от соответствующих значений изначального датасета
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния для всех пар строк по следующему принципу:
- расстояние между строками представляет собой сумму расстояний между соответствующими элементами
- расстояние между двумя значениями лежит на отрезке от 0 до 1
- расстояние между двумя номинальными значениями равно 0, если они равны, и 1 иначе
- расстояние между двумя порядковыми значениями равно модулю разности их рангов среди всех элементов столбца, делённому на количество строк
- расстояние между двумя вещественными значениями равно 0, если они равны, или модулю их разности, делённому на разность максимального и минимального значений, в ином случае
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с необходимым количеством самых близких к ней несгруппированных строк для того, чтобы группа стала содержать хотя бы k строк и для каждого чувствительного столбца - l различных значений
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе считается агрегированное значение
- для столбцов с номинальными значениями - мода
- для столбцов с порядковыми значениями - медиана
- для столбцов с числовыми значениями - среднее
- из агрегированных значений составляются агрегированные строки
- каждая строка группы заменяется на агрегированную строку
Datafly
Краткое описание алгоритма
Реализация алгоритма Datafly (https://www.cerias.purdue.edu/assets/pdf/bibtex_archive/2005-134.pdf) с автоматически создаваемым VGH
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
- k_suppressed_lines - максимальное количество строк, которые можно подавить (в Datafly, описанном в статье = k-1), по умолчанию = k-1
Результат работы алгоритма
- K-анонимный датасет
- количество значений-квазиидентификаторов K-анонимного датасета, отличных от соответствующих значений изначального датасета
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- выбирается столбец с наибольшим количеством различных значений
- для этого столбца производится обобщение по следующим принципам
- если значения столбца номинальные, то 2 наиболее редких значения объединяются в одно при помощи класса GeneralizationRange
- если значения столбца порядковые или числовые, то наиболее редкое значение объединяется с наиболее редким из соседних с ним по порядку при помощи класса GeneralizationRange
- данные действия повторяются до тех пор, пока число строк, которые не относятся ни к одной группе из равных строк из хотя бы k элементов, не станет меньше k_suppressed_lines
- оставшиеся строки подавляются
DistributedDataKAnonymityDepersonalization
Краткое описание алгоритма
Алгоритм обмена данными между двумя владельцами с соблюдением k-анонимности, представленный в статье https://www.cerias.purdue.edu/assets/pdf/bibtex_archive/2005-134.pdf, но вместо DataFly используется groupjoin (см. ниже)
Параметры алгоритма
- Алгоритм не наследуется от Depersonalizer
- Алгоритм запускается методом exchange_data
- Для запуска алгоритма необходимо создать 2 объекта класса DistributedDataOwnerKAnonymityDepersonalizator, представляющие собой двух владельцев данных, и сообщить им друг о друге при помощи метода set_other_data_owner
- Конструктор класса имеет следующие параметры:
- quasi_identifiers - квадиидентификаторы данного владельца (матрица numpy)
- sensitives - чувствительные столбы этого владельца (матрица numpy)
- k - параметр k-анонимности
- encryption_key - секретный и отдельный для каждого ключ шифрования
- quasi_identifiers_types - тип каждого столбца матрицы квазиидентификаторов (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
- seed - сид генератора случайных чисел (по умолчанию не задаётся)
Результат работы алгоритма
Объединённый массив, из которого каждый из владельцев может узнать не больше, чем позволяет k-анонимность. Порядок объединения следующий:
- квадиидентификаторы первого (того, у кого запускается метод exchange_data)
- чувствительные значения первого
- квадиидентификаторы второго
- чувствительные значения второго
Содержится в атрибуте joined_data каждого владельца
Принцип работы алгоритма
- изначально данные обезличиваются локально (у каждого владельца отдельно до k-анонимности)
- вычисляются параметры шифрования (публичный ключ - точка на эллиптической кривой)
- каждый вычисляет статистики датасетов для удобства обезличивания при помощи groupjoin
- обмен информацией о группах, на которые производится обезличивание, осуществляется следующим образом:
- все индексы групп шифруются алгоритмом передающего владельца
- зашифрованные индексы групп ещё раз шифруются алгоритмом принимающего владельца
- в результате, если индексы равны, их итоговое представление у обоих владельцев будет одинаковым, так как используется коммутативное шифрование на эллиптических кривых
- на каждом шаге (цикл):
- производится обмен информацией о группах
- производится проверка на "равенство" по следующему принципу: если у первого и у второго существует хотя бы по одной группе, мощность пересечения которых не равна нулю, но меньше k, то разбиения на группы не равны, иначе - равны
- если равны - завершение цикла
- если нет - обезличивание на 1 шаг при помощи groupjoin (см. ниже)
- как только разбиения равны, можно производить обмен обезличенными датасетами, что соответственно и происходит, и объединённый датасет становится значением атрибута joined_data каждого владельца
GeneralizationGreedyByOneEqualSizedGroups
Краткое описание алгоритма
Обобщение, при котором каждый столбец делится на группы с одинаковым для каждого столбца минимальным количеством элементов в столбце
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
Результат работы алгоритма
- K-анонимный датасет
- минимальный размер группы (смотри принцип работы алгоритма)
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- производится перебор минимального размера группы (group_size) от k до размера датасета
- group_size одинаково для каждого столбца
- для каждого размера группы строится обобщённый датасет:
- для количественных и порядковых столбцов от начала отсортированного столбца берутся по group_size значений
- для номинальных столбцов в случайном порядке набираются уникальные значения, пока общее количество взятых элементов столбца не достигнет k
- если после данных k значений идут значения равные последнему взятому значению, они тоже берутся в группу
- в случае, если в конце остаётся менее k значений, они добавляются в последней сформированной группе
- перебор останавливается, как только обобщённый датасет стал анонимным
- анонимность всегда достижима, так как при group_size, равном размеру датасета, он будет k-анонимным
- бинарный поиск не используется, так как не гарантировано, что для всех group_size больших подходящего group_size обобщённый датасет k-анонимен
GeneralizationKAnonymityTimeOptimal
Краткое описание алгоритма
Обобщение с разбиением на группы с взятием k-1 ближайших к данной строке с использованием описанного ниже расстояния между элементами
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
Результат работы алгоритма
- K-анонимный датасет
- число обобщений
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния для всех пар строк по следующему принципу:
- расстояние между строками представляет собой сумму расстояний между соответствующими элементами
- расстояние между двумя значениями лежит на отрезке от 0 до 1
- расстояние между двумя номинальными значениями равно 0, если они равны, и 1 иначе
- расстояние между двумя порядковыми значениями равно модулю разности их рангов среди всех элементов столбца, делённому на количество строк
- расстояние между двумя вещественными значениями равно 0, если они равны, или модулю их разности, делённому на разность максимального и минимального значений, в ином случае
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с k-1 самыми близкими к ней несгруппированными строками
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе считается обобщённые значения объединением всех значений столбца в группе при помощи класса GeneralizationRange
- из обобщённых значений составляются обобщённые строки
- каждая строка группы заменяется на обобщённую строку
GeneralizationLDiversityTimeOptimal
Краткое описание алгоритма
Алгоритм аналогичен GeneralizationKAnonymityTimeOptimal, но строки отбираются до тех пор, пока датасет не станет k-анонимным и l-разнообразным
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- l - параметр l-разнообразия (целое число больше либо равное 1)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
Результат работы алгоритма
- l-разнообразный датасет
- число обобщений
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния для всех пар строк по следующему принципу:
- расстояние между строками представляет собой сумму расстояний между соответствующими элементами
- расстояние между двумя значениями лежит на отрезке от 0 до 1
- расстояние между двумя номинальными значениями равно 0, если они равны, и 1 иначе
- расстояние между двумя порядковыми значениями равно модулю разности их рангов среди всех элементов столбца, делённому на количество строк
- расстояние между двумя вещественными значениями равно 0, если они равны, или модулю их разности, делённому на разность максимального и минимального значений, в ином случае
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с необходимым количеством самых близких к ней несгруппированных строк для того, чтобы группа стала содержать хотя бы k строк и для каждого чувствительного столбца - l различных значений
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе считается обобщённые значения объединением всех значений столбца в группе при помощи класса GeneralizationRange
- из обобщённых значений составляются обобщённые строки
- каждая строка группы заменяется на обобщённую строку
GroupJoin
Краткое описание алгоритма
Алгоритм объединения групп строк, функция потерь для которых изменяется меньше всего, объединение происходит, пока не будет достигнута необходимая метрика (k-анонимность, l-разнообразие, t-близость)
Структура алгоритма
- для формирования класса деперсонализации требуются ещё 2 класса:
- класс, отвечающий за метрику (k-близость, l-разнообразие, t-близость)
- класс, отвечающий за метод обобщения (подавление, обобщение, агрегация)
- класс, отвечающий за метрику, значет о классе, отвечающем за метод обобщения
Параметры класса, отвечающего за метрику
- параметры метрики (k, l, t)
- loss_function - функция, определяющая, как подсчитывается итоговая функция потерь, принимает:
- loss - расстояние между обобщённым объединением групп и теми же строками из изначального датасета, рассчитываемое аналогично my_by_element_distance
- size1 - размер первой объединяемой группы
- size2 - размер второй объединяемой группы
- параметры метрики (k, l, t)
- k_sens - количество отдельных чувствительных значений в каждом столбце (для l-diversity)
- t_sens - текущее значение t для каждого столбца в группах с чувствительными значениями
- для k-анонимности по умолчанию = loss
- для l-разнообразия по умолчанию = loss / sum(k_sens)
- для t-близости по умолчанию = loss * sum(t_sens)
- always_use_entropy - использовать ли только энтропию для t-близости, или расстояние Вассерштейна для вещественных значений
- sensitives_types - типы чувствительных столбцов (real, ordered, unordered) для t-близости
- seed - сид для генератора случайных чисел (по умолчанию не задаётся)
Параметры класса, отвечающего за метод обобщения
- quasi_identifiers_types - типы квазиидентификаторов (real, ordered, unordered)
Результат работы алгоритма
Датасет удовлетворяющий метрике и обезличенный при помощи выбранного метода
Принцип работы алгоритма
- изначально производится предподсчёт параметров столбцов, для упрощения вычисления расстояние
- минимум и максимум для каждого вещественного столбца
- отображение из элементов в их ранги и общее число элементов для каждого порядкового столбца
- изначально каждый элемент находится в своей группе
- затем случайно берётся группа, не удовлетворяющая метрике
- далее рассматриваются все пары, состоящие из данной группы и какой-либо из оставшихся (в том числе удовлетворяющих метрике)
- для каждой пары производится подсчёт разности функции потерь относительно изначального датасета для объединения групп (двух) и аналогичной функции потерь для каждой группы отдельно:
- loss_final(g1, g2) = loss(g1 \join g2) - loss(g1) - loss(g2), где
- loss_final - искомое
- loss - функция потерь из параметров класса, отвечающего за метрику
- g1 - первая группа
- g2 - вторая группа
- \join - объединение
- выбирается пара с наименьшим расстоянием и объединяется
- процесс повторяется, пока не достигнута метрика
- затем производится обезличивание и полученными группами с применением выбранного метода (подавления, обобщения, агрегации)
IdentifierHasher
Краткое описание алгоритма
Алгоритм хеширования идентификаторов
Параметры алгоритма
Нет
Результат работы алгоритма
Датасет с захешированными алгоритмом SHA256 идентификаторами
Принцип работы алгоритма
Производит поэлементное хеширование алгоритмом из hashlib
RandomizationDepersonalizator
Краткое описание алгоритма
Добавляет к каждому значению случайную величину с распределением, задаваемым относительно исходных данных
Параметры алгоритма
- min_rand - минимальное значение для всех столбцов (или список минимальных значений для каждого столбца) для задания добавляемого значения равномерным распределением (None, если не задано)
- max_rand - максимальное значение для всех столбцов (или список минимальных значений для каждого столбца) для задания добавляемого значения равномерным распределением (None, если не задано)
- seed - сид генератора случайных чисел
- rand_add - функция для генерации добавляемого случайного значения для всех столбцов (список функций для каждого столбца) (None, если не задано)
- quasi_identifiers_types - тип каждого столбца (массив размера равного количеству квазиидентификаторов со значениями 'real', 'ordered', 'unordered'); по умолчанию значения считаются номинальными
- scale - величина задающая разброс значений при генерации методом по умолчанию (на неё умножается сдвиг по индексу для порядковых значений и вещественный сдвиг для численных значений)
Результат работы алгоритма
Датасет с добавленными случайными значениями
Принцип работы алгоритма
- все идентификаторы подавляются
- добавочные функции примеряются только к столбцам с численными значениями, ко всем остальным - методом по умолчанию
- к каждому значению соответствующего столбца прибавляется значение добавочной функции
- если для столбца функция для генерации добавляемого случайного значения не задана, но задано минимальное и максимальное значение, генерация производится из равномерного распределения с соответствующими максимальным и минимальным значениями
- если для столбца функция для генерации добавляемого случайного значения не задана и не заданы минимальное и максимальное значение, то генерация производится методом по умолчанию
- генерация методом по умолчанию производится по следующим принципам:
- для номинальных значений новое значение выбирается равновероятно из списка (с повторениями) всех значений столбца
- для порядковых значений генерируется сдвиг (целочисленный, приведением к типу int значения из стандартного нормального распределения) и берётся значение из упорядоченного массива (с повторениями), индекс которого равен сумме индекса изначального значения и сдвига
- для численных значений строится гистограмма, из неё выбирается (с повторениями) количество значений, равное количеству строк, а затем генерация происходит аналогично генерации для порядковых значений, но сдвиг вещественный, но затем производится линейная интерполяция имеющегося упорядоченного массива (как функции от индекса) и берётся значение, соответствующее сдвигу
Shuffler
Краткое описание алгоритма
Переставляет строки в заданных столбцах
Параметры алгоритма
- columns_ids_to_shuffle - номера столбцов для перемешивания
- seed - сид генератора случайных чисел
Результат работы алгоритма
Датасет с перемешанными строками в заданных столбцах
Принцип работы алгоритма
- производится перемешивание каждого столбца отдельно
ShufflerInBatches
Краткое описание алгоритма
Переставляет строки в каждой группе отдельно в заданных столбцах
Параметры алгоритма
- columns_ids_to_shuffle - номера столбцов для перемешивания
- seed - сид генератора случайных чисел
Результат работы алгоритма
Датасет с перемешанными строками в заданных столбцах, при этом строки меняются местами только с другими строками, входящими в одну группу
Принцип работы алгоритма
- производится перемешивание срок каждой группы каждого столбца отдельно для
SuppressionKAnonymityBaseline
Краткое описание алгоритма
Перебирает все варианты подавления значений в датасете, в поиске варианта, достигающего k-анонимности с наименьшим количеством подавлений
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
Результат работы алгоритма
- k-анонимный датасет
- число подавлений
Принцип работы алгоритма
- производится перебор всех возможных вариантов подавления отдельных значений
- выбирается первый найденный вариант с наименьшим числом подавлений
SuppressionLDiversityBaseline
Краткое описание алгоритма
Алгоритм, аналогичный SuppressionKAnonymityBaseline, но достигается l-разнообразие
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- l - параметр l-разнообразия (целое число больше либо равное 1)
Результат работы алгоритма
- l-разнообразный датасет
- число подавлений
Принцип работы алгоритма
- производится перебор всех возможных вариантов подавления отдельных значений
- выбирается первый найденный вариант с наименьшим числом подавлений
SuppressionKAnonimityTimeOptimal
Краткое описание алгоритма
Алгоритм, аналогичный GeneralizationKAnonymityTimeOptimal, но используется расстояние Хэмминга и подавление
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
Результат работы алгоритма
- k-анонимный датасет
- число подавлений
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния Хэмминга для всех пар строк
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с k-1 самыми близкими к ней несгруппированными строками
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе определяется, есть ли в данном столбце в данной группе разные значения; если есть, производится подавление всех значений столбца в этой группе
SuppressionLDiversityTimeOptimal
Краткое описание алгоритма
Алгоритм, аналогичный GeneralizationLDiversityTimeOptimal, но используется расстояние Хэмминга и подавление
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- l - параметр l-разнообразия (целое число больше либо равное 1)
Результат работы алгоритма
- l-разнообразный датасет
- число подавлений
Принцип работы алгоритма
- все идентификаторы подавляются
- все действия далее проводятся над квазиидентификаторами
- если размер датасета меньше k, но не 0 возвращается None, то есть невозможность провести k-анонимизацию
- прозводится расчёт расстояния Хэмминга для всех пар строк
- затем производится группировка значений по следующему принципу
- берётся первая по списку не отнесённая ни к какой группе строка
- она группируется с необходимым количеством самых близких к ней несгруппированных строк для того, чтобы группа стала содержать хотя бы k строк и для каждого чувствительного столбца - l различных значений
- эти действия повторяются пока не останется менее k строк
- оставшиеся строки присоединяются к последней группе
- для каждого столбца в каждой группе определяется, есть ли в данном столбце в данной группе разные значения; если есть, производится подавление всех значений столбца в этой группе
SuppressionTClosenessBaseline
Краткое описание алгоритма
Алгоритм, аналогичный SuppressionKAnonymityBaseline, но достигается t-близость
Параметры алгоритма
- k - параметр k-анонимности (целое число больше либо равное 1)
- t - параметр t-близости (вещественное неотрицательное число)
Результат работы алгоритма
- удовлетворяющий t-близости датасет
- число подавлений
Принцип работы алгоритма
- производится перебор всех возможных вариантов подавления отдельных значений
- выбирается первый найденный вариант с наименьшим числом подавлений
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cp2025-1.0.0.tar.gz.
File metadata
- Download URL: cp2025-1.0.0.tar.gz
- Upload date:
- Size: 51.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44ca7a6951af83797179eebdc381b1dd4b2534d679fbf58f67c8f50f9b8952d0
|
|
| MD5 |
5e368f3144ec5c09b3927184580b68d9
|
|
| BLAKE2b-256 |
95579918c81a153db12f52edb5c69a79b06c594d73f2a7b54cff6a6f0601ca5f
|
Provenance
The following attestation bundles were made for cp2025-1.0.0.tar.gz:
Publisher:
python-publish.yml on ShompolovMaxim/CP_2025
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cp2025-1.0.0.tar.gz -
Subject digest:
44ca7a6951af83797179eebdc381b1dd4b2534d679fbf58f67c8f50f9b8952d0 - Sigstore transparency entry: 206664757
- Sigstore integration time:
-
Permalink:
ShompolovMaxim/CP_2025@f18146e59cb51e013b3880cf798736cf3c0ac6f2 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/ShompolovMaxim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@f18146e59cb51e013b3880cf798736cf3c0ac6f2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cp2025-1.0.0-py3-none-any.whl.
File metadata
- Download URL: cp2025-1.0.0-py3-none-any.whl
- Upload date:
- Size: 58.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebc979c0c25b03dc0b1549fda252d629144e84e1d3247757741af63040eac3be
|
|
| MD5 |
7d0e39f885ffc0017f34cc654390b2a3
|
|
| BLAKE2b-256 |
a097cff49047e109881ce56ce7e42600e97e4eb495814818873fe4b562c37e22
|
Provenance
The following attestation bundles were made for cp2025-1.0.0-py3-none-any.whl:
Publisher:
python-publish.yml on ShompolovMaxim/CP_2025
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cp2025-1.0.0-py3-none-any.whl -
Subject digest:
ebc979c0c25b03dc0b1549fda252d629144e84e1d3247757741af63040eac3be - Sigstore transparency entry: 206664759
- Sigstore integration time:
-
Permalink:
ShompolovMaxim/CP_2025@f18146e59cb51e013b3880cf798736cf3c0ac6f2 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/ShompolovMaxim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@f18146e59cb51e013b3880cf798736cf3c0ac6f2 -
Trigger Event:
release
-
Statement type: