예제 #1
0
def recommender_setup_train():
    recommenders = []

    topPop = TopPop(URM_train)
    topPop.fit()
    topPopRecommender = recommenderEntry(topPop, "topPop")
    recommenders.append(topPopRecommender)

    elasticNet = ElasticNetRecommender(URM_train)
    elasticNet.fit("train")
    elasticNetRecommender = recommenderEntry(elasticNet, "elasticNet")
    recommenders.append(elasticNetRecommender)

    pureSVD = PureSVDRecommender(URM_train)
    pureSVD.fit()
    pureSVDRecommender = recommenderEntry(pureSVD, "pureSVD")
    recommenders.append(pureSVDRecommender)

    sslim = ReccomenderSslim(URM_train)
    sslim.fit(train="-train")
    sslimRecommender = recommenderEntry(sslim, "sslim")
    recommenders.append(sslimRecommender)

    CFItem = ItemKNNCFRecommender(URM_train)
    CFItem.fit(shrink=25, topK=10, similarity="jaccard", feature_weighting="TF-IDF", normalize=False)
    CFItemRecommender = recommenderEntry(CFItem, "CFItem")
    recommenders.append(CFItemRecommender)

    slim = SLIM_BPR_Recommender(URM_train)
    slim.fit(path="../../", train="-train")
    slimRecommender = recommenderEntry(slim, "slim")
    recommenders.append(slimRecommender)

    CFUser = UserKNNCFRecommender(URM_train)
    CFUser.fit(703, 25, "asymmetric")
    CFUserRecommender = recommenderEntry(CFUser, "CFUser")
    recommenders.append(CFUserRecommender)

    CBItem = ItemKNNCBFRecommender(URM_train, ICM_all)
    CBItem.fit(shrink=120, topK=5, similarity="asymmetric", feature_weighting="none", normalize=True)
    CBItemRecommender = recommenderEntry(CBItem, "CBItem")
    recommenders.append(CBItemRecommender)

    P3a = P3alphaRecommender(URM_train)
    P3a.fit(alpha=0.25662502344934046, min_rating=0, topK=25, implicit=True, normalize_similarity=True)
    P3aRecommender = recommenderEntry(P3a, "P3a")
    recommenders.append(P3aRecommender)

    P3b = RP3betaRecommender(URM_train)
    P3b.fit(alpha=0.22218786834129392, beta=0.23468317063424235, min_rating=0, topK=25, implicit=True,
            normalize_similarity=True)
    P3bRecommender = recommenderEntry(P3b, "P3b")
    recommenders.append(P3bRecommender)

    return recommenders
예제 #2
0
    def filter_seen(self, user_id, scores):
        start_pos = self.test.indptr[user_id]
        end_pos = self.test.indptr[user_id + 1]

        user_profile = self.test.indices[start_pos:end_pos]

        scores[user_profile] = -np.inf

        return scores


URM_train, URM_test = train_test_holdout(URM_all, train_perc=0.8)
URM_train, URM_validation = train_test_holdout(URM_train, train_perc=0.9)

itemColl = ItemKNNCFRecommender(URM_train)
#itemColl.fit(shrink=106, topK=63, similarity="jaccard")

userColl = UserKNNCFRecommender(URM_train)
userColl.fit(shrink=100, topK=3, similarity="cosine")

itemCont = ItemKNNCBFRecommender(URM_all, ICM_all)
#itemCont.fit(shrink=120, topK=5, similarity="jaccard")

pureSVD = PureSVDRecommender(URM_all)
#pureSVD.fit()

hybridrecommender = ItemKNNScoresHybridRecommender(URM_train, userColl,
                                                   userColl, userColl,
                                                   userColl)
예제 #3
0
        # rank items
        ranking = scores.argsort()[::-1]

        return ranking[:at]

    def filter_seen(self, user_id, scores):
        start_pos = self.URM.indptr[user_id]
        end_pos = self.URM.indptr[user_id + 1]

        user_profile = self.URM.indices[start_pos:end_pos]

        scores[user_profile] = -np.inf

        return scores

