AmazeAmaze
← Wróć do bloga

Jak zanonimizować zbiór danych do trenowania AI/ML zgodnie z RODO

4 min czytania

Aby zanonimizować zbiór danych do uczenia maszynowego, usuń lub zamaskuj kolumny identyfikujące osoby — zarówno identyfikatory bezpośrednie (nazwisko, e-mail, PESEL), jak i quasi-identyfikatory, których kombinacja pozwala wyróżnić osobę (data urodzenia, kod pocztowy, stanowisko) — zanim dane trafią do jakiegokolwiek pipeline’u treningowego. Zrobione poprawnie, wynik zachowuje sygnał statystyczny potrzebny modelowi, przestając odnosić się do zidentyfikowanych osób, co na mocy motywu 26 RODO wyprowadza go spod rozporządzenia. Najbezpieczniej robić to lokalnie, na maszynie właściciela danych, by surowe rekordy nigdy nie dotknęły infrastruktury trzecich stron.

W skrócie

  • Podziel kolumny na identyfikatory bezpośrednie, quasi-identyfikatory i dane cechy/etykiety — każdą grupę traktuj inaczej.
  • Maskuj identyfikatory bezpośrednie spójnymi tokenami; generalizuj lub usuwaj quasi-identyfikatory umożliwiające ponowną identyfikację.
  • Dąż do k-anonimowości: każda kombinacja quasi-identyfikatorów powinna pasować do co najmniej k osób, nie do jednej. (Zob. ryzyko ponownej identyfikacji.)
  • Anonimizuj zanim dane wejdą do pipeline’u — najlepiej lokalnie, by surowe PII nigdy nie opuściło Twojego środowiska.
  • Jeśli zachowasz klucz przywracania, to pseudonimizacja, a zbiór pozostaje danymi osobowymi. Do treningu zwykle chcesz maskowania nieodwracalnego.

Krok 1 — sklasyfikuj kolumny

Większość zbiorów tabelarycznych miesza trzy rodzaje kolumn:

Typ kolumnyPrzykładyCo zrobić
Identyfikator bezpośredninazwisko, e-mail, telefon, PESEL, NIP, nr kontaZamaskuj lub usuń
Quasi-identyfikatordata urodzenia, kod pocztowy, płeć, stanowiskoGeneralizuj, grupuj lub usuń
Cecha / etykietakwota zakupu, etykieta, odczyt czujnikaZwykle zostaw

Błąd, który psuje zgodność z RODO, to traktowanie jako „PII” tylko pierwszego wiersza. Model rzadko potrzebuje nazwiska — ale też rzadko potrzebuje dokładnej daty urodzenia, gdy wystarczy rok lub przedział wieku.

Krok 2 — maskuj identyfikatory bezpośrednie spójnie

Zastąp każdy identyfikator bezpośredni tokenem i utrzymuj mapowanie spójne, by ta sama osoba miała ten sam token we wszystkich wierszach — inaczej niszczysz relacje, których model może zasadnie potrzebować (np. wiele transakcji na klienta).

Przed:
  Jan Kowalski, 85010212345, [email protected], Kraków, 1985-01-02, wydał 240
Po:
  [OSOBA_7], [PESEL_7], [EMAIL_7], [MIASTO], 1985, wydał 240

Do treningu zwykle chcesz tego nieodwracalnie — zniszcz mapowanie po zamaskowaniu. Jeśli któryś dalszy etap musi wrócić do prawdziwych osób, zachowaj prywatny klucz i traktuj zbiór jako spseudonimizowany (zob. odwracalna anonimizacja).

Krok 3 — generalizuj quasi-identyfikatory do k-anonimowości

Maskowanie nazwisk nie wystarczy: data urodzenia + kod pocztowy + stanowisko wciąż mogą wskazać jedną osobę. Generalizuj, aż każda kombinacja quasi-identyfikatorów będzie wspólna dla co najmniej k osób:

  • Daty → rok lub przedział wieku (1985-01-02 → 1985 lub 40–44)
  • Pełny kod pocztowy → dzielnica lub region (31-559 → 31-xxx)
  • Rzadkie kategorie → zgrupowane („inne”)

To praktyczny rdzeń k-anonimowości: jeśli najmniejsza grupa dzieląca profil quasi-identyfikatorów ma k = 1, ten wiersz jest identyfikowalny bez względu na to, ile nazwisk usunąłeś.

Krok 4 — rób to lokalnie, przed pipeline’em

Gdzie anonimizujesz, liczy się tak samo jak jak. Jeśli wgrywasz surowe rekordy do usługi w chmurze, by je zamaskować, surowe PII już opuściło Twoją kontrolę i potencjalnie przekroczyło granicę. Maskowanie na Twoim komputerze lub infrastrukturze, zanim zbiór wejdzie do treningu, oznacza, że wrażliwa wersja nigdy nie opuszcza budynku. To podejście local-first stojące za anonimizacją lokalną w Amaze.

Częste błędy

  • Usuwanie tylko nazwisk. Kombinacje quasi-identyfikatorów nadal identyfikują.
  • Niespójne tokeny. Niszczą relacje na byt, których model potrzebuje.
  • Maskowanie po wgraniu. Surowe dane już opuściły środowisko.
  • Trzymanie zbędnego klucza. Czyni zbiór pseudonimowym i utrzymuje go w zakresie RODO.
  • Surowe pola tekstowe. Nazwiska i numery kryją się w notatkach — skanuj je też.

FAQ

Czy zanonimizowane dane treningowe nadal podlegają RODO? Nie — jeśli są w pełni zanonimizowane (nieodwracalnie, bez identyfikowalnych kombinacji), są poza RODO na mocy motywu 26. Dane spseudonimizowane (klucz istnieje) pozostają w zakresie.

Czy potrzebuję zgody, by trenować na danych zanonimizowanych? Gdy dane są w pełni anonimowe, nie są już danymi osobowymi, więc zasady zgody i podstawy prawnej RODO nie dotyczą tego użycia. Podstawę potrzebujesz dla samego etapu anonimizacji.

Czym jest k-anonimowość w jednym zdaniu? Zbiór jest k-anonimowy, jeśli każda kombinacja quasi-identyfikatorów jest wspólna dla co najmniej k rekordów, więc żadnego wiersza nie da się wyodrębnić.

Maskować przed czy po podziale train/test? Przed. Zanonimizuj cały zbiór najpierw, by w żadnym podziale ani cache nie zostało surowe PII.

Czy mogę zanonimizować bazę danych, nie tylko CSV? Tak — ta sama klasyfikacja dotyczy kolumn tabel. Maskuj identyfikatory bezpośrednie i generalizuj quasi-identyfikatory przy eksporcie, zanim dane trafią do treningu.


Amaze maskuje imiona i nazwiska (także w polskiej odmianie), PESEL, NIP, REGON, KRS, e-maile, telefony, numery IBAN i więcej w Twoich plikach — w całości na Twoim komputerze, więc surowe rekordy nigdy nie opuszczają środowiska przed treningiem. Zobacz jak to działa.

Część naszego przewodnika: jak korzystać z AI bez wycieku danych klientów.