def get_algs(): # create a dict of (textual algorithm description => class) to be evaluated algs = {} ara = ar.AssosiationRules() algs['ar'] = ara del ara sra = sr.SequentialRules(10, weighting='div', pruning=20) algs['sr10-div'] = sra del sra sknna = sknn.ContextKNN(500, 1000, similarity="cosine") algs['sknn-500-1000-cosine'] = sknna del sknna ssknna = ssknn.SeqContextKNN(100, 500, similarity="cosine") algs['ssknn-100-500-cosine'] = ssknna del ssknna knn = sfsknn.SeqFilterContextKNN(100, 500, similarity="cosine") algs['sfknn-100-500-cosine'] = knn del knn vsknna = vsknn.VMContextKNN(100, 1000, similarity="cosine") algs['svmknn-100-1000-cosine'] = vsknna vsknna = vsknn.VMContextKNN(100, 2000, similarity="cosine") algs['svmknn-100-2000-cosine'] = vsknna del vsknna grunew = gru4rec2.GRU4Rec(loss='bpr-max-0.5', final_act='linear', hidden_act='tanh', layers=[100], batch_size=32, dropout_p_hidden=0.0, learning_rate=0.2, momentum=0.5, n_sample=2048, sample_alpha=0, time_sort=True) algs['gru-100-bpr-max-0.5'] = grunew del grunew return algs
metric.append(ac.HitRate(5)) metric.append(ac.HitRate(10)) metric.append(ac.HitRate(20)) metric.append(ac.MRR(5)) metric.append(ac.MRR(10)) metric.append(ac.MRR(20)) metric.append(ac.NDCG(5)) metric.append(ac.NDCG(10)) metric.append(ac.NDCG(20)) # create a dict of (textual algorithm description => class) to be evaluated algs = {} #weighted hybrid example hybrid = wh.WeightedHybrid([ cknn.ContextKNN(100, 500, similarity="cosine"), gru4rec.GRU4Rec(layers=[100], n_sample=128, sample_alpha=0) ], [0.3, 0.7]) # weights algs['whybrid-test-10-90'] = hybrid train, test = loader.load_data(data_path, file_prefix, rows_train=limit_train, rows_test=limit_test, density=density_value) item_ids = train.ItemId.unique() # init metrics for m in metric: m.init(train)
sra = sr.SequentialRules(10, weighting='div', pruning=20, last_n_days=None) algs['sr10-div'] = sra ara = ar.AssosiationRules() algs['ar'] = ara #knn iknna = iknn.ItemKNN() algs['iknn'] = iknna sknna = sknn.ContextKNN(100, 500, similarity="cosine", extend=False) algs['sknn-100-500-cosine'] = sknna vsknna = vsknn.VMContextKNN(100, 2000, similarity="cosine", last_n_days=None, extend=False) algs['vsknn-200-2000-cosine'] = vsknna ssknna = ssknn.SeqContextKNN(100, 500, similarity="cosine", extend=False) algs['ssknn-100-500-cosine-div'] = ssknna
algs['gru-100-top1'] = gru if method == 'gru4rec2': gru = gru4rec.GRU4Rec( loss='bpr-max-0.5', final_act='tanh', hidden_act='tanh', layers=[1000], dropout_p_hidden=0.1, learning_rate=0.05, momentum=0.1, n_sample=2048, sample_alpha=0) algs['gru-100-bpr-max-0.5'] = gru if method == 'iknn': # item knn example knn = iknn.ItemKNN() algs['iknn'] = knn if method == 'ct': # item knn example ctt = ct.ContextTree() algs['CT'] = ctt isCT = True if method == 'cknn': # context knn example knn = cknn.ContextKNN() algs['knn-500-1000-cosine'] = knn if method == 'scknn': scknn_obj = scknn.SeqContextKNN(100, 500, similarity="cosine", extend=False) algs['scknn-100-500-cosine-div'] = scknn_obj if method == 'smf': smf_obj = smf.SessionMF(factors=100, batch=50, learn='adagrad_sub', learning_rate=0.085, momentum=0.2, regularization=0.005, dropout=0.3, skip=0.0, epochs=10, shuffle=-1, activation='linear', objective='top1_max', samples=2048) algs['smf-bpr'] = smf_obj ''' Execution ''' #load data train, test = loader.load_data( data_path, file_prefix, rows_train=limit_train, rows_test=limit_test, density=density_value) item_ids = train.ItemId.unique()