def objective(trial): start = time.time() # ハイパラ読み込み # gamma = trial.suggest_loguniform('gamma', 1e-6, 1e-3) # lin_model = trial.suggest_categorical('lin_model', ['lasso', 'elastic']) alpha = trial.suggest_uniform('alpha', 0, 1) beta = trial.suggest_uniform('beta', 0, 0.5) data_dirs = [ '../' + data_path + '/valid1/', '../' + data_path + '/valid2/' ] score_sum = 0 for data_dir in data_dirs: # dataload dataset = AmazonDataset(data_dir) # laod model #slim = train_SLIM(data_dir, load=True) sim_mat = load_sim_mat('sim_mat' + data_dir[-2] + '.csr', len(dataset.user_list), len(dataset.item_list)) edges = [[r[0], r[1]] for r in dataset.triplet_df.values] # user-itemとitem-userどちらの辺も追加 for r in dataset.triplet_df.values: if r[2] == 0: edges.append([r[1], r[0]]) # load network G = nx.DiGraph() G.add_nodes_from([i for i in range(len(dataset.entity_list))]) G.add_edges_from(edges) evaluater = Evaluater(data_dir) #ranking_mat = get_ranking_mat(G, slim, alpha, beta, dataset) ranking_mat = get_ranking_mat(G, sim_mat, alpha, beta, dataset) #score = evaluater.topn_map(ranking_mat) score = evaluater.topn_precision(ranking_mat) score_sum += score mi, sec = time_since(time.time() - start) print('{}m{}s'.format(mi, sec)) return -1 * score_sum / 2
def objective(trial): start = time.time() # hyper parameter alpha = trial.suggest_uniform('alpha', 0, 0.5) beta = trial.suggest_uniform('beta', 0, 0.5) gamma1 = trial.suggest_uniform('gamma1', 0, 1) gamma2 = trial.suggest_uniform('gamma2', 0, 1) gamma3 = trial.suggest_uniform('gamma3', 0, 1) gamma = [gamma1, gamma2, gamma3] data_dir = ['../' + data_path + '/valid1', '../' + data_path + '/valid2'] score_sum = 0 for i in range(len(data_dir)): # dataload dataset = AmazonDataset(data_dir[i], model_name='TransE') # load network edges = [[r[0], r[1]] for r in dataset.triplet_df.values] # user-itemとitem-userどちらの辺も追加 for r in dataset.triplet_df.values: if r[2] == 0: edges.append([r[1], r[0]]) G = nx.DiGraph() G.add_nodes_from([i for i in range(len(dataset.entity_list))]) G.add_edges_from(edges) ranking_mat = get_ranking_mat(G, dataset, model[i], gamma, alpha, beta) evaluater = Evaluater(data_dir[i]) score = evaluater.topn_precision(ranking_mat) score_sum += score mi, sec = time_since(time.time() - start) print('{}m{}sec'.format(mi, sec)) return -1 * score_sum / 2
# dataload data_dir = '../data_luxury_5core/test/' dataset = AmazonDataset(data_dir) # laod model slim_param = pickle.load(open('best_param_slim.pickle', 'rb')) slim = train_SLIM2(data_dir, slim_param) # load network edges = [[r[0], r[1]] for r in dataset.triplet_df.values] ## user-itemとitem-userどちらの辺も追加 for r in dataset.triplet_df.values: if r[2] == 0: edges.append([r[1], r[0]]) G = nx.DiGraph() G.add_nodes_from([i for i in range(len(dataset.entity_list))]) G.add_edges_from(edges) evaluater = Evaluater(data_dir) model_mat = load_sim_mat('sim_mat_test.csr', len(dataset.user_list), len(dataset.item_list)) ranking_mat = get_ranking_mat(G, model_mat, alpha, beta, dataset) #score = evaluater.topn_map(ranking_mat) score = evaluater.topn_precision(ranking_mat) mi, sec = time_since(time.time() - start) print('{}m{}s'.format(mi, sec)) np.savetxt('score.txt', np.array([score]))