├── 220202 S-Walk_Accurate and Scalable Session-based Recommendation with Random Walks.pdf ├── README.md ├── WSDM2022_S-Walk_Poster.pdf ├── algorithms ├── STAMP │ ├── __init__.py │ ├── __pycache__ │ │ └── __init__.cpython-36.pyc │ ├── basic_layer │ │ ├── FwNn3AttLayer.py │ │ ├── LinearLayer.py │ │ ├── LinearLayer_3dim.py │ │ ├── NN.py │ │ ├── NN_adam.py │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── FwNn3AttLayer.cpython-36.pyc │ │ │ ├── LinearLayer_3dim.cpython-36.pyc │ │ │ ├── NN_adam.cpython-36.pyc │ │ │ └── __init__.cpython-36.pyc │ ├── data_prepare │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-36.pyc │ │ │ ├── dataset_read.cpython-36.pyc │ │ │ └── load_dict.cpython-36.pyc │ │ ├── dataset_read.py │ │ ├── entity │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.cpython-36.pyc │ │ │ │ ├── sample.cpython-36.pyc │ │ │ │ └── samplepack.cpython-36.pyc │ │ │ ├── sample.py │ │ │ └── samplepack.py │ │ └── load_dict.py │ ├── model │ │ ├── STAMP.py │ │ ├── __init__.py │ │ └── __pycache__ │ │ │ ├── STAMP.cpython-36.pyc │ │ │ └── __init__.cpython-36.pyc │ └── util │ │ ├── AccCalculater.py │ │ ├── Activer.py │ │ ├── BatchData.py │ │ ├── Bitmap.py │ │ ├── Config.py │ │ ├── FileDumpLoad.py │ │ ├── Formater.py │ │ ├── Pooler.py │ │ ├── Printer.py │ │ ├── Randomer.py │ │ ├── SoftmaxMask.py │ │ ├── TensorGather.py │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── AccCalculater.cpython-36.pyc │ │ ├── Activer.cpython-36.pyc │ │ ├── BatchData.cpython-36.pyc │ │ ├── Bitmap.cpython-36.pyc │ │ ├── Config.cpython-36.pyc │ │ ├── FileDumpLoad.cpython-36.pyc │ │ ├── Formater.cpython-36.pyc │ │ ├── Pooler.cpython-36.pyc │ │ ├── Printer.cpython-36.pyc │ │ ├── Randomer.cpython-36.pyc │ │ ├── SoftmaxMask.cpython-36.pyc │ │ └── __init__.cpython-36.pyc │ │ └── batcher │ │ ├── __init__.py │ │ ├── __pycache__ │ │ └── __init__.cpython-36.pyc │ │ └── equal_len │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ └── batcher_p.cpython-36.pyc │ │ └── batcher_p.py ├── __init__.py ├── __pycache__ │ └── __init__.cpython-36.pyc ├── baselines │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── ar.cpython-36.pyc │ │ ├── ar_my.cpython-36.pyc │ │ ├── sr.cpython-36.pyc │ │ └── sr_my.cpython-36.pyc │ ├── ar.py │ └── sr.py ├── filemodel │ ├── __init__.py │ ├── filemodel.py │ └── resultfile.py ├── knn │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ ├── sknn.cpython-36.pyc │ │ ├── stan.cpython-36.pyc │ │ └── vsknn.cpython-36.pyc │ ├── sknn.py │ └── stan.py ├── narm │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ └── narm.cpython-36.pyc │ └── narm.py ├── swalk │ └── swalk.py └── test │ ├── __pycache__ │ ├── ar.cpython-36.pyc │ ├── ar_my.cpython-36.pyc │ └── sr.cpython-36.pyc │ ├── ar.py │ ├── ar_my.py │ ├── slist.py │ └── sr.py ├── conf ├── in │ └── rsc15_100k_test.yml ├── preprocess │ ├── single │ │ ├── diginetica.yml │ │ ├── rsc15.yml │ │ ├── rsc15_4.yml │ │ └── rsc15_64.yml │ └── window │ │ ├── diginetica.yml │ │ ├── retailrocket.yml │ │ └── rsc15.yml ├── save │ ├── diginetica │ │ ├── single split │ │ │ ├── opt │ │ │ │ ├── single_digi_gru.yml │ │ │ │ ├── single_digi_knn.yml │ │ │ │ ├── single_digi_narm.yml │ │ │ │ ├── single_digi_sr.yml │ │ │ │ ├── single_digi_stamp.yml │ │ │ │ ├── single_wrongtime_digi_gru.yml │ │ │ │ ├── single_wrongtime_digi_knn.yml │ │ │ │ ├── single_wrongtime_digi_narm.yml │ │ │ │ ├── single_wrongtime_digi_nextitnet.yml │ │ │ │ ├── single_wrongtime_digi_sr.yml │ │ │ │ └── single_wrongtime_digi_stamp.yml │ │ │ ├── single_digi_baselines.yml │ │ │ ├── single_digi_models.yml │ │ │ ├── single_multiple_digi_baselines.yml │ │ │ ├── single_multiple_digi_models.yml │ │ │ ├── single_multiple_wrongtime_digi_baselines.yml │ │ │ ├── single_multiple_wrongtime_digi_models.yml │ │ │ ├── single_wrongtime_digi_baselines.yml │ │ │ └── single_wrongtime_digi_models.yml │ │ └── window │ │ │ ├── opt │ │ │ ├── window_digi_gru.yml │ │ │ ├── window_digi_knn.yml │ │ │ ├── window_digi_narm.yml │ │ │ ├── window_digi_nextitnet.yml │ │ │ ├── window_digi_sr.yml │ │ │ └── window_digi_stamp.yml │ │ │ ├── opt_wrongtime │ │ │ ├── window_wrongtime_digi_gru.yml │ │ │ ├── window_wrongtime_digi_knn.yml │ │ │ ├── window_wrongtime_digi_narm.yml │ │ │ ├── window_wrongtime_digi_nextitnet.yml │ │ │ ├── window_wrongtime_digi_sr.yml │ │ │ └── window_wrongtime_digi_stamp.yml │ │ │ ├── window_digi_baselines.yml │ │ │ ├── window_digi_models.yml │ │ │ ├── window_multiple_digi_baselines.yml │ │ │ ├── window_multiple_digi_models.yml │ │ │ ├── window_wrongtime_digi_baselines.yml │ │ │ ├── window_wrongtime_digi_models.yml │ │ │ ├── window_wrongtime_multiple_digi_baselines.yml │ │ │ └── window_wrongtime_multiple_digi_models.yml │ ├── nowplaying │ │ └── window │ │ │ ├── opt │ │ │ ├── window_aotm_knn.yml │ │ │ ├── window_nowplaying_gru.yml │ │ │ ├── window_nowplaying_nextitnet.yml │ │ │ └── window_nowplaying_sr.yml │ │ │ ├── window_multiple_nowplaying_baselines.yml │ │ │ ├── window_multiple_nowplaying_models.yml │ │ │ ├── window_multiple_nowplaying_stamp.yml │ │ │ ├── window_nowplaying_baselines.yml │ │ │ ├── window_nowplaying_models.yml │ │ │ └── window_nowplaying_stamp.yml │ ├── retailrocket │ │ ├── hybrids_window_retail.yml │ │ └── window │ │ │ ├── opt │ │ │ ├── window_retailrocket_gru.yml │ │ │ ├── window_retailrocket_knn.yml │ │ │ ├── window_retailrocket_knnidf.yml │ │ │ ├── window_retailrocket_narm.yml │ │ │ ├── window_retailrocket_nextitnet.yml │ │ │ └── window_retailrocket_sr.yml │ │ │ ├── window_multiple_retailr_baselines.yml │ │ │ ├── window_multiple_retailr_models.yml │ │ │ ├── window_retailr_baselines.yml │ │ │ └── window_retailr_models.yml │ ├── rsc15 │ │ ├── hybrids_window_rsc15_multiple.yml │ │ └── window │ │ │ ├── opt │ │ │ ├── window_rsc15_gru.yml │ │ │ ├── window_rsc15_knn.yml │ │ │ ├── window_rsc15_knnidf.yml │ │ │ ├── window_rsc15_nextitnet.yml │ │ │ └── window_rsc15_sr.yml │ │ │ ├── window_multiple_rsc15_baselines.yml │ │ │ ├── window_multiple_rsc15_models.yml │ │ │ ├── window_rsc15_baselines.yml │ │ │ ├── window_rsc15_memory.yml │ │ │ ├── window_rsc15_models.yml │ │ │ ├── window_rsc15_time.yml │ │ │ ├── window_rsc15_time_ct.yml │ │ │ └── window_rsc15_time_nextitnet.yml │ ├── rsc15_4 │ │ └── single split │ │ │ ├── opt │ │ │ ├── single_rsc15_4_gru.yml │ │ │ ├── single_rsc15_4_narm.yml │ │ │ ├── single_rsc15_4_stamp.yml │ │ │ ├── single_rsc_15_4_knn.yml │ │ │ └── single_rsc_15_4_sr.yml │ │ │ ├── single_multiple_rsc15_4_baselines.yml │ │ │ ├── single_multiple_rsc15_4_models.yml │ │ │ ├── single_rsc15_4_baselines.yml │ │ │ ├── single_rsc15_4_ct.yml │ │ │ └── single_rsc15_4_models.yml │ └── rsc15_64 │ │ ├── single split │ │ └── opt │ │ │ ├── single_rsc_15_64_knn.yml │ │ │ └── single_rsc_15_64_sr.yml │ │ ├── single_multiple_rsc15_64_baselines.yml │ │ ├── single_multiple_rsc15_64_models.yml │ │ ├── single_rsc15_64_baselines.yml │ │ └── single_rsc15_64_models.yml └── save_swalk │ ├── 1fold_digi_swalk.yml │ ├── 1fold_rsc15_4_swalk.yml │ ├── 1fold_rsc15_64_swalk.yml │ ├── 5fold_digi_swalk.yml │ ├── 5fold_nowp_swalk.yml │ ├── 5fold_rr_swalk.yml │ └── 5fold_rsc_slist.yml ├── data └── rsc15 │ └── prepared │ ├── yoochoose-clicks-100k_test.txt │ ├── yoochoose-clicks-100k_train_full.txt │ ├── yoochoose-clicks-100k_train_tr.txt │ └── yoochoose-clicks-100k_train_valid.txt ├── evaluation ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── evaluation.cpython-36.pyc │ ├── evaluation_multiple.cpython-36.pyc │ └── loader.cpython-36.pyc ├── evaluation.py ├── evaluation_last.py ├── evaluation_multiple.py ├── loader.py └── metrics │ ├── __init__.py │ ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── accuracy.cpython-36.pyc │ ├── accuracy_grt.cpython-36.pyc │ ├── accuracy_leq.cpython-36.pyc │ ├── accuracy_multiple.cpython-36.pyc │ ├── coverage.cpython-36.pyc │ ├── popularity.cpython-36.pyc │ ├── saver.cpython-36.pyc │ ├── saver_next.cpython-36.pyc │ └── time_memory_usage.cpython-36.pyc │ ├── accuracy.py │ ├── accuracy_ext.py │ ├── accuracy_grt.py │ ├── accuracy_leq.py │ ├── accuracy_multiple.py │ ├── artist_coherence.py │ ├── artist_diversity.py │ ├── coverage.py │ ├── popularity.py │ ├── saver.py │ ├── saver_next.py │ └── time_memory_usage.py ├── preprocessing ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── preprocess_diginetica.cpython-36.pyc │ ├── preprocess_music.cpython-36.pyc │ ├── preprocess_retailrocket.cpython-36.pyc │ └── preprocess_rsc15.cpython-36.pyc ├── preprocess_diginetica.py ├── preprocess_dressipi.py ├── preprocess_music.py ├── preprocess_playlist.py ├── preprocess_retailrocket.py ├── preprocess_rsc15.py ├── preprocess_tmall.py ├── preprocess_windeln.py └── run_preprocessing.py └── run_config.py /220202 S-Walk_Accurate and Scalable Session-based Recommendation with Random Walks.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/220202 S-Walk_Accurate and Scalable Session-based Recommendation with Random Walks.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SWalk 2 | This is the official code for the WSDM 2022 paper:
[`S-Walk: Accurate and Scalable Session-based Recommendation with Random Walks.`] (https://arxiv.org/abs/2201.01091).
3 | 4 | 5 | We implemented our model based on the session-recommedndation framework [**session-rec**](https://github.com/rn5l/session-rec), and you can find the other session-based models and detailed usage on there.
6 | Thanks for sharing the code. 7 | 8 | **`README.md` and the comments in source code will be updated, again.** 9 | 10 | The slides can be found [here](https://drive.google.com/file/d/1qMBHALxZqH7b6g7kmlKdN6V21GeSrgDU/view?usp=sharing). 11 | 12 | ## Dataset 13 | Datasets can be downloaded from:
14 | https://drive.google.com/drive/folders/1ritDnO_Zc6DFEU6UND9C8VCisT0ETVp5 15 | 16 | - Unzip any dataset file to the data folder, i.e., rsc15-clicks.dat will then be in the folder data/rsc15/raw 17 | - Run a configuration with the following command: 18 | For example: ```python run_preprocesing.py conf/preprocess/window/rsc15.yml``` 19 | 20 | ## Basic Usage 21 | - Change the expeimental settings and the model hyperparameters using a configuration file `*.yml`.
22 | - When a configuration file in conf/in has been executed, it will be moved to the folder conf/out. 23 | - Run `run_config.py` with configuaration folder arguments to train and test models.
24 | For example: ```python run_confg.py conf/in conf/out``` 25 | 26 | ## Running SLIST 27 | - The yml files for slist used in paper can be found in `conf/save_swalk` 28 | 29 | ## Requirements 30 | - Python 3 31 | - NumPy 32 | - Pyyaml 33 | - SciPy 34 | - Sklearn 35 | - Pandas 36 | - Psutil 37 | 38 | 45 | -------------------------------------------------------------------------------- /WSDM2022_S-Walk_Poster.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/WSDM2022_S-Walk_Poster.pdf -------------------------------------------------------------------------------- /algorithms/STAMP/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/LinearLayer.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | import tensorflow as tf 3 | from algorithms.STAMP.util.Randomer import Randomer 4 | 5 | class LinearLayer(object): 6 | 7 | def __init__(self, w_shape, stddev = None, params=None): 8 | ''' 9 | :param w_shape: [input_dim, output_dim] 10 | :param stddev: 用于初始化 11 | :param params: 从外界制定参数 12 | ''' 13 | if params is None: 14 | self.w = tf.Variable( 15 | Randomer.random_normal(w_shape), 16 | trainable=True 17 | ) 18 | else: 19 | self.w = params['w'] 20 | def forward(self, inputs): 21 | ''' 22 | count 23 | ''' 24 | # batch_size = tf.shape(inputs)[0] 25 | # w_shp0 = tf.shape(self.w)[0] 26 | # w_shp1 = tf.shape(self.w)[1] 27 | # w_line_3dim.shape = [batch_size, edim, edim] 28 | # w_line_3dim = tf.reshape( 29 | # tf.tile(self.w, [batch_size, 1]), 30 | # [batch_size, w_shp0, w_shp1] 31 | # ) 32 | # linear translate 33 | res = tf.matmul(inputs, self.w) 34 | return res -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/LinearLayer_3dim.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from algorithms.STAMP.util.Randomer import Randomer 3 | 4 | class LinearLayer_3dim(): 5 | ''' 6 | the linear translate basic_layer. 7 | w_shape = [] : the shape of the w. 8 | stddev: the random initialize base. 9 | active: the active function. 10 | ret = x * w 11 | ''' 12 | 13 | # wline.shape = [edim, 1] 14 | # bline.shape = [1] 15 | def __init__( 16 | self, 17 | w_shape=None, 18 | stddev=None, 19 | params=None, 20 | active='tanh' 21 | ): 22 | ''' 23 | the initialize function. 24 | w_shape is the shape of the w param. if params is None, need. 25 | staddev is the stddev of the tf.random_normal. if params is None, need. 26 | params = {'wline':wline}, is use to assign the params. 27 | active is the active function. 28 | ''' 29 | self.w_shape = w_shape 30 | self.stddev = stddev 31 | if params is None: 32 | self.wline = tf.Variable( 33 | Randomer.random_normal(self.w_shape), 34 | # tf.random_uniform(self.w_shape, -0.0015, 0.035), 35 | trainable=True 36 | ) 37 | else: 38 | self.wline = params['wline'] 39 | self.active = active 40 | 41 | # res.shape = [batch_size, time_steps, w_shp1] 42 | # inputs.shape = [batch_size, time_steps, edim] 43 | def forward(self, inputs): 44 | ''' 45 | count 46 | ''' 47 | 48 | w_shp0 = tf.shape(self.wline)[0] 49 | w_shp1 = tf.shape(self.wline)[1] 50 | batch_size = tf.shape(inputs)[0] 51 | # w_line_3dim.shape = [batch_size, edim, edim] 52 | w_line_3dim = tf.reshape( 53 | tf.tile(self.wline, [batch_size, 1]), 54 | [batch_size, w_shp0, w_shp1] 55 | ) 56 | # linear translate 57 | res = tf.matmul(inputs, w_line_3dim) 58 | return res 59 | -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/NN.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import time 3 | 4 | 5 | class NN(object): 6 | """ 7 | The memory network with context attention. 8 | """ 9 | # ctx_input.shape=[batch_size, mem_size] 10 | 11 | def __init__(self, config): 12 | if config != None: 13 | # the config. 14 | self.init_lr = config['init_lr'] # the initialize learning rate. 15 | self.is_update_lr = config['update_lr'] 16 | self.max_grad_norm = config['max_grad_norm'] # the L2 norm. 17 | if self.is_update_lr: 18 | self.decay_steps = config['decay_steps'] 19 | self.decay_rate = config['decay_rate'] 20 | # the optimize set. 21 | self.global_step = None # the step counter. 22 | self.lr = None # the learning rate. 23 | self.optimizer = None # the optimiver. 24 | 25 | def optimize_normal(self, loss, params): 26 | ''' 27 | optimize 28 | loss: the loss. 29 | params: the params need to be optimized. 30 | ''' 31 | # the optimize. 32 | self.global_step = tf.Variable(0, name='global_step') 33 | if self.is_update_lr: 34 | self.lr = self.update_lr() 35 | else: 36 | self.lr = tf.Variable(self.init_lr, trainable=False) 37 | self.optimizer = tf.train.GradientDescentOptimizer(self.lr) 38 | grads_and_vars = self.optimizer.compute_gradients(loss, params) 39 | if self.max_grad_norm != None: 40 | clipped_grads_and_vars = [ 41 | (tf.clip_by_norm(gv[0], self.max_grad_norm), gv[1]) for gv in grads_and_vars 42 | ] 43 | else: 44 | clipped_grads_and_vars = grads_and_vars 45 | inc = self.global_step.assign_add(1) 46 | optimize = None 47 | with tf.control_dependencies([inc]): 48 | optimize = self.optimizer.apply_gradients( 49 | clipped_grads_and_vars) 50 | return optimize 51 | 52 | def update_lr(self): 53 | ''' 54 | update the learning rate. 55 | ''' 56 | lr = tf.train.exponential_decay( 57 | self.init_lr, 58 | self.global_step / 28, 59 | self.decay_steps, 60 | self.decay_rate, 61 | staircase=True 62 | ) 63 | return lr 64 | 65 | def save_model(self, sess, config, saver=None): 66 | suf = str(config['class_num']) + "-" + time.strftime("%Y%m%d%H%M", time.localtime()) 67 | suf += '-' + config['dataset'] 68 | if saver is not None: 69 | saver.save(sess, config['model_save_path'] + config['model'] + ".ckpt-" + suf) 70 | config['saved_model'] = config['model_save_path'] + config['model'] + ".ckpt-" + suf 71 | 72 | -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/NN_adam.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import time 3 | 4 | 5 | class NN(object): 6 | """ 7 | The memory network with context attention. 8 | """ 9 | # ctx_input.shape=[batch_size, mem_size] 10 | 11 | def __init__(self, config): 12 | if config != None: 13 | # the config. 14 | self.init_lr = config['init_lr'] # the initialize learning rate. 15 | self.is_update_lr = config['update_lr'] 16 | self.max_grad_norm = config['max_grad_norm'] # the L2 norm. 17 | if self.is_update_lr: 18 | self.decay_steps = config['decay_steps'] 19 | self.decay_rate = config['decay_rate'] 20 | # the optimize set. 21 | self.global_step = None # the step counter. 22 | self.lr = None # the learning rate. 23 | self.optimizer = None # the optimiver. 24 | 25 | def optimize_normal(self, loss, params): 26 | ''' 27 | optimize 28 | loss: the loss. 29 | params: the params need to be optimized. 30 | ''' 31 | # the optimize. 32 | self.global_step = tf.Variable(0, name='global_step') 33 | if self.is_update_lr: 34 | self.lr = self.update_lr() 35 | else: 36 | self.lr = tf.Variable(self.init_lr, trainable=False) 37 | self.optimizer = tf.train.AdamOptimizer(self.lr) 38 | grads_and_vars = self.optimizer.compute_gradients(loss, params) 39 | if self.max_grad_norm != None: 40 | clipped_grads_and_vars = [ 41 | (tf.clip_by_norm(gv[0], self.max_grad_norm), gv[1]) for gv in grads_and_vars 42 | ] 43 | else: 44 | clipped_grads_and_vars = grads_and_vars 45 | inc = self.global_step.assign_add(1) 46 | optimize = None 47 | with tf.control_dependencies([inc]): 48 | optimize = self.optimizer.apply_gradients( 49 | clipped_grads_and_vars) 50 | return optimize 51 | 52 | def update_lr(self): 53 | ''' 54 | update the learning rate. 55 | ''' 56 | lr = tf.train.exponential_decay( 57 | self.init_lr, 58 | self.global_step / 28, 59 | self.decay_steps, 60 | self.decay_rate, 61 | staircase=True 62 | ) 63 | return lr 64 | 65 | def save_model(self, sess, config, saver=None): 66 | suf = str(config['class_num']) + "-" + time.strftime("%Y%m%d%H%M", time.localtime()) 67 | suf += '-' + config['dataset'] 68 | if saver is not None: 69 | saver.save(sess, config['model_save_path'] + config['model'] + ".ckpt-" + suf) 70 | config['saved_model'] = config['model_save_path'] + config['model'] + ".ckpt-" + suf 71 | 72 | -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/basic_layer/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/__pycache__/FwNn3AttLayer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/basic_layer/__pycache__/FwNn3AttLayer.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/__pycache__/LinearLayer_3dim.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/basic_layer/__pycache__/LinearLayer_3dim.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/__pycache__/NN_adam.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/basic_layer/__pycache__/NN_adam.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/basic_layer/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/basic_layer/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/__pycache__/dataset_read.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/__pycache__/dataset_read.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/__pycache__/load_dict.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/__pycache__/load_dict.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/entity/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/entity/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/__pycache__/sample.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/entity/__pycache__/sample.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/__pycache__/samplepack.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/data_prepare/entity/__pycache__/samplepack.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/sample.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | 3 | class Sample(object): 4 | ''' 5 | 一个样本。 6 | ''' 7 | def __init__(self): 8 | self.id = -1 9 | self.session_id = -1 10 | self.click_items = [] 11 | 12 | self.items_idxes = [] 13 | 14 | self.in_idxes = [] 15 | self.out_idxes = [] 16 | self.label = [] 17 | self.pred =[] 18 | self.best_pred = [] 19 | self.ext_matrix = {'alpha':[]} # 额外数据,key是名字,value是矩阵。例如attention. 20 | 21 | def __str__(self): 22 | ret = 'id: ' + str(self.id) + '\n' 23 | ret += 'session_id: ' + str(self.session_id) + '\n' 24 | ret += 'items: '+ str(self.items_idxes) + '\n' 25 | ret += 'click_items: '+ str(self.click_items) + '\n' 26 | ret += 'out: ' + str(self.out_idxes) + '\n' 27 | ret += 'in: '+ str(self.in_idxes) + '\n' 28 | ret += 'label: '+ str(self.label) + '\n' 29 | return ret -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/entity/samplepack.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | 3 | class Samplepack(object): 4 | def __init__(self): 5 | self.samples = [] 6 | self.id2sample = {} 7 | 8 | def init_id2sample(self): 9 | if self.samples is None: 10 | raise Exception("Samples is None.", self.samples) 11 | for sample in self.samples: 12 | self.id2sample[sample.id] = sample 13 | 14 | def pack_preds(self, preds, ids): 15 | ''' 16 | preds和ids是list,二者顺序一一对应 17 | :param preds: 18 | :param ids: 19 | :return: 20 | ''' 21 | # print preds 22 | # print ids 23 | for i in range(len(ids)): 24 | self.id2sample[ids[i]].pred.append(preds[i]) 25 | def flush(self): 26 | for sample in self.samples: 27 | sample.pred = [] 28 | 29 | # 30 | def update_best(self): 31 | for sample in self.samples: 32 | sample.best_pred = sample.pred 33 | # 34 | # def pack_memories(self, memories, ids, has_eos): 35 | # for i in range(len(ids)): 36 | # sample = self.id2sample[ids[i]] 37 | # memory = memories[i] 38 | # if has_eos: 39 | # memory = memory[:-1] 40 | # sample.memory = memory 41 | 42 | def pack_ext_matrix(self, name, matrixes, ids): 43 | # matrixes维度为3,第0维对应于样本s. len(matrixes)表示样本个数. 44 | for i in range(len(ids)): 45 | # print(matrixes[i]) 46 | self.id2sample[ids[i]].ext_matrix[name].append(matrixes[i]) 47 | 48 | def transform_ext_matrix(self, matrixes): 49 | #输入为[hops,batch,time_tep],输出为[batch,hop,timestep] 50 | tra_matrix = [] 51 | for x in range(len(matrixes[0])): 52 | tra_matrix.append([]) 53 | for i in range(len(tra_matrix)): 54 | for x in matrixes: 55 | tra_matrix[i].append(x[i]) 56 | return tra_matrix -------------------------------------------------------------------------------- /algorithms/STAMP/data_prepare/load_dict.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import copy 3 | 4 | # def load_glove(pretrain_file, word2idx, pad_idx = 0, edim = 300, init_std = 0.05): 5 | # emb_dict = np.random.normal(0, init_std, [len(word2idx), edim]) 6 | # emb_dict[pad_idx] = [0.0] * edim 7 | # incnt = 0 8 | # inids = [] 9 | # inids.append(0) 10 | # not_inwords = [] 11 | # with open(pretrain_file, 'r') as f: 12 | # for line in f: 13 | # content = line.strip().split() 14 | # if content[0] in word2idx: 15 | # emb_dict[word2idx[content[0]]] = np.array(map(float, content[1:])) 16 | # incnt += 1 17 | # inids.append(word2idx[content[0]]) 18 | # print "not in the pretrain embedding glove word num:" + str(len(word2idx) - incnt) 19 | # for w in word2idx: 20 | # if word2idx[w] not in inids: 21 | # not_inwords.append(copy.deepcopy(w)) 22 | # print not_inwords 23 | # 24 | # # for w in word2idx: 25 | # # if word2idx[w] not in inids: 26 | # # print w 27 | # return emb_dict 28 | # 29 | # 30 | # def load_ssweu(pretrain_file, word2idx, pad_idx=0, edim=50, init_std=0.05): 31 | # emb_dict = np.random.normal(0, init_std, [len(word2idx), edim]) 32 | # emb_dict[pad_idx] = [0.0] * edim 33 | # incnt = 0 34 | # inids = [] 35 | # inids.append(0) 36 | # not_inwords = [] 37 | # with open(pretrain_file, 'r') as f: 38 | # for line in f: 39 | # content = line.strip().split() 40 | # if content[0] in word2idx: 41 | # emb_dict[word2idx[content[0]]] = np.array(map(float, content[1:])) 42 | # incnt += 1 43 | # inids.append(word2idx[content[0]]) 44 | # print "not in the pretrain embedding sswe word num:" + str(len(word2idx) - incnt) 45 | # for w in word2idx: 46 | # if word2idx[w] not in inids: 47 | # not_inwords.append(copy.deepcopy(w)) 48 | # print not_inwords 49 | # 50 | # # for w in word2idx: 51 | # # if word2idx[w] not in inids: 52 | # # print w 53 | # return emb_dict 54 | 55 | 56 | def load_random( word2idx, pad_idx=0, edim=300, init_std=0.05): 57 | # sigma = np.sqrt(2./(len(word2idx)-1)) 58 | emb_dict = np.random.normal(0, init_std, [len(word2idx), edim]) 59 | # emb_dict = np.random.randn(*(len(word2idx),edim))*sigma 60 | emb_dict[pad_idx] = [0.0] * edim 61 | # diag = np.ones(n_items) 62 | # emb_dict = np.diag(diag) 63 | return emb_dict 64 | 65 | -------------------------------------------------------------------------------- /algorithms/STAMP/model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/model/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/model/__pycache__/STAMP.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/model/__pycache__/STAMP.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/model/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/model/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/AccCalculater.py: -------------------------------------------------------------------------------- 1 | import time 2 | def cau_acc(pred, labels): 3 | ''' 4 | Calculate the accuracy. 5 | pred.shape = [batch_size] 6 | pred: the predict labels. 7 | 8 | labels.shape = [batch_size] 9 | labels: the gold labels. 10 | ''' 11 | acc = 0.0 12 | wrong_ids = [] 13 | for i in range(len(labels)): 14 | if labels[i] == pred[i]: 15 | acc += 1.0 16 | else: 17 | wrong_ids.append(i) 18 | acc /= len(labels) 19 | return acc, wrong_ids 20 | 21 | def cau_samples_acc(samples): 22 | acc = 0.0 23 | for sample in samples: 24 | if sample.is_pred_right(): 25 | acc += 1.0 26 | acc /= len(samples) 27 | return acc 28 | 29 | def cau_recall_mrr(preds,labels,cutoff): 30 | recall = [] 31 | mrr = [] 32 | for batch, b_label in zip(preds,labels): 33 | for step, s_label in zip(batch,b_label): 34 | ranks = (step[s_label] < step).sum() +1 35 | recall.append(ranks<=cutoff) 36 | mrr.append(1/ranks if ranks <= cutoff else 0.0) 37 | return recall, mrr 38 | 39 | def cau_recall_mrr_org(preds,labels,cutoff = 20): 40 | recall = [] 41 | mrr = [] 42 | rank_l = [] 43 | 44 | for batch, b_label in zip(preds,labels): 45 | 46 | ranks = (batch[b_label] < batch).sum() +1 47 | rank_l.append(ranks) 48 | recall.append(ranks <= cutoff) 49 | mrr.append(1/ranks if ranks <= cutoff else 0.0) 50 | return recall, mrr, rank_l 51 | 52 | def cau_recall_mrr_n(preds,labels,cutoff = 20): 53 | recall = [] 54 | mrr = [] 55 | for batch, b_label in zip(preds,labels): 56 | 57 | ranks = (batch[b_label] < batch).sum() +1 58 | 59 | recall.append(ranks <= cutoff) 60 | mrr.append(1/ranks if ranks <= cutoff else 0.0) 61 | return recall, mrr 62 | 63 | def cau_samples_recall_mrr(samples, cutoff=20): 64 | recall = 0.0 65 | mrr =0.0 66 | for sample in samples: 67 | recall += sum(x <= cutoff for x in sample.pred) 68 | mrr += sum(1/x if x <= cutoff else 0 for x in sample.pred) 69 | num = 0 70 | for sample in samples: 71 | num += len(sample.pred) 72 | recall = recall/ num 73 | mrr = mrr/num 74 | return recall , mrr 75 | 76 | def new_cau_samples_recall_mrr(samples,cutoff=20): 77 | recall = 0.0 78 | mrr =0.0 79 | for sample in samples: 80 | recall += (1 if sample.pred[0] <= cutoff else 0) 81 | mrr += (1/sample.pred[0] if sample.pred[0] <=cutoff else 0) 82 | num = len(samples) 83 | recall = recall/ num 84 | mrr = mrr/num 85 | return recall , mrr -------------------------------------------------------------------------------- /algorithms/STAMP/util/Activer.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | 4 | def activer(inputs, case='tanh'): 5 | ''' 6 | The active enter. 7 | ''' 8 | switch = { 9 | 'tanh': tanh, 10 | 'relu': relu, 11 | 'sigmoid': sigmoid, 12 | } 13 | func = switch.get(case, tanh) 14 | return func(inputs) 15 | 16 | 17 | def tanh(inputs): 18 | ''' 19 | The tanh active. 20 | ''' 21 | return tf.nn.tanh(inputs) 22 | 23 | def sigmoid(inputs): 24 | ''' 25 | The sigmoid active. 26 | ''' 27 | return tf.nn.sigmoid(inputs) 28 | 29 | 30 | def relu(inputs): 31 | ''' 32 | The relu active. 33 | ''' 34 | return tf.nn.relu(inputs) 35 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/Bitmap.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | def bitmap_by_padid(inputs, padid): 4 | ''' 5 | inputs: the tensor consists of ids. 6 | padid: the pad id. 7 | generate the bitmap according to the inputs and padid. 8 | the shape of bitmap is same as inputs. 9 | ''' 10 | ret = [] 11 | if len(np.shape(inputs)) == 1: 12 | for idx in inputs: 13 | if idx == padid: 14 | ret.append(float(0)) 15 | else: 16 | ret.append(float(1)) 17 | else: 18 | for ip in inputs: 19 | ret.append(bitmap_by_padid(ip, padid)) 20 | return ret 21 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/FileDumpLoad.py: -------------------------------------------------------------------------------- 1 | import dill as cp 2 | 3 | 4 | def dump_file(*dps): 5 | ''' 6 | dump file. 7 | dps: [data, path]s. 8 | ''' 9 | for dp in dps: 10 | if len(dp) != 2: 11 | print("issue:" + str(dp)) 12 | continue 13 | dfile = open(dp[1],'wb') 14 | cp.dump(dp[0], dfile) 15 | dfile.close() 16 | print ("dump file done.") 17 | 18 | 19 | def load_file(*ps): 20 | ''' 21 | load file. 22 | ps: [path,...]s 23 | ''' 24 | ret = [] 25 | for p in ps: 26 | dfile = open(p, 'rb') 27 | ret.append(cp.load(dfile)) 28 | return ret 29 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/Formater.py: -------------------------------------------------------------------------------- 1 | def add_pad(inputs = [], max_lens = [], pad_idx = 0): 2 | ''' 3 | Format the input to tensor. 4 | 5 | inputs.shape = [n] 6 | max_lens.shape = [n] 7 | 8 | inputs = [nip1, nip2, ..., nipn], 9 | nipi.shape = [batch_size, len(sentence)], 10 | nipi = [[id0, id1, id2, ...], [id0, id1, id2, ...], ...] 11 | 12 | max_lens = [nml1, nml2, ..., nmln] 13 | max_lens.shape = [n] 14 | nml1 = int. means the max length of the nipi's sentences. 15 | 16 | the pad is use on the second dim of the nipi. 17 | 18 | pad_idx: the padding word's id. 19 | ''' 20 | if len(inputs) != len(max_lens): 21 | print("the max_lens.len not equal the inputs.len") 22 | return 23 | for i in range(len(inputs)): 24 | nips = inputs[i] 25 | nml = max_lens[i] 26 | for nip in nips: 27 | crt_len = len(nip) 28 | for _ in range(nml - crt_len): 29 | nip.append(pad_idx) 30 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/Pooler.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | 4 | def pooler(inputs, pool_type, axis=1, **kwargs): 5 | ''' 6 | the pool function. 7 | ''' 8 | if pool_type == 'mean': 9 | return mean_pool(inputs, kwargs['sequence_length'], axis) 10 | elif pool_type == 'max': 11 | return max_pool(inputs, axis) 12 | elif pool_type == 'sum': 13 | return sum_pool(inputs, axis) 14 | 15 | 16 | def mean_pool(inputs, sequence_length=None, axis=1): 17 | ''' 18 | the mean pool function. 19 | inputs.shape = [batch_size, timestep_size, edim] 20 | sequence_length = [batch_size, 1] 21 | sequence_length = [[len(sequence)], [], ...] 22 | ''' 23 | if sequence_length is None: 24 | return tf.reduce_mean(inputs, axis) 25 | else: 26 | return tf.div(tf.reduce_sum(inputs, axis), sequence_length) 27 | 28 | 29 | def max_pool(inputs, axis=1): 30 | ''' 31 | the max pool function. 32 | ''' 33 | return tf.reduce_max(inputs, axis) 34 | 35 | 36 | def min_pool(inputs, axis=1): 37 | ''' 38 | the min pool function. 39 | ''' 40 | return tf.reduce_min(inputs, axis) 41 | 42 | 43 | def sum_pool(inputs, axis=1): 44 | ''' 45 | the add pool function. 46 | ''' 47 | return tf.reduce_sum(inputs, axis) 48 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/Printer.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import time 3 | import pickle as cp 4 | import numpy as np 5 | import sys, os 6 | 7 | def TIPrint(samples, config, acc = {},print_att = False,Time = None): 8 | base_path = os.path.realpath(__file__) 9 | bps = base_path.split("/")[1:-2] 10 | base_path = "/" 11 | for bp in bps: 12 | base_path += bp + "/" 13 | base_path += 'output/' 14 | if Time is None: 15 | suf = time.strftime("%Y%m%d%H%M", time.localtime()) 16 | else: 17 | suf = Time 18 | 19 | path = base_path + "text/" + config['model'] + "-" + config['dataset'] + "-" + suf + '.out' 20 | print_txt(path, samples, config, acc, print_att) 21 | return suf 22 | 23 | def print_txt(path, samples, config, acc = {}, print_att = False): 24 | ''' 25 | 写入文本数据,使用writer 26 | :param samples: 样本 27 | :param config: 模型参数 28 | :param acc: acc = {'max_acc':0.0, 'max_train_acc': 0.0} 29 | :return: None 30 | ''' 31 | outfile = open(path, 'w') 32 | outfile.write('accuracy:\n') 33 | for k,v in acc.items(): 34 | outfile.write(str(k) + ' :\t' + str(v) + '\n') 35 | 36 | outfile.write("\nconfig:\n") 37 | for k,v in config.items(): 38 | outfile.write(str(k) + ' :\t' + str(v) + '\n') 39 | 40 | outfile.write("\nsample:\n") 41 | for sample in samples: 42 | outfile.write("id :\t" + str(sample.id) + '\n') 43 | outfile.write("session :\t" + str(sample.session_id) + '\n') 44 | outfile.write("in_items :\t" + str(sample.in_idxes) + '\n') 45 | outfile.write("out_items :\t" + str(sample.out_idxes) + '\n') 46 | outfile.write("predict :\t" + str(sample.best_pred) + '\n') 47 | if print_att: 48 | for ext_key in sample.ext_matrix: 49 | matrixs = sample.ext_matrix[ext_key] 50 | outfile.write("attention :\t" + str(ext_key) + '\n') 51 | matrix=matrixs[-1] 52 | for i in range(len(sample.in_idxes)): 53 | outfile.write(str(sample.in_idxes[i]) + " :\t") 54 | for att in matrix: 55 | outfile.write(str(att[i]) + " ") 56 | outfile.write("\n") 57 | outfile.write("\n") 58 | outfile.close() 59 | 60 | def print_binary(path, datas): 61 | ''' 62 | 写入序列数据,用cPickle 63 | :param ids: 样本的id,需要写入文件系统的数据的id 64 | :param datas: datas = {'':[[]], ...}, [[]] 的第0个维度给出id. 需要根据ids从中挑选需要写入的数据重新构建字典 65 | :return: None 66 | ''' 67 | dfile = open(path, 'w') 68 | cp.dump(datas, dfile) 69 | dfile.close() 70 | pass 71 | 72 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/Randomer.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | class Randomer(object): 4 | stddev = None 5 | 6 | @staticmethod 7 | def random_normal(wshape): 8 | return tf.random_normal(wshape, stddev=Randomer.stddev) 9 | 10 | @staticmethod 11 | def set_stddev(sd): 12 | Randomer.stddev = sd -------------------------------------------------------------------------------- /algorithms/STAMP/util/SoftmaxMask.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | def normalizer(norm_type, inputs, seq_mask, axis = 1): 4 | switch = { 5 | 'softmax': softmax_mask, 6 | 'alpha': alpha_mask, 7 | 'sigmoid': sigmoid_mask, 8 | 'sigmoid2' : sigmoid2_mask, 9 | 'none': none_mask, 10 | } 11 | func = switch.get(norm_type, softmax_mask) 12 | return func(inputs, seq_mask, axis) 13 | def none_mask(inputs, seq_mask, axis=1): 14 | return inputs*seq_mask 15 | 16 | def softmax_mask(inputs, seq_mask, axis=1): 17 | ''' 18 | The softmax mask, use to remove the pad. 19 | 20 | :type inputs: tensor 21 | :param inputs: the inputs should use to count the softmax. 22 | 23 | :type seq_mask: tensor 24 | :param seq_mask: the mask tensor consists of 0 or 1, should 25 | has the same shape with inputs. 26 | 27 | :type axis: int 28 | :param axis: the axis of the softmax on. 29 | ''' 30 | inputs = tf.cast(inputs, tf.float32) 31 | inputs = inputs * seq_mask 32 | # max_nums = tf.reduce_max(inputs, axis, keep_dims=True) 33 | inputs = tf.exp(inputs) 34 | inputs = inputs * seq_mask 35 | _sum = tf.reduce_sum(inputs, axis=axis, keep_dims=True) + 1e-9 36 | return inputs / _sum 37 | 38 | def alpha_mask(inputs, seq_mask, axis = 1): 39 | inputs = tf.cast(inputs, tf.float32) 40 | inputs = inputs * seq_mask 41 | max_nums = tf.reduce_max(inputs, axis, keep_dims=True) 42 | inputs = tf.exp(inputs - max_nums) 43 | outputs = inputs * seq_mask 44 | return outputs 45 | 46 | def sigmod_mask(inputs, seq_mask, axis = 1): 47 | return sigmoid_mask(inputs, seq_mask, axis) 48 | 49 | def sigmoid_mask(inputs, seq_mask, axis = 1): 50 | inputs = tf.cast(inputs, tf.float32) 51 | inputs = inputs * seq_mask 52 | inputs = tf.sigmoid(inputs) 53 | outputs = inputs * seq_mask 54 | return outputs 55 | 56 | def sigmoid2_mask(inputs, seq_mask, axis = 1): 57 | outputs = sigmoid_mask(inputs, seq_mask, axis) 58 | outputs /= (tf.reduce_sum(outputs, axis, keep_dims = True) / 2) 59 | return outputs -------------------------------------------------------------------------------- /algorithms/STAMP/util/TensorGather.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | 3 | import tensorflow as tf 4 | 5 | 6 | def last_relevant(inputs, lengths): 7 | '''从rnn的输出中取出最后一个词的输出 8 | 9 | Args: 10 | :type inputs: tensor, shape = [batch_size, time_step, edim] 11 | :param inputs: rnn的输出, 12 | 13 | :type lengths: tensor, shape = [batch_size] 14 | :param lengths: rnn中各个输入的真实长度 15 | 16 | Returns: 17 | 一个shape=[batch_size, edim]的张量,第0维的每个元素是对应的Rnn的最后的输出。 18 | ''' 19 | lengths = tf.cast(lengths, dtype=tf.int32) 20 | batch_size = tf.shape(inputs)[0] 21 | time_step = tf.shape(inputs)[1] 22 | edim = tf.shape(inputs)[2] 23 | index = tf.range(0, batch_size) * time_step + (lengths - 1) 24 | flat = tf.reshape(inputs, [-1, edim]) 25 | relevant = tf.gather(flat, index) 26 | return relevant 27 | 28 | 29 | def last_relevant1(inputs, lengths): 30 | '''从rnn的输出中取出最后一个词的输出 31 | 32 | Args: 33 | :type inputs: tensor, shape = [batch_size, time_step, edim] 34 | :param inputs: rnn的输出, 35 | 36 | :type lengths: tensor, shape = [batch_size] 37 | :param lengths: rnn中各个输入的真实长度 38 | 39 | Returns: 40 | 一个shape=[batch_size, edim]的张量,第0维的每个元素是对应的Rnn的最后的输出。 41 | ''' 42 | ips = tf.unstack(inputs, axis=0) 43 | lens = tf.unstack(lengths, axis=0) 44 | reles = [] 45 | for i in range(len(lens)): 46 | reles.append(tf.gather(ips[i], tf.range(lens[i] - 1, lens[i]))) 47 | reles = tf.concat(reles, axis=1) 48 | 49 | return reles 50 | 51 | 52 | def relevants(inputs, lengths, is_concat=True): 53 | '''从rnn的输出中取出最后一个词的输出 54 | 55 | Args: 56 | :type inputs: tensor, shape = [batch_size, time_step, edim] 57 | :param inputs: rnn的输出, 58 | 59 | :type lengths: tensor, shape = [batch_size] 60 | :param lengths: rnn中各个输入的真实长度 61 | 62 | Returns: 63 | 一个shape=[batch_size * real_len, edim]的张量,第0维的每个元素是对应的Rnn的最后的输出。 64 | ''' 65 | ips = tf.unstack(inputs, axis=0) 66 | lens = tf.unstack(lengths, axis=0) 67 | reles = [] 68 | for i in range(len(lens)): 69 | reles.append(tf.gather(ips[i], tf.range(0, lens[i]))) 70 | if is_concat: 71 | reles = tf.concat(reles, axis=0) 72 | return reles 73 | 74 | -------------------------------------------------------------------------------- /algorithms/STAMP/util/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/AccCalculater.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/AccCalculater.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Activer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Activer.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/BatchData.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/BatchData.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Bitmap.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Bitmap.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Config.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Config.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/FileDumpLoad.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/FileDumpLoad.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Formater.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Formater.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Pooler.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Pooler.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Printer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Printer.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/Randomer.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/Randomer.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/SoftmaxMask.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/SoftmaxMask.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/batcher/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/batcher/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/equal_len/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/batcher/equal_len/__init__.py -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/equal_len/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/batcher/equal_len/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/equal_len/__pycache__/batcher_p.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/STAMP/util/batcher/equal_len/__pycache__/batcher_p.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/STAMP/util/batcher/equal_len/batcher_p.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | from algorithms.STAMP.util.BatchData import batch_all 3 | from algorithms.STAMP.util.Formater import add_pad 4 | from algorithms.STAMP.util.Bitmap import bitmap_by_padid 5 | import numpy as np 6 | import copy 7 | import random 8 | 9 | 10 | class batcher(object): 11 | ''' 12 | seq2seqatt batcher. 13 | ''' 14 | 15 | def __init__( 16 | self, 17 | samples, 18 | class_num = None, 19 | random=True 20 | ): 21 | ''' 22 | the init funciton. 23 | ''' 24 | # TODO 25 | self.batch_size = 0 26 | self.class_num = class_num 27 | self.len_dic={} 28 | # unpack the samples 29 | for sample in samples: 30 | len_key = len(sample.click_items) 31 | if len_key in self.len_dic: 32 | self.len_dic[len_key].append(sample) 33 | else: 34 | self.len_dic[len_key] =[sample] 35 | 36 | self.key_list = list(self.len_dic.keys()) 37 | if random is True: 38 | self.rand_idx = np.random.permutation(len(self.key_list)) 39 | else: 40 | self.rand_idx = range(0, len(self.key_list)) 41 | self.idx = 0 42 | 43 | def has_next(self): 44 | ''' 45 | is hasing next epoch. 46 | ''' 47 | if self.idx >= len(self.rand_idx): 48 | return False 49 | else: 50 | return True 51 | 52 | def next_batch(self): 53 | ''' 54 | get the netxt batch_data. 55 | ''' 56 | self.ids = [] 57 | self.in_idxes = [] 58 | self.out_idxes = [] 59 | 60 | 61 | 62 | samplelist = self.len_dic[self.key_list[self.rand_idx[self.idx]]] 63 | random.shuffle(samplelist) 64 | for sample in samplelist: 65 | self.ids.append(sample.id) 66 | self.in_idxes.append(sample.in_idxes) 67 | self.out_idxes.append(sample.out_idxes) 68 | 69 | rins, lab, rinlens, rmaxlens, rinlens_float32 = batch_all( 70 | [self.in_idxes,self.out_idxes] 71 | ) 72 | self.idx += 1 73 | in_idxes = rins[0] 74 | out_idxes = rins[1] 75 | 76 | 77 | # context bitmap. 78 | sent_bitmap = [] 79 | # row sentence lengths. 80 | sequence_lengs = rinlens[0] 81 | seq_lens = [] 82 | for x in range(len(sequence_lengs)): 83 | nl = sequence_lengs[x][0] 84 | seq_lens.append(nl) 85 | 86 | ret_data = { 87 | 'batch_ids': self.ids, 88 | 'in_idxes': in_idxes, 89 | 'out_idxes': out_idxes, 90 | 'seq_lens': seq_lens 91 | } 92 | return ret_data 93 | -------------------------------------------------------------------------------- /algorithms/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/__init__.py -------------------------------------------------------------------------------- /algorithms/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/baselines/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__init__.py -------------------------------------------------------------------------------- /algorithms/baselines/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/baselines/__pycache__/ar.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__pycache__/ar.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/baselines/__pycache__/ar_my.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__pycache__/ar_my.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/baselines/__pycache__/sr.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__pycache__/sr.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/baselines/__pycache__/sr_my.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/baselines/__pycache__/sr_my.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/filemodel/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/filemodel/__init__.py -------------------------------------------------------------------------------- /algorithms/filemodel/resultfile.py: -------------------------------------------------------------------------------- 1 | import theano.misc.pkl_utils as pickle 2 | import pandas as pd 3 | import numpy as np 4 | 5 | class ResultFile: 6 | ''' 7 | FileModel( modelfile ) 8 | Uses a trained algorithm, which was pickled to a file. 9 | 10 | Parameters 11 | ----------- 12 | modelfile : string 13 | Path of the model to load 14 | 15 | ''' 16 | 17 | def __init__(self, file): 18 | # config.experimental.unpickle_gpu_on_cpu = True 19 | self.file = file 20 | 21 | def init(self, train, test=None, slice=None): 22 | file = self.file + ( ('.' + str(slice) + '.csv') if slice is not None else '' ) 23 | if not '.csv' in file: 24 | file = file + '.csv' 25 | self.recommendations = pd.read_csv( file, sep=';' ) 26 | 27 | return 28 | 29 | def fit(self, train, test=None): 30 | 31 | self.pos = 0 32 | self.session_id = -1 33 | 34 | return 35 | 36 | def predict_next(self, session_id, input_item_id, predict_for_item_ids, skip=False, type='view', timestamp=0): 37 | ''' 38 | Gives predicton scores for a selected set of items on how likely they be the next item in the session. 39 | 40 | Parameters 41 | -------- 42 | session_id : int or string 43 | The session IDs of the event. 44 | input_item_id : int or string 45 | The item ID of the event. Must be in the set of item IDs of the training set. 46 | predict_for_item_ids : 1D array 47 | IDs of items for which the network should give prediction scores. Every ID must be in the set of item IDs of the training set. 48 | 49 | Returns 50 | -------- 51 | out : pandas.Series 52 | Prediction scores for selected items on how likely to be the next item of this session. Indexed by the item IDs. 53 | 54 | ''' 55 | 56 | if session_id != self.session_id: 57 | self.pos = 0 58 | self.session_id = session_id 59 | 60 | recs = self.recommendations[(self.recommendations.SessionId == session_id) & (self.recommendations.Position == self.pos) ] 61 | if len(recs) == 0: 62 | recs = self.recommendations[self.recommendations.SessionId == session_id] 63 | recs = recs.iloc[[self.pos]] 64 | items = recs.Recommendations.values[0] 65 | scores = recs.Scores.values[0] 66 | 67 | def convert( data, funct ): 68 | return map( lambda x: funct(x), data.split(',') ) 69 | 70 | items = convert( items, int ) 71 | scores = convert( scores, float ) 72 | 73 | res = pd.Series( index=items, data=scores ) 74 | 75 | self.pos += 1 76 | 77 | return res 78 | 79 | def clear(self): 80 | del self.recommendations 81 | -------------------------------------------------------------------------------- /algorithms/knn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/knn/__init__.py -------------------------------------------------------------------------------- /algorithms/knn/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/knn/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/knn/__pycache__/sknn.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/knn/__pycache__/sknn.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/knn/__pycache__/stan.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/knn/__pycache__/stan.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/knn/__pycache__/vsknn.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/knn/__pycache__/vsknn.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/narm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/narm/__init__.py -------------------------------------------------------------------------------- /algorithms/narm/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/narm/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/narm/__pycache__/narm.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/narm/__pycache__/narm.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/test/__pycache__/ar.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/test/__pycache__/ar.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/test/__pycache__/ar_my.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/test/__pycache__/ar_my.cpython-36.pyc -------------------------------------------------------------------------------- /algorithms/test/__pycache__/sr.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/algorithms/test/__pycache__/sr.cpython-36.pyc -------------------------------------------------------------------------------- /conf/in/rsc15_100k_test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single_all # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-100k #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-100k 9 | opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/opt/rsc15-clicks100k/ 13 | 14 | metrics_next: 15 | - class: accuracy.HitRate 16 | length: [5, 10, 20] 17 | - class: accuracy.MRR 18 | length: [5, 10, 20] 19 | - class: time_memory_usage.Time_usage_training 20 | 21 | metrics_multiple: 22 | - class: accuracy_multiple.Precision 23 | length: [5, 10, 20] 24 | - class: accuracy_multiple.Recall 25 | length: [5, 10, 20] 26 | - class: accuracy_multiple.MAP 27 | length: [5, 10, 20] 28 | - class: time_memory_usage.Time_usage_testing 29 | 30 | algorithms: 31 | # Baseline 32 | - class: baselines.ar.AssociationRules 33 | params: {} 34 | key: AssociationRules 35 | - class: swalk.swalk.SWALK 36 | params: {} 37 | key: SWALK -------------------------------------------------------------------------------- /conf/preprocess/single/diginetica.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window 3 | preprocessor: diginetica # dataset (folder) name 4 | data: 5 | folder: data/diginetica/raw/ 6 | prefix: train-item-views 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 7 14 | 15 | output: 16 | folder: data/diginetica/prepared/ -------------------------------------------------------------------------------- /conf/preprocess/single/rsc15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window 3 | preprocessor: rsc15 # 4 | data: 5 | folder: data/rsc15/raw/ 6 | prefix: rsc15-clicks 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 1 14 | 15 | output: 16 | folder: data/rsc15/prepared/ -------------------------------------------------------------------------------- /conf/preprocess/single/rsc15_4.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window 3 | preprocessor: rsc15 # 4 | data: 5 | folder: data/rsc15/raw/ 6 | prefix: rsc15-clicks 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 1 14 | last_nth: 4 #optional for rsc15_4/64 15 | 16 | output: 17 | folder: data/rsc15/prepared/ -------------------------------------------------------------------------------- /conf/preprocess/single/rsc15_64.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window 3 | preprocessor: rsc15 # 4 | data: 5 | folder: data/rsc15/raw/ 6 | prefix: rsc15-clicks 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 1 14 | last_nth: 64 #optional for rsc15_4/64 15 | 16 | output: 17 | folder: data/rsc15/prepared/ -------------------------------------------------------------------------------- /conf/preprocess/window/diginetica.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window 3 | preprocessor: diginetica # 4 | data: 5 | folder: data/diginetica/raw/ 6 | prefix: train-item-views 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 7 14 | days_train: 25 #only window 15 | num_slices: 5 #only window 16 | days_offset: 45 #only window 17 | days_shift: 18 #only window 18 | 19 | output: 20 | folder: data/diginetica/slices/ -------------------------------------------------------------------------------- /conf/preprocess/window/retailrocket.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window 3 | preprocessor: retailrocket # 4 | data: 5 | folder: data/retailrocket/raw/ 6 | prefix: events 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 2 14 | days_train: 25 #only window 15 | num_slices: 5 #only window 16 | days_offset: 0 #only window 17 | days_shift: 27 #only window 18 | 19 | output: 20 | folder: data/retailrocket/slices/ -------------------------------------------------------------------------------- /conf/preprocess/window/rsc15.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window 3 | preprocessor: rsc15 # 4 | data: 5 | folder: data/rsc15/raw/ 6 | prefix: rsc15-clicks 7 | 8 | filter: 9 | min_item_support: 5 10 | min_session_length: 2 11 | 12 | params: 13 | days_test: 1 14 | days_train: 30 #only window 15 | num_slices: 5 #only window 16 | days_offset: 5 #only window 17 | days_shift: 31 #only window 18 | 19 | output: 20 | folder: data/rsc15/slices/ -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_digi_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float32} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_digi_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_digi_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_digi_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_digi_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params_opt: 35 | decay_rate: {from: 0.0, to: 0.9, in: 10, type: float32} 36 | n_epochs: [10, 20, 30] 37 | init_lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 38 | key: stamp 39 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float32} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: nextitnet.nextitrec.Nextitrec 34 | params: {} 35 | params_opt: 36 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 37 | iterations: [10,20] 38 | is_negsample: [True,False] 39 | key: nextitnet 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/diginetica/single split/opt/single_wrongtime_digi_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params_opt: 35 | decay_rate: {from: 0.0, to: 0.9, in: 10, type: float32} 36 | n_epochs: [10, 20, 30] 37 | init_lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 38 | key: stamp 39 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/diginetica_single/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [3,5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.NDCG 20 | length: [3,5,10,15,20] 21 | - class: coverage.Coverage 22 | length: [20] 23 | - class: popularity.Popularity 24 | length: [20] 25 | - class: saver.Saver 26 | length: [50] 27 | - class: time_memory_usage.Time_usage_training 28 | - class: time_memory_usage.Time_usage_testing 29 | #- class: time_memory_usage.Memory_usage 30 | 31 | algorithms: 32 | - class: baselines.markov.MarkovModel 33 | params: {} 34 | key: markov 35 | - class: baselines.ar.AssociationRules 36 | params: {} 37 | key: ar 38 | - class: baselines.sr.SequentialRules 39 | params: { steps: 2, weighting: log } 40 | key: sr 41 | - class: knn.sknn.ContextKNN 42 | params: { k: 50, sampling: 500, similarity: cosine } 43 | key: sknn 44 | - class: knn.vsknn.VMContextKNN 45 | params: { k: 1500, sampling: 10000, weighting: quadratic , weighting_score: linear, idf_weighting: 10 } 46 | key: vsknn 47 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [3,5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.NDCG 20 | length: [3,5,10,15,20] 21 | - class: coverage.Coverage 22 | length: [20] 23 | - class: popularity.Popularity 24 | length: [20] 25 | - class: saver.Saver 26 | length: [50] 27 | - class: time_memory_usage.Time_usage_training 28 | - class: time_memory_usage.Time_usage_testing 29 | #- class: time_memory_usage.Memory_usage 30 | 31 | algorithms: 32 | - class: STAMP.model.STAMP.Seq2SeqAttNN 33 | params: { init_lr: 0.0007, n_epochs: 10, decay_rate: 0.3} 34 | key: stamp 35 | - class: narm.narm.NARM 36 | params: { epochs: 20, lr: 0.0007, factors: 50 } 37 | key: narm 38 | - class: gru4rec.gru4rec.GRU4Rec 39 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.1, learning_rate: 0.02, momentum: 0.5, constrained_embedding: True } 40 | key: gru4rec-best 41 | - class: gru4rec.gru4rec.GRU4Rec 42 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.4, learning_rate: 0.06, momentum: 0.2, constrained_embedding: True } 43 | key: gru4rec-backup 44 | - class: ct.ct.ContextTree 45 | params: {} 46 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_multiple_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | #slices: 5 11 | 12 | results: 13 | folder: results/single/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/diginetica/prepared/recs/markov } 38 | key: markov 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: data/diginetica/prepared/recs/ar } 41 | key: ar 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/diginetica/prepared/recs/sr } 44 | key: sr 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/diginetica/prepared/recs/sknn } 47 | key: sknn 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: data/diginetica/prepared/recs/vsknn } 50 | key: vsknn 51 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_multiple_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-multiple #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | #slices: 5 11 | 12 | results: 13 | folder: results/single/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/diginetica/prepared/recs/gru4rec } 38 | key: gru4rec 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: data/diginetica/prepared/recs/narm } 41 | key: narm 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/diginetica/prepared/recs/stamp } 44 | key: stamp 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/diginetica/prepared/recs/ct } 47 | key: ct 48 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_multiple_wrongtime_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselinesopt #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-multiple-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/diginetica_single/ 13 | 14 | metrics: 15 | - class: accuracy_multiple.Precision 16 | length: [3,5,10,15,20] 17 | - class: accuracy_multiple.Recall 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.MAP 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | #- class: saver.Saver 28 | # length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: filemodel.resultfile.ResultFile 35 | params: { file: data/diginetica/prepared_stamp/recs/markov } 36 | key: markov 37 | - class: filemodel.resultfile.ResultFile 38 | params: { file: data/diginetica/prepared_stamp/recs/ar } 39 | key: ar 40 | - class: filemodel.resultfile.ResultFile 41 | params: { file: data/diginetica/prepared_stamp/recs/sr } 42 | key: sr 43 | - class: filemodel.resultfile.ResultFile 44 | params: { file: data/diginetica/prepared_stamp/recs/sknn } 45 | key: sknn 46 | - class: filemodel.resultfile.ResultFile 47 | params: { file: data/diginetica/prepared_stamp/recs/vsknn } 48 | key: vsknn 49 | 50 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_multiple_wrongtime_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-multiple-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | #slices: 5 11 | 12 | results: 13 | folder: results/single/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/diginetica/prepared_stamp/recs/gru4rec-best } 38 | key: gru4rec-best 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: data/diginetica/prepared_stamp/recs/gru4rec-backup } 41 | key: gru4rec-backup 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/diginetica/prepared_stamp/recs/narm } 44 | key: narm 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/diginetica/prepared_stamp/recs/stamp } 47 | key: stamp 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: data/diginetica/prepared_stamp/recs/ct } 50 | key: ct 51 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_wrongtime_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselinesopt #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/diginetica_single/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [3,5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.NDCG 20 | length: [3,5,10,15,20] 21 | - class: coverage.Coverage 22 | length: [20] 23 | - class: popularity.Popularity 24 | length: [20] 25 | - class: saver.Saver 26 | length: [50] 27 | - class: time_memory_usage.Time_usage_training 28 | - class: time_memory_usage.Time_usage_testing 29 | #- class: time_memory_usage.Memory_usage 30 | 31 | algorithms: 32 | - class: baselines.markov.MarkovModel 33 | params: {} 34 | key: markov 35 | - class: baselines.ar.AssociationRules 36 | params: {} 37 | key: ar 38 | - class: baselines.sr.SequentialRules 39 | params: { steps: 8, weighting: quadratic } 40 | key: sr 41 | - class: knn.sknn.ContextKNN 42 | params: { k: 100, sampling: 500, similarity: cosine } 43 | key: sknn 44 | - class: knn.vsknn.VMContextKNN 45 | params: { k: 500, sampling: 10000, weighting: quadratic , weighting_score: quadratic, idf_weighting: 10 } 46 | key: vsknn 47 | -------------------------------------------------------------------------------- /conf/save/diginetica/single split/single_wrongtime_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-wrongtime #added in the end of the csv names 7 | folder: data/diginetica/prepared_stamp/ 8 | prefix: train-item-views 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/diginetica/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [3,5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.NDCG 20 | length: [3,5,10,15,20] 21 | - class: coverage.Coverage 22 | length: [20] 23 | - class: popularity.Popularity 24 | length: [20] 25 | - class: saver.Saver 26 | length: [50] 27 | - class: time_memory_usage.Time_usage_training 28 | - class: time_memory_usage.Time_usage_testing 29 | #- class: time_memory_usage.Memory_usage 30 | 31 | algorithms: 32 | - class: STAMP.model.STAMP.Seq2SeqAttNN 33 | params: { init_lr: 0.0004, n_epochs: 30, decay_rate: 0.9} 34 | key: stamp 35 | - class: narm.narm.NARM 36 | params: { epochs: 20, lr: 0.002, factors: 50 } 37 | key: narm 38 | - class: gru4rec.gru4rec.GRU4Rec 39 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.2, learning_rate: 0.05, momentum: 0.1, constrained_embedding: True } 40 | key: gru4rec-best 41 | - class: gru4rec.gru4rec.GRU4Rec 42 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.0, learning_rate: 0.07, momentum: 0.0, constrained_embedding: True } 43 | key: gru4rec-backup 44 | - class: ct.ct.ContextTree 45 | params: {} 46 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.3, to: 0.1, in: 3, type: float32}, {from: 0.01, to: 0.001, in: 10, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: nextitnet.nextitrec.Nextitrec 34 | params: {} 35 | params_opt: 36 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 37 | iterations: [10,20] 38 | is_negsample: [True,False] 39 | key: nextitnet 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt/window_digi_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: {} 35 | params_opt: 36 | decay_rate: {from: 0.0, to: 0.9, in: 10, type: float32} 37 | n_epochs: [10, 20, 30] 38 | init_lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: stamp 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.3, to: 0.1, in: 3, type: float32}, {from: 0.01, to: 0.001, in: 10, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: nextitnet.nextitrec.Nextitrec 34 | params: {} 35 | params_opt: 36 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 37 | iterations: [10,20] 38 | is_negsample: [True,False] 39 | key: nextitnet 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/diginetica/window/opt_wrongtime/window_wrongtime_digi_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/single_stamp/ 8 | prefix: train-item-views 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/diginetica_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: {} 35 | params_opt: 36 | decay_rate: {from: 0.0, to: 0.9, in: 10, type: float32} 37 | n_epochs: [10, 20, 30] 38 | init_lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: stamp 40 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/diginetica_single/ 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: baselines.markov.MarkovModel 34 | params: {} 35 | key: markov 36 | - class: baselines.ar.AssociationRules 37 | params: {} 38 | key: ar 39 | - class: baselines.sr.SequentialRules 40 | params: { steps: 20, weighting: quadratic } 41 | key: sr 42 | - class: knn.sknn.ContextKNN 43 | params: { k: 100, sampling_size: 500, similarity: cosine } 44 | key: sknn 45 | - class: knn.vsknn.VMContextKNN 46 | params: { k: 500, sampling_size: 5000, weighting: quadratic , weighting_score: div, idf_weighting: 5 } 47 | key: vsknn 48 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: { init_lr: 0.0009, n_epochs: 20, decay_rate: 0.1} 35 | key: stamp 36 | - class: narm.narm.NARM 37 | params: { epochs: 20, lr: 0.002, factors: 100 } 38 | key: narm 39 | - class: gru4rec.gru4rec.GRU4Rec 40 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.4, learning_rate: 0.05, momentum: 0, constrained_embedding: True } 41 | key: gru4rec-best 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.1, learning_rate: 0.07, momentum: 0, constrained_embedding: True } 44 | key: gru4rec-backup 45 | - class: gru4rec.gru4rec.GRU4Rec 46 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.1, learning_rate: 0.02, momentum: 0.5, constrained_embedding: True } 47 | key: gru4rec-bestsingle 48 | - class: ct.ct.ContextTree 49 | params: {} 50 | key: ct-pre 51 | - class: nextitnet.nextitrec.Nextitrec 52 | params: { learning_rate: 0.003, iterations: 10, is_negsample: False } 53 | key: nextitnet -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_multiple_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/diginetica/slices/recs/markov } 38 | key: markov 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: .data/diginetica/slices/recs/ar } 41 | key: ar 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/diginetica/slices/recs/sr } 44 | key: sr 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/diginetica/slices/recs/sknn } 47 | key: sknn 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: data/diginetica/slices/recs/vsknn } 50 | key: vsknn 51 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_multiple_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/diginetica/slices/recs/ct-pre } 38 | key: ct-pre 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: .data/diginetica/slices/recs/narm } 41 | key: narm 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/diginetica/slices/recs/stamp } 44 | key: stamp 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/diginetica/slices/recs/gru4rec-best } 47 | key: gru4rec-best 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: data/diginetica/slices/recs/gru4rec-bestsingle } 50 | key: gru4rec-bestsingle 51 | - class: filemodel.resultfile.ResultFile 52 | params: { file: data/diginetica/slices/recs/gru4rec-backup } 53 | key: gru4rec-backup 54 | - class: nextitnet.nextitrec.Nextitrec 55 | params: { learning_rate: 0.003, iterations: 10, is_negsample: False } 56 | key: nextitnet 57 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_wrongtime_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window-wrongtime #added in the end of the csv names 7 | folder: ../../data/diginetica/slices_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: baselines.markov.MarkovModel 34 | params: {} 35 | key: markov 36 | - class: baselines.ar.AssociationRules 37 | params: {} 38 | key: ar 39 | - class: baselines.sr.SequentialRules 40 | params: { steps: 30, weighting: quadratic } 41 | key: sr 42 | - class: knn.sknn.ContextKNN 43 | params: { k: 1500, sample_size: 5000, similarity: cosine } 44 | key: sknn_1500_5000 45 | - class: knn.sknn.ContextKNN 46 | params: { k: 1000, sample_size: 5000, similarity: cosine } 47 | key: sknn_1000_5000 48 | - class: knn.sknn.ContextKNN 49 | params: { k: 1000, sample_size: 10000, similarity: cosine } 50 | key: sknn_1000_10000 51 | - class: knn.vsknn.VMContextKNN 52 | params: { k: 50, sample_size: 2500, weighting: log , weighting_score: quadratic, idf_weighting: 1 } 53 | key: vsknn 54 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_wrongtime_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window-wrongtime #added in the end of the csv names 7 | folder: ../../data/diginetica/slices_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: { init_lr: 0.0008, n_epochs: 30, decay_rate: 0.0} 35 | key: stamp 36 | - class: narm.narm.NARM 37 | params: { epochs: 20, lr: 0.008, factors: 100 } 38 | key: narm 39 | - class: gru4rec.gru4rec.GRU4Rec 40 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.6, learning_rate: 0.07, momentum: 0, constrained_embedding: True } 41 | key: gru4rec-best 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.5, learning_rate: 0.09, momentum: 0, constrained_embedding: True } 44 | key: gru4rec-backup 45 | - class: nextitnet.nextitrec.Nextitrec 46 | params: { learning_rate: 0.009, iterations: 20, is_negsample: False } 47 | key: nextitnet 48 | - class: ct.ct.ContextTree 49 | params: {} 50 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_wrongtime_multiple_digi_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window-wrongtime/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/markov/test_window_baselines_diginetica-window-wrongtime.markov } 38 | key: markov 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/ar/test_window_baselines_diginetica-window-wrongtime.ar } 41 | key: ar 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/sr/test_window_baselines_diginetica-window-wrongtime.sr-steps=30-weighting=quadratic } 44 | key: sr 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/sknn_1000_5000/test_window_baselines_diginetica-window-wrongtime.sknn_1000_5000-k=1000-sample_size=5000-similarity=cosine } 47 | key: sknn_1000_5000 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/sknn_1000_10000/test_window_baselines_diginetica-window-wrongtime.sknn_1000_10000-k=1000-sample_size=10000-similarity=cosine } 50 | key: sknn_1000_10000 51 | - class: filemodel.resultfile.ResultFile 52 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/sknn_1500_5000/test_window_baselines_diginetica-window-wrongtime.sknn_1500_5000-k=1500-sample_size=5000-similarity=cosine } 53 | key: sknn_1500_5000 54 | - class: filemodel.resultfile.ResultFile 55 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/vsknn/test_window_baselines_diginetica-window-wrongtime.vsknn-k=50-sample_size=2500-weighting=log-weighting_score=quadratic-idf_weighting=1 } 56 | key: vsknn 57 | -------------------------------------------------------------------------------- /conf/save/diginetica/window/window_wrongtime_multiple_digi_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: ../../data/diginetica/slices_stamp/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 5000} 10 | slices: 5 11 | 12 | results: 13 | folder: results/window-wrongtime/diginetica/ 14 | #pickle_models: results/models/music-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | #- class: saver.Saver 30 | # length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/narm/test_window_models-narm_diginetica-window-wrongtime.narm-epochs=20-lr=0.008-factors=100 } 38 | key: narm 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/stamp/test_window_models-stamp_diginetica-window-wrongtime.stamp-init_lr=0.0008-n_epochs=30-decay_rate=0.0 } 41 | key: stamp 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/gru4rec-best/test_window_gru_diginetica-window-wrongtime.gru4rec-best-loss=top1-max-final_act=elu-0.5-dropout_p_hidden=0.6-learning_rate=0.07-momentum=0-constrained_embedding=True } 44 | key: gru4rec-best 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/gru4rec-backup/test_window_gru_diginetica-window-wrongtime.gru4rec-backup-loss=top1-max-final_act=elu-0.5-dropout_p_hidden=0.5-learning_rate=0.09-momentum=0-constrained_embedding=True } 47 | key: gru4rec-backup 48 | - class: filemodel.resultfile.ResultFile 49 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/nextitnet/test_window_models-nextitnet_diginetica-window-wrongtime.nextitnet-learning_rate=0.009-iterations=20-is_negsample=False } 50 | key: nextitnet 51 | - class: filemodel.resultfile.ResultFile 52 | params: { file: ../../data/diginetica/prepared_stamp/recommendations/ct-pre/test_window_models-ct_diginetica-window-wrongtime.ct-pre } 53 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/nowplaying/window/opt/window_aotm_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying #added in the end of the csv names 7 | folder: data/nowplaying/single/ 8 | prefix: nowplaying 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/nowplaying_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | key: vsknn -------------------------------------------------------------------------------- /conf/save/nowplaying/window/opt/window_nowplaying_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying-window #added in the end of the csv names 7 | folder: data/nowplaying/single/ 8 | prefix: nowplaying 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/nowplaying_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float32} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/opt/window_nowplaying_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying #added in the end of the csv names 7 | folder: data/nowplaying/single/ 8 | prefix: nowplaying 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/nowplaying_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | # - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: nextitnet.nextitrec.Nextitrec 34 | params: {} 35 | params_opt: 36 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 37 | iterations: [10,20,30] 38 | is_negsample: [True,False] 39 | key: nextitnet 40 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/opt/window_nowplaying_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying #added in the end of the csv names 7 | folder: data/nowplaying/single/ 8 | prefix: nowplaying 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/nowplaying_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_multiple_nowplaying_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying-multiple #added in the end of the csv names 7 | folder: data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 #only window 10 | 11 | results: 12 | folder: results/window/nowplaying/ 13 | pickle_models: results/models/nowplaying-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: baselines.markov.MarkovModel 36 | params: {} 37 | key: markov 38 | - class: baselines.ar.AssociationRules 39 | params: {} 40 | key: ar 41 | - class: baselines.sr.SequentialRules 42 | params: { steps: 9, weighting: quadratic } 43 | key: sr 44 | - class: knn.sknn.ContextKNN 45 | params: 46 | k: 50 47 | sample_size: 2500 48 | similarity: jaccard 49 | key: sknn 50 | - class: knn.vsknn.VMContextKNN 51 | params: 52 | k: 100 53 | sample_size: 2500 54 | weighting: quadratic 55 | weighting_score: quadratic 56 | key: vsknn 57 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_multiple_nowplaying_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying-multiple #added in the end of the csv names 7 | folder: data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 #only window 10 | 11 | results: 12 | folder: results/window/nowplaying/ 13 | pickle_models: results/models/nowplaying-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: STAMP.model.STAMP.Seq2SeqAttNN 36 | params: { init_lr: 0.0005, n_epochs: 20, decay_rate: 0.9} 37 | key: stamp 38 | - class: narm.narm.NARM 39 | params: { epochs: 20, lr: 0.004 } 40 | key: narm 41 | - class: gru4rec.gru4rec.GRU4Rec 42 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.6, learning_rate: 0.05, momentum: 0.1, constrained_embedding: True } 43 | key: gru4rec-best 44 | - class: gru4rec.gru4rec.GRU4Rec 45 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.0, learning_rate: 0.04, momentum: 0.0, constrained_embedding: True } 46 | key: gru4rec-backup 47 | - class: nextitnet.nextitrec.Nextitrec 48 | params: { learning_rate: 0.001, iterations: 10, is_negsample: True } 49 | key: nextitnet-pre 50 | - class: ct.ct.ContextTree 51 | params: {} 52 | key: ct-pre 53 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_multiple_nowplaying_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying-multiple #added in the end of the csv names 7 | folder: data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 #only window 10 | 11 | results: 12 | folder: results/window/nowplaying/ 13 | pickle_models: results/models/nowplaying-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: STAMP.model.STAMP.Seq2SeqAttNN 36 | params: { init_lr: 0.0007, n_epochs: 20, decay_rate: 0.4} 37 | key: stamp-second 38 | - class: STAMP.model.STAMP.Seq2SeqAttNN 39 | params: { init_lr: 0.0005, n_epochs: 20, decay_rate: 0.9} 40 | key: stamp-org 41 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_nowplaying_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nwoplaying-window #added in the end of the csv names 7 | folder: ../../data/nwoplaying/slices/ 8 | prefix: nwoplaying 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/nwoplaying/ 14 | pickle_models: results/window/nwoplaying/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [3,5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | - class: saver.Saver 28 | length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: baselines.markov.MarkovModel 35 | params: {} 36 | key: markov 37 | - class: baselines.ar.AssociationRules 38 | params: {} 39 | key: ar 40 | - class: baselines.sr.SequentialRules 41 | params: { steps: 9, weighting: quadratic } 42 | key: sr 43 | - class: knn.sknn.ContextKNN 44 | params: 45 | k: 50 46 | sample_size: 2500 47 | similarity: jaccard 48 | key: sknn 49 | - class: knn.vsknn.VMContextKNN 50 | params: 51 | k: 100 52 | sample_size: 2500 53 | weighting: quadratic 54 | weighting_score: quadratic 55 | key: vsknn 56 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_nowplaying_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying #added in the end of the csv names 7 | folder: ../../data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 #only window 10 | 11 | results: 12 | folder: results/window/nowplaying/ 13 | pickle_models: results/models/nowplaying-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [1,3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: { init_lr: 0.0005, n_epochs: 20, decay_rate: 0.9} 35 | key: stamp 36 | - class: narm.narm.NARM 37 | params: { epochs: 20, lr: 0.004 } 38 | key: narm 39 | - class: gru4rec.gru4rec.GRU4Rec 40 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.6, learning_rate: 0.05, momentum: 0.1, constrained_embedding: True } 41 | key: gru4rec-best 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.0, learning_rate: 0.04, momentum: 0.0, constrained_embedding: True } 44 | key: gru4rec-backup 45 | - class: nextitnet.nextitrec.Nextitrec 46 | params: { learning_rate: 0.001, iterations: 10, is_negsample: True } 47 | key: nextitnet-pre 48 | - class: ct.ct.ContextTree 49 | params: {} 50 | key: ct-pre 51 | -------------------------------------------------------------------------------- /conf/save/nowplaying/window/window_nowplaying_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying #added in the end of the csv names 7 | folder: data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 #only window 10 | 11 | results: 12 | folder: results/window/nowplaying/ 13 | pickle_models: results/models/nowplaying-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [1,3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: time_memory_usage.Time_usage_training 27 | - class: time_memory_usage.Time_usage_testing 28 | #- class: time_memory_usage.Memory_usage 29 | 30 | algorithms: 31 | - class: filemodel.resultfile.ResultFile 32 | params: { file: data/nowplaying/slices/recs/stamp-second } 33 | key: stamp-second 34 | - class: filemodel.resultfile.ResultFile 35 | params: { file: data/nowplaying/slices/recs/stamp-org } 36 | key: stamp-org 37 | -------------------------------------------------------------------------------- /conf/save/retailrocket/hybrids_window_retail.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: hybrids#added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailrocket #added in the end of the csv names 7 | folder: ../../data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 #only window 10 | # skip: [0,3] #only window 11 | #opts: {sessions_test: 10} 12 | 13 | results: 14 | folder: results/window/ 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [5,10,15,20] 21 | - class: coverage.Coverage 22 | length: [20] 23 | - class: popularity.Popularity 24 | length: [20] 25 | - class: time_memory_usage.Time_usage_training 26 | - class: time_memory_usage.Time_usage_testing 27 | - class: time_memory_usage.Memory_usage 28 | 29 | algorithms: 30 | - class: hybrid.weighted.WeightedHybrid 31 | params: 32 | algorithms: 33 | # - class: baselines.sr.SequentialRules 34 | # params: { weighting: div } 35 | # key: sr 36 | # - class: baselines.ar.AssociationRules 37 | # key: ar 38 | - class: filemodel.resultfile.ResultFile 39 | params: { file: ../../data/retailrocket/slices/recs/sknn } 40 | key: narm 41 | - class: filemodel.resultfile.ResultFile 42 | params: { file: ../../data/aotm/slices/recs/sr } 43 | key: sr 44 | fit: True 45 | params_var: 46 | weights: [[0.25, 0.75],[0.5, 0.5],[0.75, 0.25],[0.1, 0.9],[0.9, 0.1],[0.2, 0.8],[0.8, 0.2],[0.3, 0.7],[0.7, 0.3],[0.4, 0.6],[0.6, 0.4]] 47 | key: weighted 48 | - class: hybrid.weighted.WeightedHybrid 49 | params: 50 | algorithms: 51 | # - class: baselines.sr.SequentialRules 52 | # params: { weighting: div } 53 | # key: sr 54 | # - class: baselines.ar.AssociationRules 55 | # key: ar 56 | - class: filemodel.resultfile.ResultFile 57 | params: { file: ../../data/retailrocket/slices/recs/vsknn } 58 | key: narm 59 | - class: filemodel.resultfile.ResultFile 60 | params: { file: ../../data/aotm/slices/recs/sr } 61 | key: sr 62 | fit: True 63 | params_var: 64 | weights: [[0.25, 0.75],[0.5, 0.5],[0.75, 0.25],[0.1, 0.9],[0.9, 0.1],[0.2, 0.8],[0.8, 0.2],[0.3, 0.7],[0.7, 0.3],[0.4, 0.6],[0.6, 0.4]] 65 | key: weighted 66 | 67 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window #added in the end of the csv names 7 | folder: data/retailrocket/single/ 8 | prefix: events 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/retailrocket_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float32} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr #added in the end of the csv names 7 | folder: data/retailrocket/slices/ 8 | prefix: events 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/retailrocket_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | key: vsknn -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_knnidf.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr #added in the end of the csv names 7 | folder: data/retailrocket/slices/ 8 | prefix: events 9 | opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/opt/retailrocket_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.vmknn.VMContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | weighting: ['same','div','linear','quadratic','log'] 39 | weighting_score: ['same','div','linear','quadratic','log'] 40 | idf_weighting: [False,1,2,5,10] 41 | key: vsknn -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window #added in the end of the csv names 7 | folder: data/retailrocket/single/ 8 | prefix: events 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/retailrocket_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.0001, to: 0.001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window #added in the end of the csv names 7 | folder: data/retailrocket/single/ 8 | prefix: events 9 | opts: {sessions_test: 5000} 10 | results: 11 | folder: results/opt/retailr_window/ 12 | 13 | metrics: 14 | - class: accuracy.HitRate 15 | length: [5,10,15,20] 16 | - class: accuracy.MRR 17 | length: [5,10,15,20] 18 | - class: coverage.Coverage 19 | length: [20] 20 | - class: popularity.Popularity 21 | length: [20] 22 | - class: time_memory_usage.Time_usage_training 23 | - class: time_memory_usage.Time_usage_testing 24 | - class: time_memory_usage.Memory_usage 25 | 26 | optimize: 27 | class: accuracy.MRR 28 | length: [20] 29 | iterations: 100 #optional 30 | 31 | algorithms: 32 | - class: nextitnet.nextitrec.Nextitrec 33 | params: {} 34 | params_opt: 35 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 36 | iterations: [10,20,30] 37 | is_negsample: [True,False] 38 | key: nextitnet 39 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/opt/window_retailrocket_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr #added in the end of the csv names 7 | folder: ../../data/retailrocket/single/ 8 | prefix: events 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/retailrocket_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/retailrocket/window/window_multiple_retailr_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window-multiple #added in the end of the csv names 7 | folder: data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 10 | 11 | results: 12 | folder: results/window/retailrocket/ 13 | pickle_models: results/models/retailrocket-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: baselines.markov.MarkovModel 36 | params: {} 37 | key: markov 38 | - class: baselines.ar.AssociationRules 39 | params: {} 40 | key: ar 41 | - class: baselines.sr.SequentialRules 42 | params: { steps: 7, weighting: div } 43 | key: sr 44 | - class: knn.sknn.ContextKNN 45 | params: 46 | k: 50 47 | sample_size: 5000 48 | similarity: cosine 49 | key: sknn 50 | - class: knn.vsknn.VMContextKNN 51 | params: 52 | k: 1500 53 | sample_size: 2500 54 | weighting: same 55 | weighting_score: linear 56 | key: vsknn 57 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/window_multiple_retailr_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window-multiple #added in the end of the csv names 7 | folder: data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 10 | 11 | results: 12 | folder: results/window/retailrocket/ 13 | pickle_models: results/models/retailrocket-window/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: STAMP.model.STAMP.Seq2SeqAttNN 36 | params: { init_lr: 0.0.0008, n_epochs: 10, decay_rate: 0.6} 37 | key: stamp 38 | - class: narm.narm.NARM 39 | params: { epochs: 20, lr: 0.01 } 40 | key: narm 41 | - class: gru4rec.gru4rec.GRU4Rec 42 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.03, momentum: 0.2, constrained_embedding: True } 43 | key: gru4rec 44 | - class: ct.ct.ContextTree 45 | params: {} 46 | key: ct-pre 47 | - class: nextitnet.nextitrec.Nextitrec 48 | params: { learning_rate: 0.006, iterations: 10 } 49 | key: nextitnet 50 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/window_retailr_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window #added in the end of the csv names 7 | folder: ../../data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/retailrocket/ 14 | pickle_models: results/window/retailrocket/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [3,5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | - class: saver.Saver 28 | length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: baselines.markov.MarkovModel 35 | params: {} 36 | key: markov 37 | - class: baselines.ar.AssociationRules 38 | params: {} 39 | key: ar 40 | - class: baselines.sr.SequentialRules 41 | params: { steps: 7, weighting: div } 42 | key: sr 43 | - class: knn.sknn.ContextKNN 44 | params: 45 | k: 50 46 | sample_size: 5000 47 | similarity: cosine 48 | key: sknn 49 | - class: knn.vsknn.VMContextKNN 50 | params: 51 | k: 1500 52 | sample_size: 2500 53 | weighting: same 54 | weighting_score: linear 55 | key: vsknn 56 | -------------------------------------------------------------------------------- /conf/save/retailrocket/window/window_retailr_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models-corrected #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr #added in the end of the csv names 7 | folder: ../../data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/retailr/ 14 | pickle_models: results/models/retailr-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [3,5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | - class: saver.Saver 28 | length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: STAMP.model.STAMP.Seq2SeqAttNN 35 | params: { init_lr: 0.0008, n_epochs: 10, decay_rate: 0.6} 36 | key: stamp 37 | - class: narm.narm.NARM 38 | params: { epochs: 20, lr: 0.01 } 39 | key: narm 40 | - class: gru4rec.gru4rec.GRU4Rec 41 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.03, momentum: 0.2, constrained_embedding: True } 42 | key: gru4rec 43 | - class: ct.ct.ContextTree 44 | params: {} 45 | key: ct-pre 46 | - class: nextitnet.nextitrec.Nextitrec 47 | params: { learning_rate: 0.006, iterations: 10 } 48 | key: nextitnet 49 | -------------------------------------------------------------------------------- /conf/save/rsc15/hybrids_window_rsc15_multiple.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: hybrids_multiple#added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | data: 7 | name: rsc15-window 8 | folder: ../../data/rsc15/slices/ 9 | prefix: yoochoose-clicks-full 10 | slices: 5 11 | #opts: {sessions_test: 10} 12 | 13 | results: 14 | folder: results/window/multiple/ 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | 32 | algorithms: 33 | - class: hybrid.weighted.WeightedHybrid 34 | params: 35 | algorithms: 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: ../../data/rsc15/slices/recs/vsknn } 38 | key: vsknn 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: ../../data/rsc15/slices/recs/narm.0008} 41 | key: narm 42 | fit: True 43 | params_var: 44 | weights: [[0.25, 0.75],[0.5, 0.5],[0.75, 0.25],[0.1, 0.9],[0.9, 0.1],[0.2, 0.8],[0.8, 0.2],[0.3, 0.7],[0.7, 0.3],[0.4, 0.6],[0.6, 0.4]] 45 | key: weighted 46 | - class: hybrid.weighted.WeightedHybrid 47 | params: 48 | algorithms: 49 | - class: filemodel.resultfile.ResultFile 50 | params: { file: ../../data/rsc15/slices/recs/sr } 51 | key: vsknn 52 | - class: filemodel.resultfile.ResultFile 53 | params: { file: ../../data/rsc15/slices/recs/narm.0008} 54 | key: narm 55 | fit: True 56 | params_var: 57 | weights: [[0.25, 0.75],[0.5, 0.5],[0.75, 0.25],[0.1, 0.9],[0.9, 0.1],[0.2, 0.8],[0.8, 0.2],[0.3, 0.7],[0.7, 0.3],[0.4, 0.6],[0.6, 0.4]] 58 | key: weighted 59 | 60 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/opt/window_rsc15_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/single/ 8 | prefix: yoochoose-clicks-full 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/opt/window_rsc15_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: ../../data/rsc15/single/ 8 | prefix: yoochoose-clicks-full 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15/window/opt/window_rsc15_knnidf.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/single/ 8 | prefix: yoochoose-clicks-full 9 | opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/opt/rsc15_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.vmknn.VMContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | weighting: ['same','div','linear','quadratic','log'] 39 | weighting_score: ['same','div','linear','quadratic','log'] 40 | idf_weighting: [False,1,2,5,10] 41 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15/window/opt/window_rsc15_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: nextitnet #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/single/ 8 | prefix: yoochoose-clicks-full 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | - class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: nextitnet.nextitrec.Nextitrec 34 | params: {} 35 | params_opt: 36 | learning_rate: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.0001, to: 0.001, in: 10, type: float32}] 37 | iterations: [10,20,30] 38 | is_negsample: [True,False] 39 | key: nextitnet 40 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/opt/window_rsc15_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: ../../data/rsc15/single/ 8 | prefix: yoochoose-clicks-full 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_window/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_multiple_rsc15_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-multiple #added in the end of the csv names 7 | folder: ../../data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/rsc15/ 14 | pickle_models: results/models/rsc15-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | - class: saver.Saver 30 | length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: baselines.markov.MarkovModel 37 | params: {} 38 | key: markov 39 | - class: baselines.ar.AssociationRules 40 | params: {} 41 | key: ar 42 | - class: baselines.sr.SequentialRules 43 | params: { steps: 8, weighting: div } 44 | key: sr 45 | - class: knn.sknn.ContextKNN 46 | params: 47 | k: 500 48 | sample_size: 10000 49 | similarity: jaccard 50 | key: sknn 51 | - class: knn.vsknn.VMContextKNN 52 | params: 53 | k: 100 54 | sample_size: 1000 55 | weighting: quadratic 56 | weighting_score: quadratic 57 | key: vsknn 58 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_multiple_rsc15_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-multiple #added in the end of the csv names 7 | folder: ../../data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/rsc15/ 14 | pickle_models: results/models/rsc15-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy_multiple.Precision 18 | length: [3,5,10,15,20] 19 | - class: accuracy_multiple.Recall 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.MAP 22 | length: [3,5,10,15,20] 23 | - class: accuracy_multiple.NDCG 24 | length: [3,5,10,15,20] 25 | - class: coverage.Coverage 26 | length: [20] 27 | - class: popularity.Popularity 28 | length: [20] 29 | - class: saver.Saver 30 | length: [50] 31 | - class: time_memory_usage.Time_usage_training 32 | - class: time_memory_usage.Time_usage_testing 33 | #- class: time_memory_usage.Memory_usage 34 | 35 | algorithms: 36 | - class: STAMP.model.STAMP.Seq2SeqAttNN 37 | params: { init_lr: 0.0007, n_epochs: 20, decay_rate: 0.0} 38 | key: stamp 39 | - class: narm.narm.NARM 40 | params: { epochs: 20, lr: 0.0008 } 41 | key: narm 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.04, momentum: 0.0, constrained_embedding: True } 44 | key: gru4rec-best 45 | - class: gru4rec.gru4rec.GRU4Rec 46 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.2, learning_rate: 0.4, momentum: 0.0 } 47 | key: gru4rec-backup 48 | - class: ct.ct.ContextTree 49 | params: {} 50 | key: ct-pre 51 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: ../../data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/rsc15/ 14 | pickle_models: results/window/rsc15/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [3,5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | - class: saver.Saver 28 | length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: baselines.markov.MarkovModel 35 | params: {} 36 | key: markov 37 | - class: baselines.ar.AssociationRules 38 | params: {} 39 | key: ar 40 | - class: baselines.sr.SequentialRules 41 | params: { steps: 8, weighting: div } 42 | key: sr 43 | - class: knn.sknn.ContextKNN 44 | params: 45 | k: 500 46 | sample_size: 10000 47 | similarity: jaccard 48 | key: sknn 49 | - class: knn.vsknn.VMContextKNN 50 | params: 51 | k: 100 52 | sample_size: 1000 53 | weighting: quadratic 54 | weighting_score: quadratic 55 | key: vsknn 56 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_memory.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15 #added in the end of the csv names 7 | folder: ../../data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | skip: [1,2,3,4] 11 | opts: {sessions_test: 2000} 12 | 13 | results: 14 | folder: results/window/memory/rsc15/ 15 | pickle_models: results/models/rsc15-window/ # not working for tensorflow models 16 | 17 | metrics: 18 | - class: time_memory_usage.Memory_usage 19 | 20 | algorithms: 21 | - class: gru4rec.gru4rec.GRU4Rec 22 | params: { n_epochs: 0} 23 | key: gru4rec-best 24 | - class: STAMP.model.STAMP.Seq2SeqAttNN 25 | params: { n_epochs: 0} 26 | key: stamp 27 | - class: narm.narm.NARM 28 | params: { epochs: 0 } 29 | key: narm 30 | - class: nextitnet.nextitrec.Nextitrec 31 | params: { iterations: 0 } 32 | key: nextitnet 33 | -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15 #added in the end of the csv names 7 | folder: ../../data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | #opts: {sessions_test: 10} 11 | 12 | results: 13 | folder: results/window/rsc15/ 14 | pickle_models: results/models/rsc15-window/ # not working for tensorflow models 15 | 16 | metrics: 17 | - class: accuracy.HitRate 18 | length: [3,5,10,15,20] 19 | - class: accuracy.MRR 20 | length: [3,5,10,15,20] 21 | - class: accuracy_multiple.NDCG 22 | length: [3,5,10,15,20] 23 | - class: coverage.Coverage 24 | length: [20] 25 | - class: popularity.Popularity 26 | length: [20] 27 | - class: saver.Saver 28 | length: [50] 29 | - class: time_memory_usage.Time_usage_training 30 | - class: time_memory_usage.Time_usage_testing 31 | #- class: time_memory_usage.Memory_usage 32 | 33 | algorithms: 34 | - class: STAMP.model.STAMP.Seq2SeqAttNN 35 | params: { init_lr: 0.0007, n_epochs: 20, decay_rate: 0.0} 36 | key: stamp 37 | - class: narm.narm.NARM 38 | params: { epochs: 20, lr: 0.0008 } 39 | key: narm 40 | - class: gru4rec.gru4rec.GRU4Rec 41 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.04, momentum: 0.0, constrained_embedding: True } 42 | key: gru4rec-best 43 | - class: gru4rec.gru4rec.GRU4Rec 44 | params: { loss: 'top1-max', final_act: 'elu-0.5', dropout_p_hidden: 0.2, learning_rate: 0.4, momentum: 0.0 } 45 | key: gru4rec-backup 46 | - class: ct.ct.ContextTree 47 | params: {} 48 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_time.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: time #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | skip: [1,2,3,4] 11 | opts: {sessions_test: 1000} 12 | 13 | results: 14 | folder: results/window/rsc15/ 15 | #pickle_models: results/models/rsc15-window/ # not working for tensorflow models 16 | 17 | metrics: 18 | - class: accuracy.HitRate 19 | length: [3,5,10,15,20] 20 | - class: accuracy.MRR 21 | length: [3,5,10,15,20] 22 | - class: time_memory_usage.Time_usage_training 23 | - class: time_memory_usage.Time_usage_testing 24 | - class: time_memory_usage.Memory_usage 25 | 26 | algorithms: 27 | - class: STAMP.model.STAMP.Seq2SeqAttNN 28 | params: { init_lr: 0.0007, n_epochs: 1, decay_rate: 0.0} 29 | key: stamp 30 | - class: narm.narm.NARM 31 | params: { epochs: 1, lr: 0.0008 } 32 | key: narm 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: { n_epochs: 1, loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.04, momentum: 0.0, constrained_embedding: True } 35 | key: gru4rec 36 | - class: ct.ct.ContextTree 37 | params: {} 38 | key: ct-pre 39 | - class: baselines.markov.MarkovModel 40 | params: {} 41 | key: markov 42 | - class: baselines.ar.AssociationRules 43 | params: {} 44 | key: ar 45 | - class: baselines.sr.SequentialRules 46 | params: { steps: 8, weighting: div } 47 | key: sr 48 | - class: knn.sknn.ContextKNN 49 | params: 50 | k: 500 51 | sample_size: 10000 52 | similarity: jaccard 53 | key: sknn 54 | - class: knn.vsknn.VMContextKNN 55 | params: 56 | k: 100 57 | sample_size: 1000 58 | weighting: quadratic 59 | weighting_score: quadratic 60 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_time_ct.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: time-ct #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | skip: [1,2,3,4] 11 | opts: {sessions_test: 500} 12 | 13 | results: 14 | folder: results/window/rsc15/ 15 | #pickle_models: results/models/rsc15-window/ # not working for tensorflow models 16 | 17 | metrics: 18 | - class: accuracy.HitRate 19 | length: [3,5,10,15,20] 20 | - class: accuracy.MRR 21 | length: [3,5,10,15,20] 22 | - class: time_memory_usage.Time_usage_training 23 | - class: time_memory_usage.Time_usage_testing 24 | - class: time_memory_usage.Memory_usage 25 | 26 | algorithms: 27 | - class: ct.ct.ContextTree 28 | params: {} 29 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/rsc15/window/window_rsc15_time_nextitnet.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window # single|window, maybe add opt 3 | key: time-nin #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/slices/ 8 | prefix: yoochoose-clicks-full 9 | slices: 5 10 | skip: [1,2,3,4] 11 | opts: {sessions_test: 500} 12 | 13 | results: 14 | folder: results/window/rsc15/ 15 | #pickle_models: results/models/rsc15-window/ # not working for tensorflow models 16 | 17 | metrics: 18 | - class: accuracy.HitRate 19 | length: [3,5,10,15,20] 20 | - class: accuracy.MRR 21 | length: [3,5,10,15,20] 22 | - class: time_memory_usage.Time_usage_training 23 | - class: time_memory_usage.Time_usage_testing 24 | - class: time_memory_usage.Memory_usage 25 | 26 | algorithms: 27 | - class: nextitnet.nextitrec.Nextitrec 28 | params: { learning_rate: 0.001, iterations: 1 } 29 | key: nextitnet -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/opt/single_rsc15_4_gru.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: gru #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_4/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: gru4rec.gru4rec.GRU4Rec 34 | params: {} 35 | params_opt: 36 | loss: ['bpr-max', 'top1-max'] 37 | final_act: ['elu-0.5','linear'] 38 | dropout_p_hidden: {from: 0.0, to: 0.9, in: 10, type: float32} 39 | momentum: {from: 0.0, to: 0.9, in: 10, type: float32} 40 | learning_rate: [ {from: 0.1, to: 0.01, in: 10, type: float32}, {from: 0.5, to: 0.1, in: 5, type: float32} ] 41 | constrained_embedding: [True,False] 42 | key: gru4rec 43 | -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/opt/single_rsc15_4_narm.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: narm #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_4/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: narm.narm.NARM 34 | params: { epochs: 20 } 35 | params_opt: 36 | factors: [50, 100] 37 | hidden_units: [50, 100] 38 | lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 39 | key: narm 40 | -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/opt/single_rsc15_4_stamp.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: stamp #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_4/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 50 #optional 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params_opt: 35 | decay_rate: {from: 0.0, to: 0.9, in: 10, type: float32} 36 | n_epochs: [10, 20, 30] 37 | init_lr: [{from: 0.01, to: 0.001, in: 10, type: float32},{from: 0.001, to: 0.0001, in: 10, type: float32}] 38 | key: stamp 39 | -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/opt/single_rsc_15_4_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_4/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/opt/single_rsc_15_4_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_4/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/single_multiple_rsc15_4_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4-multiple #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | pickle_models: results/models/rsc15_4/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: filemodel.resultfile.ResultFile 34 | params: { file: data/rsc15/prepared/recs_4/markov } 35 | key: markov 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/rsc15/prepared/recs_4/ar } 38 | key: ar 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: data/rsc15/prepared/recs_4/sr } 41 | key: sr 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/rsc15/prepared/recs_4/sknn } 44 | key: sknn 45 | - class: filemodel.resultfile.ResultFile 46 | params: { file: data/rsc15/prepared/recs_4/vsknn } 47 | key: vsknn 48 | -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/single_multiple_rsc15_4_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4-multiple #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | pickle_models: results/models/rsc15_4/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: filemodel.resultfile.ResultFile 34 | params: { file: data/rsc15/prepared/recs_4/stamp } 35 | key: stamp 36 | - class: filemodel.resultfile.ResultFile 37 | params: { file: data/rsc15/prepared/recs_4/narm } 38 | key: narm 39 | - class: filemodel.resultfile.ResultFile 40 | params: { file: data/rsc15/prepared/recs_4/gru4rec1 } 41 | key: gru4rec1 42 | - class: filemodel.resultfile.ResultFile 43 | params: { file: data/rsc15/prepared/recs_4/gru4rec2 } 44 | key: gru4rec2 -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/single_rsc15_4_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | pickle_models: results/models/rsc15_4/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: baselines.markov.MarkovModel 34 | params: {} 35 | key: markov 36 | - class: baselines.ar.AssociationRules 37 | params: {} 38 | key: ar 39 | - class: baselines.sr.SequentialRules 40 | params: { steps: 2, weighting: log } 41 | key: sr 42 | - class: knn.sknn.ContextKNN 43 | params: { k: 1500, sampling: 500, similarity: jaccard } 44 | key: sknn 45 | - class: knn.vsknn.VMContextKNN 46 | params: { k: 1000, sampling: 1000, weighting: log , weighting_score: quadratic, idf_weighting: 5 } 47 | key: vsknn 48 | -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/single_rsc15_4_ct.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: ct #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: ../../data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | pickle_models: results/models/rsc15_4/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: coverage.Coverage 21 | length: [20] 22 | - class: popularity.Popularity 23 | length: [20] 24 | - class: saver.Saver 25 | length: [50] 26 | - class: time_memory_usage.Time_usage_training 27 | - class: time_memory_usage.Time_usage_testing 28 | #- class: time_memory_usage.Memory_usage 29 | 30 | algorithms: 31 | - class: ct.ct.ContextTree 32 | params: {} 33 | key: ct-pre -------------------------------------------------------------------------------- /conf/save/rsc15_4/single split/single_rsc15_4_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-4 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | pickle_models: results/models/rsc15_4/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: { init_lr: 0.0002, n_epochs: 20, decay_rate: 0.2} 35 | key: stamp 36 | - class: narm.narm.NARM 37 | params: { epochs: 20, lr: 0.002 } 38 | key: narm 39 | - class: gru4rec.gru4rec.GRU4Rec 40 | params: { loss: 'bpr-max', final_act: 'linear', dropout_p_hidden: 0.1, learning_rate: 0.09, momentum: 0.0, constrained_embedding: True } 41 | key: gru4rec1 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'top1-max', final_act: 'linear', dropout_p_hidden: 0.3, learning_rate: 0.08, momentum: 0.0, constrained_embedding: True } 44 | key: gru4rec2 -------------------------------------------------------------------------------- /conf/save/rsc15_64/single split/opt/single_rsc_15_64_knn.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: knn #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-64 #added in the end of the csv names 7 | folder: ../../data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_64/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: knn.sknn.ContextKNN 34 | params: {} 35 | params_opt: 36 | k: [50,100,500,1000,1500] 37 | sample_size: [500,1000,2500,5000,10000] 38 | similarity: ['cosine','jaccard'] 39 | key: sknn 40 | - class: knn.vsknn.VMContextKNN 41 | params: {} 42 | params_opt: 43 | k: [50,100,500,1000,1500] 44 | sample_size: [500,1000,2500,5000,10000] 45 | weighting: ['same','div','linear','quadratic','log'] 46 | weighting_score: ['same','div','linear','quadratic','log'] 47 | idf_weighting: [False,1,2,5,10] 48 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15_64/single split/opt/single_rsc_15_64_sr.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: opt # single|window, maybe add opt 3 | key: sr #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-64 #added in the end of the csv names 7 | folder: ../../data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | opts: {sessions_test: 5000} 10 | 11 | results: 12 | folder: results/opt/rsc15_64/ 13 | 14 | metrics: 15 | - class: accuracy.HitRate 16 | length: [5,10,15,20] 17 | - class: accuracy.MRR 18 | length: [5,10,15,20] 19 | - class: coverage.Coverage 20 | length: [20] 21 | - class: popularity.Popularity 22 | length: [20] 23 | - class: time_memory_usage.Time_usage_training 24 | - class: time_memory_usage.Time_usage_testing 25 | #- class: time_memory_usage.Memory_usage 26 | 27 | optimize: 28 | class: accuracy.MRR 29 | length: [20] 30 | iterations: 100 #optional 31 | 32 | algorithms: 33 | - class: baselines.sr.SequentialRules 34 | params: {} 35 | params_opt: 36 | steps: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,25,30] 37 | weighting: ['linear','div','quadratic','log'] 38 | key: sr -------------------------------------------------------------------------------- /conf/save/rsc15_64/single_multiple_rsc15_64_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_64_multiple/ 13 | pickle_models: results/models/rsc15_64/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: baselines.markov.MarkovModel 36 | params: {} 37 | key: markov 38 | - class: baselines.ar.AssociationRules 39 | params: {} 40 | key: ar 41 | - class: baselines.sr.SequentialRules 42 | params: { steps: 4, weighting: quadratic } 43 | key: sr 44 | - class: knn.sknn.ContextKNN 45 | params: 46 | k: 500 47 | sample_size: 1000 48 | similarity: cosine 49 | key: sknn 50 | - class: knn.vsknn.VMContextKNN 51 | params: 52 | k: 1000 53 | sample_size: 5000 54 | weighting: log 55 | weighting_score: quadratic 56 | idf_weighting: 2 57 | key: vsknn 58 | -------------------------------------------------------------------------------- /conf/save/rsc15_64/single_multiple_rsc15_64_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation_multiple #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: ../../data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_64_multiple/ 13 | pickle_models: results/models/rsc15_64/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy_multiple.Precision 17 | length: [3,5,10,15,20] 18 | - class: accuracy_multiple.Recall 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.MAP 21 | length: [3,5,10,15,20] 22 | - class: accuracy_multiple.NDCG 23 | length: [3,5,10,15,20] 24 | - class: coverage.Coverage 25 | length: [20] 26 | - class: popularity.Popularity 27 | length: [20] 28 | - class: saver.Saver 29 | length: [50] 30 | - class: time_memory_usage.Time_usage_training 31 | - class: time_memory_usage.Time_usage_testing 32 | #- class: time_memory_usage.Memory_usage 33 | 34 | algorithms: 35 | - class: STAMP.model.STAMP.Seq2SeqAttNN 36 | params: { init_lr: 0.0004, n_epochs: 30, decay_rate: 0.4} 37 | key: stamp 38 | - class: narm.narm.NARM 39 | params: { epochs: 20, lr: 0.005 } 40 | key: narm 41 | - class: nextitnet.nextitrec.Nextitrec 42 | params: { learning_rate: 0.001, iterations: 10 } 43 | key: nextitnet 44 | - class: gru4rec.gru4rec.GRU4Rec 45 | params: { loss: 'bpr-max', final_act: 'linear', dropout_p_hidden: 0.1, learning_rate: 0.05, momentum: 0.3 } 46 | key: gru4rec-m1 47 | - class: gru4rec.gru4rec.GRU4Rec 48 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.0, learning_rate: 0.2, momentum: 0.3 } 49 | key: gru4rec-default 50 | - class: ct.ct.ContextTree 51 | params: {} 52 | key: ct-pre 53 | -------------------------------------------------------------------------------- /conf/save/rsc15_64/single_rsc15_64_baselines.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: baselines #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_64/ 13 | pickle_models: results/models/rsc15_64/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [3,5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [3,5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: baselines.markov.MarkovModel 34 | params: {} 35 | key: markov 36 | - class: baselines.ar.AssociationRules 37 | params: {} 38 | key: ar 39 | - class: baselines.sr.SequentialRules 40 | params: { steps: 4, weighting: quadratic } 41 | key: sr 42 | - class: knn.sknn.ContextKNN 43 | params: { k: 500, sampling: 1000, similarity: cosine } 44 | key: sknn 45 | - class: knn.vsknn.VMContextKNN 46 | params: { k: 1000, sampling: 5000, weighting: log, weighting_score: quadratic, idf_weighting: 2 } 47 | key: vsknn -------------------------------------------------------------------------------- /conf/save/rsc15_64/single_rsc15_64_models.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single # single|window, maybe add opt 3 | key: models #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: yoochoose-clicks-full-64 9 | #opts: {sessions_test: 10} 10 | 11 | results: 12 | folder: results/single/rsc15_64/ 13 | pickle_models: results/models/rsc15_64/ # not working for tensorflow models 14 | 15 | metrics: 16 | - class: accuracy.HitRate 17 | length: [5,10,15,20] 18 | - class: accuracy.MRR 19 | length: [5,10,15,20] 20 | - class: accuracy_multiple.NDCG 21 | length: [3,5,10,15,20] 22 | - class: coverage.Coverage 23 | length: [20] 24 | - class: popularity.Popularity 25 | length: [20] 26 | - class: saver.Saver 27 | length: [50] 28 | - class: time_memory_usage.Time_usage_training 29 | - class: time_memory_usage.Time_usage_testing 30 | #- class: time_memory_usage.Memory_usage 31 | 32 | algorithms: 33 | - class: STAMP.model.STAMP.Seq2SeqAttNN 34 | params: { init_lr: 0.0004, n_epochs: 30, decay_rate: 0.4} 35 | key: stamp 36 | - class: narm.narm.NARM 37 | params: { epochs: 20, lr: 0.005 } 38 | key: narm 39 | - class: nextitnet.nextitrec.Nextitrec 40 | params: { learning_rate: 0.001, iterations: 10 } 41 | key: nextitnet 42 | - class: gru4rec.gru4rec.GRU4Rec 43 | params: { loss: 'bpr-max', final_act: 'elu-0.5', dropout_p_hidden: 0.5, learning_rate: 0.01, momentum: 0.8 } 44 | key: gru4rec 45 | -------------------------------------------------------------------------------- /conf/save_swalk/1fold_digi_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single_all # single|single_all|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica #added in the end of the csv names 7 | folder: data/diginetica/prepared/ 8 | prefix: train-item-views 9 | # opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/next/diginetica/ 13 | 14 | metrics_next: 15 | - class: time_memory_usage.Time_usage_training 16 | - class: accuracy.HitRate 17 | length: [1, 3, 5, 10, 20] 18 | - class: accuracy.MRR 19 | length: [1, 3, 5, 10, 20] 20 | 21 | metrics_multiple: 22 | - class: accuracy_multiple.Precision 23 | length: [1, 3, 5, 10, 20] 24 | - class: accuracy_multiple.Recall 25 | length: [1, 3, 5, 10, 20] 26 | - class: accuracy_multiple.MAP 27 | length: [1, 3, 5, 10, 20] 28 | - class: coverage.Coverage 29 | length: [1, 3, 5, 10, 20] 30 | - class: popularity.Popularity 31 | length: [1, 3, 5, 10, 20] 32 | - class: time_memory_usage.Time_usage_testing 33 | 34 | algorithms: 35 | - class: swalk.swalk.SWALK 36 | params: {model1: SLIT, model2: SLIS, p: 0.5, recwalk_dense: True, reg: 10, train_weight: 0.5, predict_weight: 2, session_weight: 64, beta: 0.9} 37 | key: SWALK -------------------------------------------------------------------------------- /conf/save_swalk/1fold_rsc15_4_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_4 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: rsc15-clicks4 9 | # opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/single/rsc15_4/ 13 | 14 | metrics_next: 15 | - class: time_memory_usage.Time_usage_training 16 | - class: accuracy.HitRate 17 | length: [1, 3, 5, 10, 20] 18 | - class: accuracy.MRR 19 | length: [1, 3, 5, 10, 20] 20 | 21 | metrics_multiple: 22 | - class: accuracy_multiple.Precision 23 | length: [1, 3, 5, 10, 20] 24 | - class: accuracy_multiple.Recall 25 | length: [1, 3, 5, 10, 20] 26 | - class: accuracy_multiple.MAP 27 | length: [1, 3, 5, 10, 20] 28 | - class: coverage.Coverage 29 | length: [1, 3, 5, 10, 20] 30 | - class: popularity.Popularity 31 | length: [1, 3, 5, 10, 20] 32 | - class: time_memory_usage.Time_usage_testing 33 | 34 | algorithms: 35 | - class: swalk.swalk.SWALK 36 | params: {model1: SLIT, model2: SLIS, p: 0.5, epsilon: 10, recwalk_dense: True, reg: 10, train_weight: 1, predict_weight: 1, session_weight: 8, beta: 0.7} 37 | key: SWALK -------------------------------------------------------------------------------- /conf/save_swalk/1fold_rsc15_64_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: single_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15_64 #added in the end of the csv names 7 | folder: data/rsc15/prepared/ 8 | prefix: rsc15-clicks64 9 | # opts: {sessions_test: 1000} 10 | 11 | results: 12 | folder: results/single/rsc15_64/ 13 | 14 | metrics_next: 15 | - class: time_memory_usage.Time_usage_training 16 | - class: accuracy.HitRate 17 | length: [1, 3, 5, 10, 20] 18 | - class: accuracy.MRR 19 | length: [1, 3, 5, 10, 20] 20 | 21 | metrics_multiple: 22 | - class: accuracy_multiple.Precision 23 | length: [1, 3, 5, 10, 20] 24 | - class: accuracy_multiple.Recall 25 | length: [1, 3, 5, 10, 20] 26 | - class: accuracy_multiple.MAP 27 | length: [1, 3, 5, 10, 20] 28 | - class: coverage.Coverage 29 | length: [1, 3, 5, 10, 20] 30 | - class: popularity.Popularity 31 | length: [1, 3, 5, 10, 20] 32 | - class: time_memory_usage.Time_usage_testing 33 | 34 | algorithms: 35 | - class: swalk.swalk.SWALK 36 | params: {model1: SLIT, model2: SLIS, p: 0.5, epsilon: 10, recwalk_dense: True, reg: 10, train_weight: 0.25, predict_weight: 1, session_weight: 4, beta: 0.7} 37 | key: SWALK -------------------------------------------------------------------------------- /conf/save_swalk/5fold_digi_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: diginetica-window #added in the end of the csv names 7 | folder: data/diginetica/slices/ 8 | prefix: train-item-views 9 | slices: 5 10 | # opts: {sessions_test: 1000} 11 | 12 | results: 13 | folder: results/window/diginetica/ 14 | 15 | metrics_next: 16 | - class: time_memory_usage.Time_usage_training 17 | - class: accuracy.HitRate 18 | length: [1, 3, 5, 10, 20] 19 | - class: accuracy.MRR 20 | length: [1, 3, 5, 10, 20] 21 | 22 | metrics_multiple: 23 | - class: accuracy_multiple.Precision 24 | length: [1, 3, 5, 10, 20] 25 | - class: accuracy_multiple.Recall 26 | length: [1, 3, 5, 10, 20] 27 | - class: accuracy_multiple.MAP 28 | length: [1, 3, 5, 10, 20] 29 | - class: coverage.Coverage 30 | length: [1, 3, 5, 10, 20] 31 | - class: popularity.Popularity 32 | length: [1, 3, 5, 10, 20] 33 | - class: time_memory_usage.Time_usage_testing 34 | 35 | algorithms: 36 | - class: swalk.swalk.SWALK 37 | params: {model1: SLIT, model2: SLIS, p: 0.5, recwalk_dense: True, reg: 10, train_weight: 1, predict_weight: 2, session_weight: 128} 38 | key: SWALK 39 | -------------------------------------------------------------------------------- /conf/save_swalk/5fold_nowp_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: nowplaying-window #added in the end of the csv names 7 | folder: data/nowplaying/slices/ 8 | prefix: nowplaying 9 | slices: 5 10 | # opts: {sessions_test: 1000} 11 | 12 | results: 13 | folder: results/window/nowplaying/ 14 | 15 | metrics_next: 16 | - class: time_memory_usage.Time_usage_training 17 | - class: accuracy.HitRate 18 | length: [1, 3, 5, 10, 20] 19 | - class: accuracy.MRR 20 | length: [1, 3, 5, 10, 20] 21 | 22 | metrics_multiple: 23 | - class: accuracy_multiple.Precision 24 | length: [1, 3, 5, 10, 20] 25 | - class: accuracy_multiple.Recall 26 | length: [1, 3, 5, 10, 20] 27 | - class: accuracy_multiple.MAP 28 | length: [1, 3, 5, 10, 20] 29 | - class: coverage.Coverage 30 | length: [1, 3, 5, 10, 20] 31 | - class: popularity.Popularity 32 | length: [1, 3, 5, 10, 20] 33 | - class: time_memory_usage.Time_usage_testing 34 | 35 | algorithms: 36 | - class: swalk.swalk.SWALK 37 | params: {model1: SLIT, model2: SLIS, p: 0.5, recwalk_dense: True, reg: 10, train_weight: 1, predict_weight: 1, session_weight: 128, beta: 0.9} 38 | key: SWALK -------------------------------------------------------------------------------- /conf/save_swalk/5fold_rr_swalk.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: retailr-window-multiple #added in the end of the csv names 7 | folder: data/retailrocket/slices/ 8 | prefix: events 9 | slices: 5 10 | # opts: {sessions_test: 1000} 11 | 12 | results: 13 | folder: results/window/retailrocket/ 14 | 15 | metrics_next: 16 | - class: time_memory_usage.Time_usage_training 17 | - class: accuracy.HitRate 18 | length: [1, 3, 5, 10, 20] 19 | - class: accuracy.MRR 20 | length: [1, 3, 5, 10, 20] 21 | 22 | metrics_multiple: 23 | - class: accuracy_multiple.Precision 24 | length: [1, 3, 5, 10, 20] 25 | - class: accuracy_multiple.Recall 26 | length: [1, 3, 5, 10, 20] 27 | - class: accuracy_multiple.MAP 28 | length: [1, 3, 5, 10, 20] 29 | - class: coverage.Coverage 30 | length: [1, 3, 5, 10, 20] 31 | - class: popularity.Popularity 32 | length: [1, 3, 5, 10, 20] 33 | - class: time_memory_usage.Time_usage_testing 34 | 35 | algorithms: 36 | - class: swalk.swalk.SWALK 37 | params: {model1: SLIT, model2: SLIS, p: 0.5, recwalk_dense: True, reg: 10, train_weight: 0.25, predict_weight: 4, session_weight: 256, beta: 0.9} 38 | key: SWALK -------------------------------------------------------------------------------- /conf/save_swalk/5fold_rsc_slist.yml: -------------------------------------------------------------------------------- 1 | --- 2 | type: window_all # single|window, maybe add opt 3 | key: SLIST #added to the csv names 4 | evaluation: evaluation #evaluation|evaluation_last|evaluation_multiple 5 | data: 6 | name: rsc15-window #added in the end of the csv names 7 | folder: data/rsc15/slices/ 8 | prefix: rsc15-clicks 9 | slices: 5 10 | # opts: {sessions_test: 1000} 11 | 12 | results: 13 | folder: results/window/rsc15/ 14 | 15 | metrics_next: 16 | - class: time_memory_usage.Time_usage_training 17 | - class: accuracy.HitRate 18 | length: [1, 3, 5, 10, 20] 19 | - class: accuracy.MRR 20 | length: [1, 3, 5, 10, 20] 21 | 22 | metrics_multiple: 23 | - class: accuracy_multiple.Precision 24 | length: [1, 3, 5, 10, 20] 25 | - class: accuracy_multiple.Recall 26 | length: [1, 3, 5, 10, 20] 27 | - class: accuracy_multiple.MAP 28 | length: [1, 3, 5, 10, 20] 29 | - class: coverage.Coverage 30 | length: [1, 3, 5, 10, 20] 31 | - class: popularity.Popularity 32 | length: [1, 3, 5, 10, 20] 33 | - class: time_memory_usage.Time_usage_testing 34 | 35 | algorithms: 36 | - class: swalk.swalk.SWALK 37 | params: {model1: SLIT, model2: SLIS, p: 0.5, epsilon: 10, recwalk_dense: True, reg: 10, train_weight: 1, predict_weight: 1, session_weight: 8, beta: 0.7} 38 | key: SWALK -------------------------------------------------------------------------------- /evaluation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/__init__.py -------------------------------------------------------------------------------- /evaluation/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/__pycache__/evaluation.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/__pycache__/evaluation.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/__pycache__/evaluation_multiple.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/__pycache__/evaluation_multiple.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/__pycache__/loader.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/__pycache__/loader.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__init__.py -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/accuracy.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/accuracy.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/accuracy_grt.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/accuracy_grt.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/accuracy_leq.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/accuracy_leq.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/accuracy_multiple.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/accuracy_multiple.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/coverage.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/coverage.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/popularity.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/popularity.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/saver.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/saver.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/saver_next.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/saver_next.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/__pycache__/time_memory_usage.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/evaluation/metrics/__pycache__/time_memory_usage.cpython-36.pyc -------------------------------------------------------------------------------- /evaluation/metrics/coverage.py: -------------------------------------------------------------------------------- 1 | 2 | class Coverage: 3 | ''' 4 | Coverage( length=20 ) 5 | 6 | Used to iteratively calculate the coverage of an algorithm regarding the item space. 7 | 8 | Parameters 9 | ----------- 10 | length : int 11 | Coverage@length 12 | ''' 13 | 14 | item_key = 'ItemId' 15 | 16 | def __init__(self, length=20): 17 | self.num_items = 0 18 | self.length = length 19 | self.time = 0; 20 | 21 | def init(self, train): 22 | ''' 23 | Do initialization work here. 24 | 25 | Parameters 26 | -------- 27 | train: pandas.DataFrame 28 | Training data. It contains the transactions of the sessions. It has one column for session IDs, one for item IDs and one for the timestamp of the events (unix timestamps). 29 | It must have a header. Column names are arbitrary, but must correspond to the ones you set during the initialization of the network (session_key, item_key, time_key properties). 30 | ''' 31 | self.coverage_set = set() 32 | self.num_items = len( train[self.item_key].unique() ) 33 | 34 | def reset(self): 35 | ''' 36 | Reset for usage in multiple evaluations 37 | ''' 38 | self.coverage_set = set() 39 | return 40 | 41 | def skip(self, for_item = 0, session = -1 ): 42 | pass 43 | 44 | def add(self, result, next_item, for_item=0, session=0, pop_bin=None, position=None): 45 | ''' 46 | Update the metric with a result set and the correct next item. 47 | Result must be sorted correctly. 48 | 49 | Parameters 50 | -------- 51 | result: pandas.Series 52 | Series of scores with the item id as the index 53 | ''' 54 | recs = result[:self.length] 55 | items = recs.index.unique() 56 | self.coverage_set.update( items ) 57 | 58 | def add_multiple(self, result, next_items, for_item=0, session=0, position=None): 59 | self.add(result, next_items[0], for_item, session) 60 | 61 | def add_batch(self, result, next_item): 62 | ''' 63 | Update the metric with a result set and the correct next item. 64 | 65 | Parameters 66 | -------- 67 | result: pandas.DataFrame 68 | Prediction scores for selected items for every event of the batch. 69 | Columns: events of the batch; rows: items. Rows are indexed by the item IDs. 70 | next_item: Array of correct next items 71 | ''' 72 | i=0 73 | for part, series in result.iteritems(): 74 | result.sort_values( part, ascending=False, inplace=True ) 75 | self.add( series, next_item[i] ) 76 | i += 1 77 | 78 | 79 | def result(self): 80 | ''' 81 | Return a tuple of a description string and the current averaged value 82 | ''' 83 | return ("Coverage@" + str(self.length) + ": "), ( len(self.coverage_set) / self.num_items ) 84 | -------------------------------------------------------------------------------- /preprocessing/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__init__.py -------------------------------------------------------------------------------- /preprocessing/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /preprocessing/__pycache__/preprocess_diginetica.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__pycache__/preprocess_diginetica.cpython-36.pyc -------------------------------------------------------------------------------- /preprocessing/__pycache__/preprocess_music.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__pycache__/preprocess_music.cpython-36.pyc -------------------------------------------------------------------------------- /preprocessing/__pycache__/preprocess_retailrocket.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__pycache__/preprocess_retailrocket.cpython-36.pyc -------------------------------------------------------------------------------- /preprocessing/__pycache__/preprocess_rsc15.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jin530/SWalk/c50fe409f41748a8346be688e117f5f4ce97148c/preprocessing/__pycache__/preprocess_rsc15.cpython-36.pyc -------------------------------------------------------------------------------- /preprocessing/run_preprocessing.py: -------------------------------------------------------------------------------- 1 | import preprocessing.preprocess_rsc15 as pp 2 | import time 3 | 4 | ''' 5 | preprocessing method ["info","org","days_test","slice"] 6 | info: just load and show info 7 | org: from gru4rec (last day => test set) 8 | org_min_date: from gru4rec (last day => test set) but from a minimal date onwards 9 | days_test: adapted from gru4rec (last N days => test set) 10 | slice: new (create multiple train-test-combinations with a window approach 11 | buys: load buys and safe file to prepared 12 | ''' 13 | METHOD = "org_min_date" 14 | 15 | ''' 16 | data config (all methods) 17 | ''' 18 | PATH = 'data/rsc15/raw/' 19 | PATH_PROCESSED = 'data/rsc15/prepared/' 20 | FILE = 'rsc15-clicks' 21 | 22 | ''' 23 | org_min_date config 24 | ''' 25 | MIN_DATE = '2014-07-01' 26 | 27 | ''' 28 | filtering config (all methods) 29 | ''' 30 | MIN_SESSION_LENGTH = 2 31 | MIN_ITEM_SUPPORT = 5 32 | 33 | ''' 34 | days test default config 35 | ''' 36 | DAYS_TEST = 1 37 | 38 | ''' 39 | slicing default config 40 | ''' 41 | NUM_SLICES = 5 #offset in days from the first date in the data set 42 | DAYS_OFFSET = 0 #number of days the training start date is shifted after creating one slice 43 | DAYS_SHIFT = 31 44 | #each slice consists of... 45 | DAYS_TRAIN = 30 46 | DAYS_TEST = 1 47 | 48 | if __name__ == '__main__': 49 | ''' 50 | Run the preprocessing configured above. 51 | ''' 52 | 53 | print( "START preprocessing ", METHOD ) 54 | sc, st = time.clock(), time.time() 55 | 56 | if METHOD == "info": 57 | pp.preprocess_info( PATH, FILE, MIN_ITEM_SUPPORT, MIN_SESSION_LENGTH ) 58 | 59 | elif METHOD == "org": 60 | pp.preprocess_org( PATH, FILE, PATH_PROCESSED, MIN_ITEM_SUPPORT, MIN_SESSION_LENGTH ) 61 | 62 | elif METHOD == "org_min_date": 63 | pp.preprocess_org_min_date( PATH, FILE, PATH_PROCESSED, MIN_ITEM_SUPPORT, MIN_SESSION_LENGTH, MIN_DATE ) 64 | 65 | elif METHOD == "day_test": 66 | pp.preprocess_days_test( PATH, FILE, PATH_PROCESSED, MIN_ITEM_SUPPORT, MIN_SESSION_LENGTH, DAYS_TEST ) 67 | 68 | elif METHOD == "slice": 69 | pp.preprocess_slices( PATH, FILE, PATH_PROCESSED, MIN_ITEM_SUPPORT, MIN_SESSION_LENGTH, NUM_SLICES, DAYS_OFFSET, DAYS_SHIFT, DAYS_TRAIN, DAYS_TEST ) 70 | 71 | elif METHOD == "buys": 72 | pp.preprocess_buys( PATH, FILE, PATH_PROCESSED ) 73 | else: 74 | print( "Invalid method ", METHOD ) 75 | 76 | print( "END preproccessing ", (time.clock() - sc), "c ", (time.time() - st), "s" ) 77 | --------------------------------------------------------------------------------