def test_private_gaussian_mean(example_private_table: PrivateTable): """check private guassian mean implementation.""" noisy_mean = np.mean([ example_private_table.gaussian_mean('Age', PrivacyBudget(0.99, 0.5)) for i in range(100) ]) check_absolute_error(noisy_mean, 33.2, 10.)
def test_function(): n = len(test_data) x = np.array([i[0] for i in test_data]) y = np.array([i[1] for i in test_data]) y_pred = param[0] * x + param[1] loss = 1.0 / n * np.sum((y_pred - y)**2) check_absolute_error(loss, 0., 20.)
def test_private_SGD(data): train_data, test_data = data[:800], data[800:] param = np.random.rand(2) # y = param[0]*x+param[1] def gradient_function(batch_data): x, y = batch_data y_pred = param[0] * x + param[1] d0 = -2.0 * x * (y - y_pred) d1 = -2.0 * (y - y_pred) return [d0, d1] def get_weights_function(): return np.copy(param) def learning_rate_function(step): if step < 10: return 0.1 elif step < 50: return 0.01 else: return 0.005 def update_weights_function(new_weight): param[:] = new_weight def test_function(): n = len(test_data) x = np.array([i[0] for i in test_data]) y = np.array([i[1] for i in test_data]) y_pred = param[0] * x + param[1] loss = 1.0 / n * np.sum((y_pred - y)**2) check_absolute_error(loss, 0., 20.) moment_accountant = MomentPrivacyBudgetTracker(PrivacyBudget(10, 0.001)) private_SGD(gradient_function=gradient_function, get_weights_function=get_weights_function, update_weights_function=update_weights_function, learning_rate_function=learning_rate_function, train_data=train_data, group_size=100, gradient_norm_bound=10, number_of_steps=100, sigma=1, moment_privacy_budget_tracker=moment_accountant, test_interval=100, test_function=test_function) check_absolute_error(moment_accountant.consumed_privacy_budget.epsilon, 8.805554, 1e-6) check_absolute_error(moment_accountant.consumed_privacy_budget.delta, 0.000625, 1e-6)
def test_private_std(example_private_table: PrivateTable): """check private std implementation using Age in adult dataset.""" noisy_std = example_private_table.std('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 13.640432553581146, 1.) del noisy_std
def test_private_gaussian_mean_petal_length(example_private_table: PrivateTable): """check private gaussian mean implementation using Petal Length in iris dataset.""" noisy_mean = example_private_table.gaussian_mean('Petal Length', PrivacyBudget(0.99, 0.5)) check_absolute_error(noisy_mean, 3.7586666666666693, 1.)
def test_private_std_sepal_width(example_private_table: PrivateTable): """check private std implementation using Sepal Width in iris dataset.""" noisy_std = example_private_table.std('Sepal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 0.4335943113621737, 1.) del noisy_std
def test_private_std_petal_width(example_private_table: PrivateTable): """check private std implementation using Petal Width in iris dataset.""" noisy_std = example_private_table.std('Petal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 0.7631607417008414, 1.) del noisy_std
def test_private_mean(example_private_table: PrivateTable): """check private mean implementation.""" noisy_mean = example_private_table.mean('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_mean, 33.2, 1.)
def test_private_max(example_private_table: PrivateTable): """check private max implementation.""" noisy_max = example_private_table.max('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_max, 42., 1.) del noisy_max
def test_private_mean(example_private_table: PrivateTable): """check private mean implementation using Age in adult dataset.""" noisy_mean = example_private_table.mean('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_mean, 38.58164675532078, 1.)
def test_private_max_petal_width(example_private_table: PrivateTable): """check private max implementation using Petal Width in iris dataset.""" noisy_max = example_private_table.max('Petal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_max, 2.5, 1.) del noisy_max
def test_private_max_sepal_length(example_private_table: PrivateTable): """check private max implementation using Sepal Length in iris dataset.""" noisy_max = example_private_table.max('Sepal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_max, 7.9, 1.) del noisy_max
def test_private_var_petal_width(example_private_table: PrivateTable): """check private var implementation using Petal Width in iris dataset.""" noisy_var = example_private_table.var('Petal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 0.5824143176733784, 1.) del noisy_var
def test_private_var_petal_length(example_private_table: PrivateTable): """check private var implementation using Petal Length in iris dataset.""" noisy_var = example_private_table.var('Petal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 3.1131794183445156, 1.) del noisy_var
def test_private_var_sepal_width(example_private_table: PrivateTable): """check private var implementation using Sepal Width in iris dataset.""" noisy_var = example_private_table.var('Sepal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 0.18800402684563763, 1.) del noisy_var
def test_private_var_sepal_length(example_private_table: PrivateTable): """check private var implementation using Sepal Length in iris dataset.""" noisy_var = example_private_table.var('Sepal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 0.6856935123042505, 1.) del noisy_var
def test_private_var(example_private_table: PrivateTable): """check private var implementation using Age in adult dataset.""" noisy_var = example_private_table.var('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 186.06140024879625, 2.) del noisy_var
def test_private_min(example_private_table: PrivateTable): """check private min implementation using Age in adult dataset.""" noisy_min = example_private_table.min('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_min, 17., 1.) del noisy_min
def test_private_median_sepal_width(example_private_table: PrivateTable): """check private median implementation using Sepal Width in iris dataset.""" noisy_median = example_private_table.median('Sepal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_median, 3.0, 1.) del noisy_median
def test_private_gaussian_mean(example_private_table: PrivateTable): """check private guassian mean implementation using Age in adult dataset.""" noisy_mean = example_private_table.gaussian_mean('Age', PrivacyBudget(0.99, 0.5)) check_absolute_error(noisy_mean, 38.58164675532078, 1.)
def test_private_median_petal_length(example_private_table: PrivateTable): """check private median implementation using Petal Length in iris dataset.""" noisy_median = example_private_table.median('Petal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_median, 4.35, 1.) del noisy_median
def test_private_min(example_private_table: PrivateTable): """check private min implementation.""" noisy_min = example_private_table.min('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_min, 28., 1.) del noisy_min
def test_private_std(example_private_table: PrivateTable): """check private std implementation.""" noisy_std = example_private_table.std('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 5.54, 1.) del noisy_std
def test_private_mean_sepal_length(example_private_table: PrivateTable): """check private mean implementation using Sepal Length in iris dataset.""" noisy_mean = example_private_table.mean('Sepal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_mean, 5.843333333333335, 1.)
def test_private_std_petal_length(example_private_table: PrivateTable): """check private std implementation using Petal Length in iris dataset.""" noisy_std = example_private_table.std('Petal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 1.7644204199522617, 1.) del noisy_std
def test_private_var(example_private_table: PrivateTable): """check private var implementation.""" noisy_var = example_private_table.var('Age', PrivacyBudget(10000.)) check_absolute_error(noisy_var, 30.69, 2.) del noisy_var
def test_private_mean_petal_width(example_private_table: PrivateTable): """check private mean implementation using Petal Width in iris dataset.""" noisy_mean = example_private_table.mean('Petal Width', PrivacyBudget(10000.)) check_absolute_error(noisy_mean, 1.1986666666666672, 1.)
def test_private_gaussian_mean_sepal_width(example_private_table: PrivateTable): """check private gaussian mean implementation using Sepal Width in iris dataset.""" noisy_mean = example_private_table.gaussian_mean('Sepal Width', PrivacyBudget(0.99, 0.5)) check_absolute_error(noisy_mean, 3.0540000000000007, 1.)
def test_private_std_sepal_length(example_private_table: PrivateTable): """check private std implementation using Sepal Length in iris dataset.""" noisy_std = example_private_table.std('Sepal Length', PrivacyBudget(10000.)) check_absolute_error(noisy_std, 0.8280661279778629, 1.) del noisy_std