def run_mini_monster(Bconstructor, Bval, learning_algs, rewards, risks, val, T, slate_len, i, start, params=None): for (k, v) in learning_algs.items(): if params is None: B = Bconstructor() M = Semibandits.MiniMonster(B, learning_alg=v, classification=False) (r, reg, val_tmp) = M.play(T, verbose=True, params={'weight': np.ones(slate_len)}, validate=Bval) rewards['mini_%s' % (k)].append(r) print("Num Uniform Actions: %d" % (M.num_unif), flush=True) np.savetxt(outdir + "mini_%s_rewards_%d.out" % (k, i), r) if Bval is not None: val['mini_%s' % (k)].append(val_tmp) print('Mini %s Final Validation %0.2f' % (k, val['mini_%s' % (k)][i - start][-1]), flush=True) np.savetxt(outdir + "mini_%s_validation_%d.out" % (k, i), val_tmp) if params is not None: for a in params: B = Bconstructor() M = Semibandits.MiniMonster(B, learning_alg=v, classification=False) (r, reg, val_tmp) = M.play(T, verbose=True, params={ 'weight': np.ones(slate_len), 'mu': a }, validate=Bval) rewards['mini_%s_%0.3f' % (k, a)].append(r) print("Num Uniform Actions: %d" % (M.num_unif), flush=True) np.savetxt(outdir + "mini_%s_%0.3f_rewards_%d.out" % (k, a, i), r) if Bval is not None: val['mini_%s_%0.3f' % (k, a)].append(val_tmp) print('Mini %s %0.3f Final Validation %0.2f' % (k, a, val['mini_%s_%0.3f' % (k, a)][i - start][-1]), flush=True) np.savetxt( outdir + "mini_%s_%0.3f_validation_%d.out" % (k, a, i), val_tmp) return (rewards, risks, val)
def init_minimonster(self): learning_alg = lambda: sklearn.linear_model.LinearRegression() self.base_learner = Semibandits.MiniMonster(self.passthrough, learning_alg=learning_alg, classification=False) self.base_learner.init(self.T, params={'mu': self.mu}) self.base_learner.verbose = False
def run_lin_ucb(Bconstructor, Bval, rewards, risks, val, T, slate_len, i, start, params=None): if params is None: B = Bconstructor() L = Semibandits.LinUCB(B) (r, reg, val_tmp) = L.play(T, verbose=True, validate=Bval) rewards['lin'].append(r) np.savetxt(outdir + "lin_rewards_%d.out" % (i), r) if Bval is not None: np.savetxt(outdir + "lin_validation_%d.out" % (i), val_tmp) val['lin'].append(val_tmp) print('Lin Final Validation %0.2f' % (val['lin'][i - start][-1]), flush=True) if params is not None: for a in params: B = Bconstructor() L = Semibandits.LinUCB(B) (r, reg, val_tmp) = L.play(T, verbose=True, validate=Bval, params={'delta': a}) rewards['lin_%0.5f' % (a)].append(r) np.savetxt(outdir + "lin_%0.5f_rewards_%d.out" % (a, i), r) if Bval is not None: np.savetxt(outdir + "lin_%0.5f_validation_%d.out" % (a, i), val_tmp) val['lin_%0.5f' % (a)].append(val_tmp) print('Lin %0.5f Final Validation %0.2f' % (a, val['lin_%0.5f' % (a)][i - start][-1]), flush=True) return (rewards, risks, val)
def LinearExperiment(ks, ds, iters=5, T=100): """ Run LinUCB against MiniMonster on a synthetic LinearBandit problem. """ outs = {} for k in ks: outs[k] = {} for d in ds: outs[k][d] = [] for i in range(iters): print("Starting simulation with k=%d d=%d i=%d" % (k, d, i), flush=True) B = Simulators.LinearBandit(d, 1, k, noise=True) M = Semibandits.MiniMonster( B, sklearn.linear_model.LinearRegression) (r, reg) = M.play(T, verbose=False) L = Semibandits.LinUCB(B) (r2, reg2) = L.play(T, verbose=False) print("MiniMonster: %0.2f LinUCB: %0.2f" % (r[len(r) - 1], r2[len(r2) - 1]), flush=True) outs[k][d].append((r, r2)) return outs
def init_linucb(self): self.base_learner = Semibandits.LinUCB(self.passthrough) self.base_learner.init(self.T, params={'delta': self.delta})
if Args.param is not None: Args.param = float(Args.param) rewards = [] regrets = [] for i in range(Args.iters): S = Simulators.LinearBandit(Args.d, 1, Args.K, noise=Args.noise, seed=i, pos=False, low=Args.s) if Args.alg == 'linucb': Alg = Semibandits.LinUCB(S) if Args.param is not None: start = time.time() (r, reg, val_tmp) = Alg.play(Args.T, verbose=True, params={ 'delta': Args.param, 'schedule': 10 }) stop = time.time() if Args.alg == 'limecb': Alg = LimeCB(S) if Args.param is not None: start = time.time() (r, reg, val_tmp) = Alg.play(Args.T, verbose=True,
S = Simulators.SemiparametricBandit(Args.d, 1, Args.K, noise=Args.noise, seed=i, pos=True) if Args.dataset == 'semiparametric' and Args.feat == 'sphere': S = Simulators.SemiparametricBandit(Args.d, 1, Args.K, noise=Args.noise, seed=i, pos=False) if Args.alg == 'linucb': Alg = Semibandits.LinUCB(S) if Args.param is not None: start = time.time() (r, reg, val_tmp) = Alg.play(Args.T, verbose=True, params={ 'delta': Args.param, 'schedule': 1 }) stop = time.time() if Args.alg == 'bose': Alg = BOSE(S) if Args.param is not None: start = time.time() (r, reg, val_tmp) = Alg.play(Args.T, verbose=True,