Projects

Full projects (max 30 e lode)

P1

Idea vagamente ispirata dalle formule (3)-(6) dello stesso articolo:

  • a_i e a_j sono vettori degli attributi di item i e j (input)
  • definisco la similitudine s_ij in questo modo
    S = [s_ij] = a_j’ * M * a_i + b1 * a_i + b2 * a_j + b3

    • M è una matrice quadrata (simmetrica o non simmetrica) hxh (h sono latent features)
    • M può essere scomposta in M = X’*Y (con eventualmente X=Y se si vuole simmetria)
    • b1 e b2 sono vettori bias che mi dicono quanto è “popolare” un attributo
    • si può imporre b1=b2
    • b3 è un bias generale
  • uso BPR per imparare i parametri di s_ij con il modello r_ui = r_u*S
  • una variante (che mi piace di più) con embedding anche su i bias b1 e b2 è
    s_ij = a_j’ * X’*Y * a_i + b1 * Y * a_i + b2 * X * a_j + b3

    • in altre parole, non uso direttamente i vettori a_i e a_j ma i loro embedding Y*a_i e X*a_j
    • anche qui posso avere X=Y
  • infine, se uso X=Y, per completare la simmetria, potrei fare una variante all’ultima versione in cui b3 = b2’*b1

P2

Imparare il peso degli attributi con un embedding, in modo simile all’eq (2).

Costruiamo una matrice di similitudine collaborativa

  • Si prende un item àncora “a”
  • Si seleziona un item “p” molto simile ad “a”
  • Si seleziona un item “n” per niente simile ad “a”
  • Si impara la (2)

Small projects (max 5 points)

S1

Evaluate RS against unlabelled data: seleziona un item positive e uno solo negativo (zero), e valuta se viene raccomandato il positivo: in questo modo la probabilità che il negativo sia veramente negativo è alta

Variante: seleziona il negativo (zero) tra i popolari, o tramite una baseline non banale