def fit_attack(X, y, outlier_distance_threshold=1): attack = GeneralTikhonovAttack(step_size=5, max_steps=5000, lasso_lambda=alpha_lambda, boundary=boundary, outlier_method='distancethreshold', outlier_distance_threshold=outlier_distance_threshold) attack.fit(X, y, starting_position=attack_starting_position) return attack
def fit_attack(X, y): attack = GeneralTikhonovAttack(step_size=5, max_steps=5000, lasso_lambda=0.02, boundary=boundary, outlier_method='distancethreshold', outlier_distance_threshold=1) attack.fit(X, y) return attack
def fit_attack(X, y): attack = GeneralTikhonovAttack(step_size=150, max_steps=5000, lasso_lambda=0.02, boundary=boundary, outlier_method='kthdistance', outlier_weight=0.005, outlier_power=2, outlier_k=3) attack.fit(X, y) return attack
x_train = dataset['train'][:, :-1] y_train = (dataset['train'][:, -1] * 2) - 1 x_test_full = dataset['test'][:, :-1] use = np.random.choice(x_test_full.shape[0], num_test) x_test = x_test_full[use, :] # Generate the Attack Points boundary = np.concatenate((boundary_mins[i] * np.ones( (1, x_test.shape[1])), boundary_maxs[i] * np.ones( (1, x_test.shape[1])))) if outlier_method == 'distancethreshold': attack = GeneralTikhonovAttack( boundary=boundary, step_size=step_sizes[i], max_steps=num_steps[i], outlier_method='distancethreshold', outlier_weight=outlier_weight, outlier_distance_threshold=outlier_distance_threshold, outlier_k=outlier_k) else: attack = GeneralTikhonovAttack(boundary=boundary, step_size=step_sizes[i], max_steps=num_steps[i]) print('fitting attack to training data') attack.fit(x_train, y_train) successful_load = True if LOAD_ATTACK_POINTS: print('loading attack points') try: attack_points = np.loadtxt(
for i, (dataset_name, dataset) in enumerate(datasets.items()): x_train = dataset['train'][:, :-2] y_train = (dataset['train'][:, -1] * 2) - 1 x_test_full = dataset['test'][:, :-2] use = np.random.choice(x_test_full.shape[0], num_test) x_test = x_test_full[use, :] # Generate the Attack Points boundary = np.concatenate((boundary_mins[i] * np.ones((1, x_test.shape[1])), boundary_maxs[i] * np.ones((1, x_test.shape[1])))) if outlier_method == 'distancethreshold': attack = GeneralTikhonovAttack(boundary=boundary, step_size=step_sizes[i], max_steps=num_steps[i], lasso_lambda=lasso_lambda, outlier_method='distancethreshold', outlier_weight=outlier_weight, outlier_distance_threshold=outlier_distance_threshold, outlier_k=outlier_k) else: attack = GeneralTikhonovAttack(boundary=boundary, step_size=step_sizes[i], max_steps=num_steps[i], lasso_lambda=lasso_lambda) attack.fit(x_train, y_train) attack_points = np.zeros((num_attack, x_train.shape[1])) for a in range(num_attack): print('generating attack point {} of {} for {}'.format(a+1, num_attack, dataset_name)) x_attack, y_attack = attack.get_attack_point() attack_points[a, :] = x_attack print(attack_points)
def fit_attack(X, y): attack = GeneralTikhonovAttack(lasso_lambda=0.02, boundary=boundary) attack.fit(X, y) return attack
boundary_max = 20 elif dataset_name is 'congressional-voting': data_train_x = congressional_voting_train[:, :-2] data_train_y = (congressional_voting_train[:, -1] * 2) - 1 data_test_x = congressional_voting_test[:, :-2] data_test_y = (congressional_voting_test[:, -1] * 2) - 1 step_size = 500 max_steps = 1000 boundary_min = -20 boundary_max = 20 boundary = np.concatenate((boundary_min * np.ones( (1, data_test_x.shape[1])), boundary_max * np.ones( (1, data_test_x.shape[1])))) attack = GeneralTikhonovAttack(boundary=boundary, step_size=step_size, max_steps=max_steps) attack.fit(data_test_x, data_test_y) attack_x, attack_y = attack.get_attack_point_trajectory() print(attack_x[-1, :]) plt.figure(figsize=(12, 11)) for i in range(num_d): for j in range(num_d): print((i * num_d) + j + 1) subplot = plt.subplot(num_d, num_d, (i * num_d) + j + 1) if i == j: plt.hist(data_test_x[:, i]) else: plt_color = np.where(data_test_y == 1, 'b', 'r')
data_train_y = (datasets[dataset_name]['train'][:, -1] * 2) - 1 data_test_x = datasets[dataset_name]['test'][:, :-2] data_test_y = (datasets[dataset_name]['test'][:, -1] * 2) - 1 # Setup Defender defender = OnlineLasso(alpha=alpha_lambda) # Setup Classifiers lasso = OnlineLasso(alpha=alpha_lambda) steps = [('KthNeighbor', KthNeighbor(outlier_distance_threshold=distance_threshold)), ('Lasso', OnlineLasso(alpha=alpha_lambda))] lasso_outlier = Pipeline(steps) # Setup Attacks attack_lasso = GeneralTikhonovAttack(lasso_lambda=alpha_lambda, step_size=5000, max_steps=1000) attack_lasso_outlier = GeneralTikhonovAttack(lasso_lambda=alpha_lambda, step_size=5000, max_steps=1000, outlier_method='distancethreshold', outlier_distance_threshold=distance_threshold) # Setup Attack Pairs attack_pairs = AttackPairs() attack_pairs.add(lasso, attack_lasso, 1) attack_pairs.add(lasso_outlier, attack_lasso_outlier, 1) attack_pairs.fit_all(data_train_x, data_train_y) # Setup Ensemble ensemble = PoisonEnsemble(attack_pairs, data_test_x, defender=defender)