def job(model_type, learning_rate, eta, gamma, reward_method, f, train_set, test_set, num_features, output_fold): if model_type == "perfect": pc = [0.0, 0.2, 0.4, 0.8, 1.0] ps = [0.0, 0.0, 0.0, 0.0, 0.0] elif model_type == "navigational": pc = [0.05, 0.3, 0.5, 0.7, 0.95] ps = [0.2, 0.3, 0.5, 0.7, 0.9] elif model_type == "informational": pc = [0.4, 0.6, 0.7, 0.8, 0.9] ps = [0.1, 0.2, 0.3, 0.4, 0.5] cm = PBM(pc, 2) for r in range(1, 16): # np.random.seed(r) ranker = MDPRankerV2(256, num_features, learning_rate) print("MDP Adam MSLR10K fold{} {} eta{} reward {} run{} start!".format(f, model_type, eta, reward_method, r)) ndcg_scores, cndcg_scores = run(train_set, test_set, ranker, eta, gamma, reward_method, NUM_INTERACTION, cm) os.makedirs(os.path.dirname("{}/fold{}/".format(output_fold, f)), exist_ok=True) # create directory if not exist with open( "{}/fold{}/{}_run{}_ndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(ndcg_scores, fp) with open( "{}/fold{}/{}_run{}_cndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(cndcg_scores, fp)
def job(model_type, f, train_set, test_set, tau, output_fold): if model_type == "perfect": pc = [0.0, 0.2, 0.4, 0.8, 1.0] ps = [0.0, 0.0, 0.0, 0.0, 0.0] elif model_type == "navigational": pc = [0.05, 0.3, 0.5, 0.7, 0.95] ps = [0.2, 0.3, 0.5, 0.7, 0.9] elif model_type == "informational": pc = [0.4, 0.6, 0.7, 0.8, 0.9] ps = [0.1, 0.2, 0.3, 0.4, 0.5] # if model_type == "perfect": # pc = [0.0, 0.5, 1.0] # ps = [0.0, 0.0, 0.0] # elif model_type == "navigational": # pc = [0.05, 0.5, 0.95] # ps = [0.2, 0.5, 0.9] # elif model_type == "informational": # pc = [0.4, 0.7, 0.9] # ps = [0.1, 0.3, 0.5] cm = PBM(pc, 1) for r in range(16, 26): # np.random.seed(r) ranker = PDGDLinearRanker(FEATURE_SIZE, Learning_rate, tau) print("PDGD tau{} fold{} {} run{} start!".format( tau, f, model_type, r)) ndcg_scores, cndcg_scores, final_weight = run(train_set, test_set, ranker, NUM_INTERACTION, cm) os.makedirs(os.path.dirname("{}/fold{}/".format(output_fold, f)), exist_ok=True) # create directory if not exist with open( "{}/fold{}/{}_run{}_ndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(ndcg_scores, fp) with open( "{}/fold{}/{}_run{}_cndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(cndcg_scores, fp) with open( "../results/exploration/mq2007/PDGD/fold{}/{}_tau{}_run{}_final_weight.txt" .format(f, model_type, tau, r), "wb") as fp: pickle.dump(final_weight, fp) print("PDGD tau{} fold{} {} run{} finished!".format( tau, f, model_type, r))
def job(model_type, learning_rate, eta, reward_method, f, train_set, test_set, num_features, output_fold): if model_type == "perfect": pc = [0.0, 0.5, 1.0] ps = [0.0, 0.0, 0.0] elif model_type == "navigational": pc = [0.05, 0.5, 0.95] ps = [0.2, 0.5, 0.9] elif model_type == "informational": pc = [0.4, 0.7, 0.9] ps = [0.1, 0.3, 0.5] cm = PBM(pc, 1) for r in range(1, 16): # np.random.seed(r) ranker = ActorCriticLinearRankerV2(num_features, learning_rate, 256) print("ActorCritic mq2007 fold{} {} eta{} reward{} run{} start!".format(f, model_type, eta, reward_method, r)) ndcg_scores, cndcg_scores = run(train_set, test_set, ranker, eta, reward_method, NUM_INTERACTION, cm)
def job(model_type, f, train_set, test_set, tau, step_size, gamma, num_rankers, learning_rate_decay, output_fold): # if model_type == "perfect": # pc = [0.0, 0.5, 1.0] # ps = [0.0, 0.0, 0.0] # elif model_type == "navigational": # pc = [0.05, 0.5, 0.95] # ps = [0.2, 0.5, 0.9] # elif model_type == "informational": # pc = [0.4, 0.7, 0.9] # ps = [0.1, 0.3, 0.5] # click setting for 4-grade relevance label datasets. if model_type == "perfect": pc = [0.0, 0.2, 0.4, 0.8, 1.0] ps = [0.0, 0.0, 0.0, 0.0, 0.0] elif model_type == "navigational": pc = [0.05, 0.3, 0.5, 0.7, 0.95] ps = [0.2, 0.3, 0.5, 0.7, 0.9] elif model_type == "informational": pc = [0.4, 0.6, 0.7, 0.8, 0.9] ps = [0.1, 0.2, 0.3, 0.4, 0.5] # using PBM click model to simulate clicks. # cm = SDBN(pc, ps) cm = PBM(pc, 1) for r in range(16, 26): # np.random.seed(r) ranker = COLTRLinearRanker(FEATURE_SIZE, Learning_rate, step_size, tau, gamma, learning_rate_decay=learning_rate_decay) print("COTLR {} tau{} fold{} {} run{} start!".format(output_fold, tau, f, model_type, r)) ndcg_scores, cndcg_scores = run(train_set, test_set, ranker, NUM_INTERACTION, cm, num_rankers) os.makedirs(os.path.dirname("{}/fold{}/".format(output_fold, f)), exist_ok=True) # create directory if not exist # store the results. with open( "{}/fold{}/{}_run{}_ndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(ndcg_scores, fp) with open( "{}/fold{}/{}_run{}_cndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(cndcg_scores, fp)
def job(model_type, f, train_set, test_set, delta, alpha, FEATURE_SIZE, num_rankers, output_fold): if model_type == "perfect": pc = [0.0, 0.2, 0.4, 0.8, 1.0] ps = [0.0, 0.0, 0.0, 0.0, 0.0] elif model_type == "navigational": pc = [0.05, 0.3, 0.5, 0.7, 0.95] ps = [0.2, 0.3, 0.5, 0.7, 0.9] elif model_type == "informational": pc = [0.4, 0.6, 0.7, 0.8, 0.9] ps = [0.1, 0.2, 0.3, 0.4, 0.5] # # if model_type == "perfect": # pc = [0.0, 0.5, 1.0] # ps = [0.0, 0.0, 0.0] # elif model_type == "navigational": # pc = [0.05, 0.5, 0.95] # ps = [0.2, 0.5, 0.9] # elif model_type == "informational": # pc = [0.4, 0.7, 0.9] # ps = [0.1, 0.3, 0.5] cm = PBM(pc, 1) for r in range(1, 26): # np.random.seed(r) ranker = ProbabilisticRanker(delta, alpha, FEATURE_SIZE) print("DBGD fold{} run{} start!".format(f, model_type, r)) ndcg_scores, cndcg_scores = run(train_set, test_set, ranker, NUM_INTERACTION, cm, num_rankers) os.makedirs(os.path.dirname("{}/fold{}/".format(output_fold, f)), exist_ok=True) # create directory if not exist with open( "{}/fold{}/{}_run{}_ndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(ndcg_scores, fp) with open( "{}/fold{}/{}_run{}_cndcg.txt".format(output_fold, f, model_type, r), "wb") as fp: pickle.dump(cndcg_scores, fp)