Esempio n. 1
0
def aggregate(filepath):
    f = open(filepath, 'rb')
    all_results = pickle.load(f)
    f.close()

    n = len(all_results)
    d = len(all_results[0]['lnr_costs'])

    var = np.zeros((n, d - 1))
    opt_var = np.zeros((n, d - 1))
    lamb = np.zeros((n, d - 1))

    params = []
    title = None

    for t, result in enumerate(all_results):
        params.append(result['param'])
        title = result['title']
        var[t, :] = result['variations']
        opt_var[t, :] = result['opt_variations']
        lamb[t, :] = result['lambdas']

    var_mean, var_std = statistics.mean_sem(var.T)
    opt_var_mean, opt_var_std = statistics.mean_sem(opt_var.T)
    lamb_max = np.max(lamb, axis=1)
    lamb_mean, lamb_std = statistics.mean_sem(lamb.T)

    results = {
        'var': [var_mean, var_std],
        'opt_var': [opt_var_mean, opt_var_std],
        'lamb': [lamb_max, lamb_mean, lamb_std]
    }

    return params, results
Esempio n. 2
0
def aggregate_save(direc, prefix, all_results):
    n = len(all_results)
    d = len(all_results[0]['lnr_costs'])

    var = np.zeros((n, d - 1))
    opt_var = np.zeros((n, d - 1))
    lamb = np.zeros((n, d - 1))

    params = []
    title = None

    for t, result in enumerate(all_results):
        params.append(result['param'])
        title = result['title']
        var[t, :] = result['variations']
        opt_var[t, :] = result['opt_variations']
        lamb[t, :] = result['lambdas']

    var_mean, var_std = statistics.mean_sem(var.T)
    opt_var_mean, opt_var_std = statistics.mean_sem(opt_var.T)
    lamb_max = np.max(lamb, axis=1)
    lamb_mean, lamb_std = statistics.mean_sem(lamb.T)

    # Dynamic Regret
    plt.subplot(311)
    plt.title("Variations")
    plt.errorbar(params, var_mean, yerr=var_std, label='lnr variations')
    plt.errorbar(params,
                 opt_var_mean,
                 yerr=opt_var_std,
                 label='opt variations')
    plt.xscale('log')
    plt.legend()

    plt.subplot(312)
    plt.title("Max Lambda Ratio")
    plt.xscale('log')
    plt.plot(params, lamb_max)

    plt.subplot(313)
    plt.title("Mean Lambda Ratio")
    plt.errorbar(params, lamb_mean, yerr=lamb_std)
    plt.xscale('log')
    plt.tight_layout()

    filepath = os.path.join(direc, prefix) + '_lambda.pdf'
    plt.savefig(filepath)
    plt.close()
    plt.cla()
    plt.clf()
