|
|
--- |
|
|
tags: |
|
|
- recommender-system |
|
|
- sasrec |
|
|
datasets: |
|
|
- ML-100k |
|
|
--- |
|
|
|
|
|
# SASRec - ML-100k |
|
|
|
|
|
## Model Description |
|
|
SASRec (Self-Attentive Sequential Recommendation) is a sequential recommendation model that uses self-attention mechanisms to model user's historical behavior data. |
|
|
|
|
|
## Training Results |
|
|
### Best Valid Results |
|
|
- **ndcg@10**: 0.0197 |
|
|
- **hit@10**: 0.0362 |
|
|
- **averagepopularity@10**: 304.4937 |
|
|
- **giniindex@10**: 0.9858 |
|
|
- **itemcoverage@10**: 0.0747 |
|
|
- **shannonentropy@10**: 0.0387 |
|
|
- **tailpercentage@10**: 0.0002 |
|
|
|
|
|
### Test Results |
|
|
- **ndcg@10**: 0.0157 |
|
|
- **hit@10**: 0.0351 |
|
|
- **averagepopularity@10**: 304.5865 |
|
|
- **giniindex@10**: 0.9861 |
|
|
- **itemcoverage@10**: 0.0688 |
|
|
- **shannonentropy@10**: 0.0417 |
|
|
- **tailpercentage@10**: 0.0 |
|
|
|
|
|
## Configuration |
|
|
The model was trained with the following configuration: |
|
|
```yaml |
|
|
ENTITY_ID_FIELD: entity_id |
|
|
HEAD_ENTITY_ID_FIELD: head_id |
|
|
ITEM_ID_FIELD: item_id |
|
|
ITEM_LIST_LENGTH_FIELD: item_length |
|
|
LABEL_FIELD: label |
|
|
LIST_SUFFIX: _list |
|
|
MAX_ITEM_LIST_LENGTH: 50 |
|
|
MODEL_INPUT_TYPE: InputType.POINTWISE |
|
|
MODEL_TYPE: ModelType.SEQUENTIAL |
|
|
NEG_PREFIX: neg_ |
|
|
POSITION_FIELD: position_id |
|
|
RATING_FIELD: rating |
|
|
RELATION_ID_FIELD: relation_id |
|
|
TAIL_ENTITY_ID_FIELD: tail_id |
|
|
TIME_FIELD: timestamp |
|
|
USER_ID_FIELD: user_id |
|
|
additional_feat_suffix: null |
|
|
alias_of_entity_id: null |
|
|
alias_of_item_id: null |
|
|
alias_of_relation_id: null |
|
|
alias_of_user_id: null |
|
|
attn_dropout_prob: 0.5 |
|
|
benchmark_filename: null |
|
|
checkpoint_dir: saved |
|
|
clip_grad_norm: null |
|
|
dataloaders_save_path: null |
|
|
dataset: ml-100k |
|
|
dataset_save_path: null |
|
|
device: cpu |
|
|
discretization: null |
|
|
enable_amp: false |
|
|
enable_scaler: false |
|
|
entity_kg_num_interval: null |
|
|
epochs: 1 |
|
|
eval_args: |
|
|
group_by: user |
|
|
mode: |
|
|
test: full |
|
|
valid: full |
|
|
order: TO |
|
|
split: |
|
|
LS: valid_and_test |
|
|
eval_batch_size: 40960 |
|
|
eval_step: 1 |
|
|
eval_type: EvaluatorType.RANKING |
|
|
field_separator: "\t" |
|
|
filter_inter_by_user_or_item: true |
|
|
gpu_id: '0' |
|
|
hidden_act: gelu |
|
|
hidden_dropout_prob: 0.5 |
|
|
hidden_size: 64 |
|
|
initializer_range: 0.02 |
|
|
inner_size: 256 |
|
|
item_inter_num_interval: '[10,inf)' |
|
|
kg_reverse_r: false |
|
|
layer_norm_eps: 1.0e-12 |
|
|
learner: adam |
|
|
learning_rate: 0.001 |
|
|
load_col: |
|
|
inter: |
|
|
- user_id |
|
|
- item_id |
|
|
- rating |
|
|
- timestamp |
|
|
local_rank: 0 |
|
|
log_wandb: false |
|
|
loss_decimal_place: 4 |
|
|
loss_type: CE |
|
|
metric_decimal_place: 4 |
|
|
metrics: |
|
|
- NDCG |
|
|
- Hit |
|
|
- AveragePopularity |
|
|
- GiniIndex |
|
|
- ItemCoverage |
|
|
- ShannonEntropy |
|
|
- TailPercentage |
|
|
model: SASRec |
|
|
n_heads: 2 |
|
|
n_layers: 2 |
|
|
normalize_all: true |
|
|
normalize_field: null |
|
|
numerical_features: [] |
|
|
preload_weight: null |
|
|
relation_kg_num_interval: null |
|
|
repeatable: true |
|
|
reproducibility: true |
|
|
require_pow: false |
|
|
rm_dup_inter: null |
|
|
save_dataloaders: false |
|
|
save_dataset: false |
|
|
seed: 2020 |
|
|
seq_len: null |
|
|
seq_separator: ' ' |
|
|
show_progress: false |
|
|
shuffle: true |
|
|
single_spec: true |
|
|
state: INFO |
|
|
stopping_step: 10 |
|
|
test_neg_sample_args: |
|
|
distribution: uniform |
|
|
sample_num: none |
|
|
threshold: null |
|
|
topk: |
|
|
- 10 |
|
|
train_batch_size: 4096 |
|
|
train_neg_sample_args: |
|
|
alpha: none |
|
|
candidate_num: 0 |
|
|
distribution: none |
|
|
dynamic: false |
|
|
sample_num: none |
|
|
transform: null |
|
|
unload_col: null |
|
|
unused_col: |
|
|
inter: |
|
|
- rating |
|
|
use_gpu: true |
|
|
user_inter_num_interval: '[10,inf)' |
|
|
val_interval: |
|
|
rating: '[3,inf)' |
|
|
valid_metric: NDCG@10 |
|
|
valid_metric_bigger: true |
|
|
valid_neg_sample_args: |
|
|
distribution: uniform |
|
|
sample_num: none |
|
|
wandb_project: recbole |
|
|
weight_decay: 0.0 |
|
|
worker: 0 |
|
|
|
|
|
``` |
|
|
|
|
|
## Usage |
|
|
|