itemColl = ItemKNNCFRecommender(URM_all)
itemColl.fit(shrink=50, topK=10)

elasticNet = SLIMElasticNetRecommender(URM_all)
elasticNet.fit()

users = utils.get_target_users("../../Dataset/target_users.csv")
hybridrecommender = ItemKNNScoresHybridRecommender(URM_all, itemColl, elasticNet)

hybridrecommender.fit(0.3)
with open("../../../Outputs/itemColl+elasticNet_0.3.csv", 'w') as f:
    f.write("user_id,item_list\n")
    for user_id in users:
        f.write(str(user_id) + ", " + utils.trim(hybridrecommender.recommend(user_id)[:10]) + "\n")

hybridrecommender.fit(0.5)
예제 #4
0
from External_Libraries.Base.Evaluation.Evaluator import EvaluatorHoldout

from External_Libraries.ParameterTuning.SearchBayesianSkopt import SearchBayesianSkopt
from skopt.space import Real, Integer, Categorical
from External_Libraries.ParameterTuning.SearchAbstractClass import SearchInputRecommenderArgs

URM_all = sps.csr_matrix(sps.load_npz("../../../../Dataset/old/data_all.npz"))
"""
URM_train = sps.csr_matrix(sps.load_npz("../../../../../Dataset/data_train.npz"))
URM_test = sps.csr_matrix(sps.load_npz("../../../../../Dataset/data_test.npz"))
"""
ICM_all = sps.csr_matrix(sps.load_npz("../../../../Dataset/ICM/ICM_all.npz"))
URM_train, URM_test = train_test_holdout(URM_all, train_perc=0.8)
URM_train, URM_validation = train_test_holdout(URM_train, train_perc=0.9)

itemKNNCF = ItemKNNCFRecommender(URM_train)
itemKNNCF.fit(shrink=25,
              topK=10,
              similarity="jaccard",
              feature_weighting="TF-IDF",
              normalize=False)

itemKNNCBF = ItemKNNCBFRecommender(URM_train, ICM_all)
itemKNNCBF.fit(shrink=120,
               topK=5,
               similarity="asymmetric",
               feature_weighting="none",
               normalize=True)

W_sparse_CF = itemKNNCF.W_sparse
W_sparse_CBF = itemKNNCBF.W_sparse
예제 #5
0
pyplot.plot(x_tick, MAP_per_shrinkage)
pyplot.ylabel('MAP')
pyplot.xlabel('Shrinkage')
pyplot.savefig("shrink.png")

#users = utils.get_target_users("../../../../../Dataset/users_clusters/Coll_I.csv")
users = utils.get_target_users("../../../../../Dataset/target_users.csv")
with open("../../../../../Outputs/Coll_I.csv", 'w') as f:
    f.write("user_id,item_list\n")
    for user_id in users:
        f.write(str(user_id) + ", " + utils.trim(recommender.recommend(user_id, at=10)) + "\n")
'''
URM_test = sps.csr_matrix(
    sps.load_npz("../../../../Dataset/URM/data_test.npz"))
users = utils.get_target_users("../../../../Dataset/target_users.csv", seek=8)
URM = sps.csr_matrix(sps.load_npz("../../../../Dataset/URM/data_all.npz"))
validator = validate(URM_test, [10])

mauri_recsys = ItemKNNCFRecommender(URM)
mauri_recsys.fit(shrink=25,
                 topK=10,
                 similarity="jaccard",
                 feature_weighting="TF-IDF",
                 normalize=False)
print(evaluate.evaluate(users, mauri_recsys, URM_test, 10)["MAP"])
results = validator.evaluateRecommender(mauri_recsys)
print(results[0][10]["MAP"])

# SHRINK:10, K:100, SIMILARITY:asymmetric, FEATURE=none, NORM=False @ 0.023746