Example #1
0
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.)
Example #2
0
    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.)
Example #3
0
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)
Example #4
0
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
Example #8
0
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.)
Example #9
0
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
Example #10
0
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.)
Example #11
0
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
Example #12
0
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
Example #13
0
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
Example #14
0
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
Example #15
0
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
Example #16
0
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
Example #17
0
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
Example #18
0
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
Example #19
0
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
Example #20
0
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.)
Example #21
0
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
Example #22
0
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
Example #23
0
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
Example #24
0
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.)
Example #25
0
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
Example #26
0
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
Example #27
0
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.)
Example #28
0
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.)
Example #29
0
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