Outfit Recommender β€” trained checkpoints

COMP9727 (Recommender Systems) team project. Four approaches trained on the POG / Alibaba iFashion dataset (Chen et al., KDD 2019), evaluated on a frequency-controlled fill-in-the-blank (FITB) and compatibility-prediction (CP) benchmark. Source: https://github.com/QuangMinhPhan23/outfit-recommender

Every model here is scored against a no-model frequency control β€” picking the training-most-frequent candidate scores 0.6672 FITB / 0.5722 CP AUC. Clearing chance (0.25 / 0.50) means nothing on this benchmark; clearing the control is the bar.

Results (V2 test set)

Method FITB acc CP AUC cold-item FITB vs. control
Frequency control (no model) 0.6672 0.5722 β€” β€”
Approach 1 β€” Item2Vec 0.7729 0.7857 0.4841 βœ…
Approach 2 β€” GAT 0.8418 0.7644 0.6280 βœ…
Approach 3 β€” Type-Aware 0.8310 0.7683 0.6382 βœ…
Method HR@10 NDCG@10
Approach 4 β€” BPR-MF (popularity-matched negatives) 0.5202 0.2960

cold-item FITB = accuracy on answers appearing ≀5 times in training. Approach 3 is the only method with content features, so it degrades least on rare items.

Files

approach1/word2vec.model                  gensim Word2Vec, 128-d, skip-gram
approach1/word2vec.model.wv.vectors.npy   input matrix   (required alongside)
approach1/word2vec.model.syn1neg.npy      output matrix  (required alongside)

approach2/best.pt                         GAT state_dict, {"model", "epoch", "val"}

approach3/best.pt                         Type-Aware state_dict
approach3/text_emb.npy                    frozen sentence-encoder item embeddings
                                           (required alongside best.pt β€” the text
                                           buffer is registered persistent=False,
                                           so it is not inside best.pt itself)

approach4/factors.npz                     BPR-MF factors, {"U": user, "V": item}

Loading

# Approach 1 β€” Item2Vec
from gensim.models import Word2Vec
model = Word2Vec.load("approach1/word2vec.model")   # keep all 3 files together

# Approach 2 / 3 β€” see SampledGAT / TypeAware in src/run_approach{2,3}.py
import torch
state = torch.load("approach2/best.pt", map_location="cpu", weights_only=False)
model.load_state_dict(state["model"])

# Approach 4 β€” BPR-MF
import numpy as np
z = np.load("approach4/factors.npz")
U, V = z["U"], z["V"]

Full training/eval code: src/run_approach{1,2,3,4}.py in the repo above. Not included here: optimizer state (last.pt), cached intermediates rebuildable in seconds (categories.pkl, item_freq.pkl, embeddings.npy), and raw dataset-derived caches (titles.pkl, interactions.pkl) β€” those stay out of a model-weights repo by design.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support