Explorer des données avec un contrôleur de budget de confidentialité
Les systèmes d'exploration de données qui offrent la confidentialité différentielle doivent gérer un budget de confidentialité qui mesure la quantité de confidentialité perdue au fil de plusieurs requêtes.
Dans cet exercice, vous allez explorer l'ensemble de données IBM HR Analytics Employee Attrition & Performance tout en suivant notre budget de confidentialité. Rappelez-vous que si une requête dépasse le budget de confidentialité défini dans le contrôleur, une erreur survient.
L'histogramme est un outil précieux pour visualiser les données de façon différentiellement privée. La syntaxe est la même que celle de la fonction correspondante dans numpy, avec un paramètre epsilon.
L'ensemble complet de données est accessible sous hr et l'attribut d'âge des employés sous ages. Une fonction personnalisée, show_histogram(), a été créée et chargée pour tracer l'histogramme comme vous l'avez fait plus tôt dans le cours.
Cette activité fait partie du cours
Confidentialité des données et anonymisation en Python
Instructions de l’exercice
- Créez un
BudgetAccountantde confidentialité avec unepsilonde1.5, en utilisant son constructeur. - Générez un histogramme privé à partir de la colonne
agesavec une valeur d'epsilonde0.1. - Obtenez et affichez la moyenne privée de
ages, en utilisant unepsilonde0.9et des bornes de10à100sous forme de tuple. - Affichez le budget de confidentialité restant pour les deux nouvelles requêtes suivantes.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create the privacy Budget Accountant with epsilon of 1.5
acc = ____
# Use the Budget Accountant acc to draw a private histogram of ages with epsilon 0.1
dp_hist, dp_bins = tools.___(____, epsilon=____, range=[10,100], accountant=____)
show_histogram(dp_hist, dp_bins)
# Get and show the private average of the age variable
print("Mean: ", tools.mean(____))
# Show privacy budget remaining for 2 queries
print("Remaining budget for 2 queries: ", ____)
print("Number of queries recorded: ", len(acc))