Esempio n. 3
0
    def aggregate(self, all_results):
        n = len(all_results)
        d = self.iters

        lnr_costs = np.zeros((n, d))
        opt_costs = np.zeros((n, d))
        diff_costs = np.zeros((n, d))

        lnr_batch_costs = np.zeros((n, d))
        opt_batch_costs = np.zeros((n, d))
        static_regret = np.zeros((n, d))

        for t, result in enumerate(all_results):
            lnr_costs[t, :] = result['lnr_costs']
            opt_costs[t, :] = result['opt_costs']
            diff_costs[t, :] = result['lnr_costs'] - result['opt_costs']
            lnr_batch_costs[t, :] = result['lnr_batch_costs']
            opt_batch_costs[t, :] = result['opt_batch_costs']
            static_regret[t, :] = result['static_regret']

        lnr_mean, lnr_std = statistics.mean_sem(lnr_costs)
        opt_mean, opt_std = statistics.mean_sem(opt_costs)
        diff_mean, diff_std = statistics.mean_sem(diff_costs)

        lnr_batch_mean, lnr_batch_std = statistics.mean_sem(lnr_batch_costs)
        opt_batch_mean, opt_batch_std = statistics.mean_sem(opt_batch_costs)
        static_regret_mean, static_regret_sem = statistics.mean_sem(
            static_regret)

        x_axis = np.arange(len(lnr_mean))

        # Dynamic Regret
        plt.subplot(211)
        plt.title("Actual loss")
        plt.errorbar(x_axis, lnr_mean, yerr=lnr_std, label='lnr costs')
        plt.errorbar(x_axis, opt_mean, yerr=opt_std, label='opt costs')
        plt.legend()

        plt.subplot(212)
        plt.title("Difference")
        plt.errorbar(x_axis, diff_mean, yerr=diff_std)
        plt.tight_layout()

        filepath = os.path.join(self.dir, self.prefix) + '.pdf'
        plt.savefig(filepath)
        plt.close()
        plt.cla()
        plt.clf()

        # Static Regret
        plt.subplot(211)
        plt.title("Batch loss")
        plt.errorbar(x_axis, lnr_batch_mean, yerr=lnr_std, label='lnr costs')
        plt.errorbar(x_axis, opt_batch_mean, yerr=opt_std, label='opt costs')
        plt.legend()

        plt.subplot(212)
        plt.title("Static Regret")
        plt.errorbar(x_axis, static_regret_mean, yerr=diff_std)
        plt.tight_layout()

        filepath = os.path.join(self.dir, self.prefix) + '_batch.pdf'
        plt.savefig(filepath)
        plt.close()
        plt.cla()
        plt.clf()
Esempio n. 4
0
def aggregate(filepath):
    f = open(filepath, 'rb')
    all_results = pickle.load(f)
    f.close()

    n = len(all_results)
    d = len(all_results[0]['lnr_costs'])

    lnr_costs = np.zeros((n, d))
    opt_costs = np.zeros((n, d))
    diff_costs = np.zeros((n, d))
    static_regret = np.zeros((n, d))

    rewards = np.zeros((n, d))
    sup_rewards = np.zeros((n, d))
    variations = np.zeros((n, d - 1))
    opt_variations = np.zeros((n, d - 1))
    lambdas = np.zeros((n, d - 1))
    betas = np.zeros((n, d - 1))

    for t, result in enumerate(all_results):
        lnr_costs[t, :] = result['lnr_costs']
        opt_costs[t, :] = result['opt_costs']
        # lnr_costs[t, :] = np.cumsum(result['lnr_costs']) / (np.arange(d) + 1)
        # opt_costs[t, :] = np.cumsum(result['opt_costs']) / (np.arange(d) + 1)
        rewards[t, :] = result['rewards']
        sup_rewards[t, :] = result['sup_rewards']

        variations[t, :] = result['variations']
        opt_variations[t, :] = result['opt_variations']
        lambdas[t, :] = result['lambdas']
        betas[t, :] = result['betas']

        static_regret[t, :] = result['static_regret']

    diff_costs = lnr_costs - opt_costs

    lnr_mean, lnr_std = statistics.mean_sem(lnr_costs)
    opt_mean, opt_std = statistics.mean_sem(opt_costs)
    diff_mean, diff_std = statistics.mean_sem(diff_costs)
    sr_mean, sr_std = statistics.mean_sem(static_regret)

    var_mean, var_std = statistics.mean_sem(variations)
    opt_var_mean, opt_var_std = statistics.mean_sem(opt_variations)
    lam_mean, lam_std = statistics.mean_sem(lambdas)
    beta_mean, beta_std = statistics.mean_sem(betas)

    reward_mean, reward_std = statistics.mean_sem(rewards)
    sup_reward_mean, sup_reward_std = statistics.mean_sem(sup_rewards)

    x_axis = np.arange(len(lnr_mean))

    results = {
        "dyn_regret": (diff_mean, diff_std),
        "static_regret": (sr_mean, sr_std),
        "reward": (reward_mean, reward_std),
        "sup_reward": (sup_reward_mean, sup_reward_std),
        "var": (var_mean, var_std),
        "opt_var": (opt_var_mean, opt_var_std),
        "lam": (lam_mean, lam_std),
        'beta': (beta_mean, beta_std)
    }
    return results