Trénovací data ML v souladu s GDPR: Anonymizace 10 000 záznamů bez psaní kódu
Každý tým datové vědy pracující s daty podléhajícími GDPR napsal nějakou verzi tohoto skriptu:
import re
def anonymize_email(text):
return re.sub(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', '[EMAIL]', text)
Toto není soulad s GDPR. Je to nahrazení e-mailové adresy. Datová sada stále obsahuje jména, telefonní čísla, ID zdravotní dokumentace a tucet dalších kategorií PII, které způsobí selhání shody.
Mezera mezi „anonymizoval jsem e-maily" a „tato datová sada je v souladu s GDPR pro trénování ML" je místem, kde jsou selhání GDPR systémová.
GDPR omezení pro trénování ML
GDPR článek 5(1)(b) — Omezení účelu: „Osobní data jsou shromažďována pro specifikované, explicitní a legitimní účely a dále nezpracovávána způsobem neslučitelným s těmito účely."
Použití zákaznických dat shromážděných pro zákaznický servis pro trénování modelu strojového učení je:
- Nový účel zpracování
- Pravděpodobně neslučitelný s původním účelem
- Vyžadující buď nový souhlas nebo prokázanou slučitelnost
Anonymizovaná data nejsou osobními daty — mohou být použita pro trénování ML bez omezení GDPR. Ale „anonymizovaná" musí znamenat skutečně de-identifikovaná, ne jen e-maily nahrazeny.
Co skutečná anonymizace trénovacích dat vyžaduje
Trénovací datová sada v souladu s GDPR musí projít odstraněním všech:
- Přímých identifikátorů: jméno, e-mail, telefon, adresa, ID dokumentace
- Quasi-identifikátorů: kombinace (věk + pohlaví + povolání + PSČ) = re-identifikovatelné
- Nepřímé PII: čísla účtů, zákaznická ID, kódy pracovníků
- Kontextové PII: „zákazník z Hamburku s červenou Teslou" — kombinace = quasi-identifikátor
- Volný text PII: zákaznická podpora poznámky, přepisy hovorů, e-mailová těla
Případ použití: Anonymizace trénovacích dat zákaznické podpory
Vstupní datová sada (10 000 lístků zákaznické podpory):
| Pole | Příklad | PII Status |
|---|---|---|
| ticket_id | 45123 | Ne |
| customer_name | Jan Novák | Ano — přímý identifikátor |
| jan.novak@email.cz | Ano — přímý identifikátor | |
| phone | +420 123 456 789 | Ano — přímý identifikátor |
| message_body | „Problémy s přihlášením k mému účtu č. 7890" | Ano — obsahuje číslo účtu |
| resolution | „Resetováno heslo zákazníka" | Ne |
| category | billing | Ne |
Dávkové zpracování anonym.legal:
- Nahrát CSV s 10 000 záznamy
- Vybrat entity: PERSON, EMAIL_ADDRESS, PHONE_NUMBER, ACCOUNT_NUMBER
- Metoda: Nahradit pseudonymem (konzistentní napříč lístky — stejný zákazník = stejný pseudonym)
- Zpracovat (odhadovaný čas: 45 minut pro 10 000 záznamů)
- Stáhnout anonymizovaný CSV + zpráva auditu
Výstup:
| Pole | Příklad | PII Status |
|---|---|---|
| customer_name | OSOBA_A1 | Ne |
| EMAIL_A1@redacted.invalid | Ne | |
| phone | TELEFON_A1 | Ne |
| message_body | „Problémy s přihlášením k mému účtu č. ÚČET_B7" | Ne |
Pseudonymizace zachovává konzistenci zákazníka (vše od zákazníka A je označeno A1) — kritické pro ML modely vyžadující historii zákazníků.
Auditovatelnost trénovacích dat
Pro dokumentaci GDPR zachovejte:
- Verzi konfigurace anonymizace (typy entit, metody, prahy)
- Zprávu auditního záznamu z dávkového zpracování
- Datum anonymizace a ID zpracování
- Účel ML (dokumentovaný soulad s čl. 5(1)(b))
Zdroje: Pokyny EDPB k anonymizaci · Pokyny ICO k anonymizaci · GDPR článek 5 — zásady zpracování