def combine_recommenders(neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, thresholds, num_topics_list): combined_recommenders = [] for neighbourhood_calculator,\ neighbour_contribution_calculator,\ baseline_calculator,\ similarity_calculator,\ num_neighbours,\ threshold,\ num_topics\ in itertools.product( neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, thresholds, num_topics_list): recommender = ContextualKNN(None, None, None, None, None, has_context=True) recommender.neighbourhood_calculator = neighbourhood_calculator recommender.neighbour_contribution_calculator =\ neighbour_contribution_calculator recommender.user_baseline_calculator = baseline_calculator recommender.user_similarity_calculator = similarity_calculator recommender.num_neighbours = num_neighbours recommender.threshold1 = threshold recommender.threshold2 = threshold recommender.threshold3 = threshold recommender.threshold4 = threshold recommender.num_topics = num_topics combined_recommenders.append(recommender) return combined_recommenders
def combine_recommenders( neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, thresholds, num_topics_list): combined_recommenders = [] for neighbourhood_calculator,\ neighbour_contribution_calculator,\ baseline_calculator,\ similarity_calculator,\ num_neighbours,\ threshold,\ num_topics\ in itertools.product( neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, thresholds, num_topics_list): recommender = ContextualKNN( None, None, None, None, None, has_context=True) recommender.neighbourhood_calculator = neighbourhood_calculator recommender.neighbour_contribution_calculator =\ neighbour_contribution_calculator recommender.user_baseline_calculator = baseline_calculator recommender.user_similarity_calculator = similarity_calculator recommender.num_neighbours = num_neighbours recommender.threshold1 = threshold recommender.threshold2 = threshold recommender.threshold3 = threshold recommender.threshold4 = threshold recommender.num_topics = num_topics combined_recommenders.append(recommender) return combined_recommenders
def get_recommenders_set(): # nc = ContextNeighbourhoodCalculator() # ncc = NeighbourContributionCalculator() # ubc = UserBaselineCalculator() # usc = PBCSimilarityCalculator() # cosine_usc = CBCSimilarityCalculator() # Similarity calculators cosine_sc = CosineSimilarityCalculator() pearson_sc = PearsonSimilarityCalculator() pbc_sc = PBCSimilarityCalculator() cbu_sc = CBCSimilarityCalculator() similarity_calculators = [cosine_sc, pearson_sc, pbc_sc, cbu_sc] # Neighbourhood calculators simple_nc = SimpleNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) context_nc = ContextNeighbourhoodCalculator() # hybrid_nc0 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) # hybrid_nc0.weight = 0.0 hybrid_nc02 = ContextHybridNeighbourhoodCalculator( copy.deepcopy(pearson_sc)) hybrid_nc02.weight = 0.2 hybrid_nc05 = ContextHybridNeighbourhoodCalculator( copy.deepcopy(pearson_sc)) hybrid_nc05.weight = 0.5 hybrid_nc08 = ContextHybridNeighbourhoodCalculator( copy.deepcopy(pearson_sc)) hybrid_nc08.weight = 0.8 # hybrid_nc1 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) # hybrid_nc1.weight = 1.0 neighbourhood_calculators = [ simple_nc, context_nc, # hybrid_nc0, # hybrid_nc02, hybrid_nc05, # hybrid_nc08, # hybrid_nc1 ] # Baseline calculators simple_ubc = SimpleUserBaselineCalculator() ubc = UserBaselineCalculator() baseline_calculators = [ubc, simple_ubc] # Neighbour contribution calculators ncc = NeighbourContributionCalculator() context_ncc = ContextNCCalculator() neighbour_contribution_calculators = [ ncc, # context_ncc ] num_topics = 150 # num_neighbours = None numpy.random.seed(0) basic_cosine_knn = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, cosine_sc, has_context=False) basic_pearson_knn = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, pearson_sc, has_context=False) contextual_knn = ContextualKNN(num_topics, context_nc, ncc, ubc, pbc_sc, has_context=True) # get_knn_recommender_info(contextual_knn1) # ocelma_recommender = OcelmaRecommender() recommenders = [ # basic_cosine_knn, # basic_pearson_knn, contextual_knn # ocelma_recommender ] num_neighbours_list = [None] # num_neighbours_list = [None, 3, 6, 10, 15, 20] threshold_list = [0.0, 0.5, 0.9] # threshold_list = [0.0] # num_topics_list = [10, 50, 150, 300, 500] num_topics_list = [150] # combined_recommenders = [] # for recommender, num_neighbours in itertools.product(recommenders, num_neighbours_list): # new_recommender = copy.deepcopy(recommender) # new_recommender.num_neighbours = num_neighbours # combined_recommenders.append(new_recommender) # threshold_list = [None] # # combined_recommenders = [] # for recommender, threshold in itertools.product(recommenders, threshold_list): # new_recommender = copy.deepcopy(recommender) # new_recommender.threshold1 = threshold # new_recommender.threshold2 = threshold # new_recommender.threshold3 = threshold # new_recommender.threshold4 = threshold # combined_recommenders.append(new_recommender) # num_threshold_list = [0.2, 0.5, 0.7] combined_recommenders = combine_recommenders( neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, threshold_list, num_topics_list) baseline_recommender = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, pearson_sc, has_context=True) best_recommender = ContextualKNN(num_topics, hybrid_nc05, ncc, simple_ubc, pbc_sc, has_context=True) # best_recommender = ContextualKNN(num_topics, simple_nc, ncc, ubc, cosine_sc, has_context=True) best_recommender.threshold1 = 0.9 best_recommender.threshold2 = 0.9 best_recommender.threshold3 = 0.9 best_recommender.threshold4 = 0.9 my_recommenders = [ # baseline_recommender, best_recommender ] return my_recommenders
def get_recommenders_set(): # nc = ContextNeighbourhoodCalculator() # ncc = NeighbourContributionCalculator() # ubc = UserBaselineCalculator() # usc = PBCSimilarityCalculator() # cosine_usc = CBCSimilarityCalculator() # Similarity calculators cosine_sc = CosineSimilarityCalculator() pearson_sc = PearsonSimilarityCalculator() pbc_sc = PBCSimilarityCalculator() cbu_sc = CBCSimilarityCalculator() similarity_calculators = [ cosine_sc, pearson_sc, pbc_sc, cbu_sc ] # Neighbourhood calculators simple_nc = SimpleNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) context_nc = ContextNeighbourhoodCalculator() # hybrid_nc0 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) # hybrid_nc0.weight = 0.0 hybrid_nc02 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) hybrid_nc02.weight = 0.2 hybrid_nc05 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) hybrid_nc05.weight = 0.5 hybrid_nc08 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) hybrid_nc08.weight = 0.8 # hybrid_nc1 = ContextHybridNeighbourhoodCalculator(copy.deepcopy(pearson_sc)) # hybrid_nc1.weight = 1.0 neighbourhood_calculators = [ simple_nc, context_nc, # hybrid_nc0, # hybrid_nc02, hybrid_nc05, # hybrid_nc08, # hybrid_nc1 ] # Baseline calculators simple_ubc = SimpleUserBaselineCalculator() ubc = UserBaselineCalculator() baseline_calculators = [ ubc, simple_ubc ] # Neighbour contribution calculators ncc = NeighbourContributionCalculator() context_ncc = ContextNCCalculator() neighbour_contribution_calculators = [ ncc, # context_ncc ] num_topics = 150 # num_neighbours = None numpy.random.seed(0) basic_cosine_knn = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, cosine_sc, has_context=False) basic_pearson_knn = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, pearson_sc, has_context=False) contextual_knn = ContextualKNN(num_topics, context_nc, ncc, ubc, pbc_sc, has_context=True) # get_knn_recommender_info(contextual_knn1) # ocelma_recommender = OcelmaRecommender() recommenders = [ # basic_cosine_knn, # basic_pearson_knn, contextual_knn # ocelma_recommender ] num_neighbours_list = [None] # num_neighbours_list = [None, 3, 6, 10, 15, 20] threshold_list = [0.0, 0.5, 0.9] # threshold_list = [0.0] # num_topics_list = [10, 50, 150, 300, 500] num_topics_list = [150] # combined_recommenders = [] # for recommender, num_neighbours in itertools.product(recommenders, num_neighbours_list): # new_recommender = copy.deepcopy(recommender) # new_recommender.num_neighbours = num_neighbours # combined_recommenders.append(new_recommender) # threshold_list = [None] # # combined_recommenders = [] # for recommender, threshold in itertools.product(recommenders, threshold_list): # new_recommender = copy.deepcopy(recommender) # new_recommender.threshold1 = threshold # new_recommender.threshold2 = threshold # new_recommender.threshold3 = threshold # new_recommender.threshold4 = threshold # combined_recommenders.append(new_recommender) # num_threshold_list = [0.2, 0.5, 0.7] combined_recommenders = combine_recommenders( neighbourhood_calculators, neighbour_contribution_calculators, baseline_calculators, similarity_calculators, num_neighbours_list, threshold_list, num_topics_list ) baseline_recommender = ContextualKNN(num_topics, simple_nc, ncc, simple_ubc, pearson_sc, has_context=True) best_recommender = ContextualKNN(num_topics, hybrid_nc05, ncc, simple_ubc, pbc_sc, has_context=True) # best_recommender = ContextualKNN(num_topics, simple_nc, ncc, ubc, cosine_sc, has_context=True) best_recommender.threshold1 = 0.9 best_recommender.threshold2 = 0.9 best_recommender.threshold3 = 0.9 best_recommender.threshold4 = 0.9 my_recommenders = [ # baseline_recommender, best_recommender ] return my_recommenders