Пример #1
0
def t4():
    for j in range(0, 100):
        n = random.randint(3, 8)
        epsilon = 0.1
        delta = 0.1
        sample_size = math.ceil(2*(n+1)*math.log((n+1)/(2*delta))/(epsilon**2))
        test_weights = [random.random() for i in range(0, n+1)]
        exact_values = exact_shapley(test_weights, n)
        distribution = inverse_shapley.q_distribution(n)
        sum_distribution = sum(distribution)
        distribution = [distribution[i]/sum_distribution for i in range(0, len(distribution))]
        cumulative = inverse_shapley.q_cumulative(distribution, n)
        fcc = inverse_shapley.estimate_correlation(test_weights, sample_size, n, cumulative)
        fcc_avg = sum(fcc[1:n+1])/n
        rhs = [0]*n
        lhs = [0]*n
        for z in range(0, n):
            rhs[z] = 2.0/n + (sum_distribution/2.0)*(fcc[z+1] - fcc_avg)
            lhs[z] = exact_values[z]
        if inverse_shapley.l2_distance(lhs, rhs) > epsilon:
            print(test_weights)
            print(fcc)
            print(exact_values)
            print(lhs)
            print(rhs)
            print(inverse_shapley.l2_distance(lhs, rhs))
Пример #2
0
def t5():
    for j in range(0, 100):
        n = random.randint(3, 8)
        epsilon = 0.1
        delta = 0.1
        sample_size = math.ceil(2*(n+1)*math.log((n+1)/(2*delta))/((epsilon/16)**2))
        test_weights = [random.random() for i in range(0, n+1)]
        exact_values = exact_shapley(test_weights, n)
        distribution = inverse_shapley.q_distribution(n)
        sum_distribution = sum(distribution)
        distribution = [distribution[i]/sum_distribution for i in range(0, len(distribution))]
        cumulative = inverse_shapley.q_cumulative(distribution, n)
        fcc = inverse_shapley.estimate_correlation(test_weights, sample_size, n, cumulative)
        output_weights = inverse_shapley.boosting_ttv(fcc, epsilon, n, cumulative, sample_size)
        print(inverse_shapley.l2_distance(output_weights,exact_values))