From parallel architecture to mapreduce hadoop passing on grid, UNIFI course
Financial Recommender System
1. Un Sistema di Raccomandazione
Personalizzato per il Dominio
Finanziario
Relatore
prof.ssa Francesca Rossi Laureando
Co-relatore Simone Tiso
Cristina Cornelio
12-02-2015
2. Introduzione: sistemi di raccomandazione
Nati per guidare l’utente
durante un acquisto
Riducono lo sforzo
dell’utente
Necessità di
personalizzazione
2 of 32
3. Introduzione: sistemi di raccomandazione
Dominio finanziario:
risultati complessi
difficoltà nella comprensione
Obiettivi:
supporto utente e consulenti
sistema intuitivo!
3 of 32
4. Approcci esistenti
Sistemi stocastici:
previsioni e correlazioni tra i dati
Neighborhood model (United States Patent 03/2014):
dato un prodotto p, il modello individua i sei prodotti più vicini
a p sulla base del loro trends
Collaborative filtering:
similarità tra prodotti (trends)
Vogliamo migliorare i risultati:
Profilando l’utente con CP-trees
Usando il collaborative filtering
4 of 32
6. Collaborative filtering
Matrice user-item: valutazioni (ratings) degli utenti
P1 P2 ··· Pj ··· Pn
U1 0.1 0.6 ··· 0 ··· 0.9
U2 0.1 0 ··· 0.1 ··· 0
...
...
... ···
... ···
...
Ui 0 0.5 ··· 0.4 ··· 0.7
...
...
... ···
... ···
...
Um 0.1 0.2 ··· 0.5 ··· 0.4
User-User collaborative filtering: suggerisce prodotti
acquistati da utenti simili a Ui
Item-Item collaborative filtering: suggerisce prodotti simili a
prodotti acquistati da Ui (+ scalabile, + qualità nelle
raccomandazioni) 6 of 32
7. Item-Item CF: Similarità
Calcolo della similarità tra i prodotti
Dati due vettori contenenti i ratings dei prodotti Pi e Pj :
similarità del coseno (vettori)
7 of 32
8. Item-Item CF: Predizioni
Calcolo delle predizioni
Pu,i =
∑all similar items,N (si,N ∗Ru,N )
∑all similar items,N (|si,N |)
8 of 32
9. The cold start problem
Problema: per nuovi utenti otteniamo righe vuote !
P1 P2 ··· Pj ··· Pm
U1 0.1 0.6 ··· 0 ··· 0.9
U2 0.1 0 ··· 0.1 ··· 0
...
...
... ···
... ···
...
Ui 0 0 ··· 0 ··· 0
...
...
... ···
... ···
...
Un 0.1 0.2 ··· 0.5 ··· 0.4
Non riusciamo a calcolare la predizione per Ui
9 of 32
10. Sistemi di raccomandazione: Conversational
Estrazione delle preferenze dalla barra di ricerca
Query = uno o più valori delle caratteristiche (features)
dei prodotti
Esempio: “giacca nera t-shirt rossa” per descrivere un abito
A Framework for Preference Dominance
Figure 4.3: Interaction model of the user with the recommender.
4.3 A Framework for Preference Dominance
One major purpose of IR is to reduce irrelevant content and provide users with more
pertinent information or product, in an attempt to o set information overload. One
Prodotto = assegnamento di tutte le features (outcome)
10 of 32
11. Preferenze utente
Vogliamo una rappresentazione delle preferenze dell’utente che:
gestisca le dipendenze tra features
Esempio: “preferisco la t-shirt rossa se ho giacca nera e
pantaloni neri”
sia compatta, permetta inferenza efficiente
Tra i vari modi di rappresentare le preferenze
abbiamo studiato i CP-trees
11 of 32
12. CP-trees
CP-tree: albero orientato dove ogni nodo rappresenta una
variabile (feature):
ogni arco identifica un assegnamento della variabile ed è
orientato dal nodo genitore al nodo figlio
Features binarie (es: s feature “t-shirt rossa” presente, s
feature “t-shirt rossa” non presente)
Jj ≥ j (feature piùimportante)
Pp ≥ p
Ss ≥ s Ss ≥ sSs ≥ sSs ≥ s
Pp ≥ p
jj
p p pp
jps ≥ jps ≥ jps ≥ jps ≥ jps ≥ jps ≥ jps ≥ jps
importanza delle variabili e inducono ordinamenti totali sugli
outcomes
12 of 32
13. Inferenza CP-trees
Consideriamo la seguente query: “giacca nera” (Outcome: jps)
Query proposte dal sistema:
“giacca nera pantaloni neri” (jps) (accettata)
“giacca nera t-shirt rossa” (jps) (rifiutata)
CP-tree risultante Jj ≥ j
Pp ≥ p
Ss ≥ s
j
p
jps ≥ jps (ordinamento indotto dal CP-tree)
13 of 32
14. Distanza tra CP-trees
Una volta capito come rappresentare l’utente
Calcoliamo la distanza per ogni coppia di utenti
Abbiamo definito tre tipi di distanze tra 2 utenti lavorando su
ordinamenti indotti dai loro CP-trees
COD
Variante distanza di Hamming per ogni outcome
negli ordinamenti + importanza features
SWAPD
Swap tra outcomes adiacenti per passare da un
ordinamento all’altro
MATD
Associamo una matrice ad ogni ordinamento,
poi calcoliamo la distanza matriciale
Grafo delle distanze
U1
U2 U3
d1,2 d1,3
d2,3
14 of 32
15. Distanza tra utenti: modello COD
Variante della distanza di Hamming + gerarchia features
Dati due CP-trees CPs e CPt :
dist(CPs,CPt) =
1
mn
m
∑
i=1
n
∑
j=1
oCPs ij −oCPt ij
+
p(oCPsij)∗oCPsij −p(oCPtij)∗oCPtij
oCPsijoCPtij
dove p(oij ) è il peso applicato alla feature oij
15 of 32
16. Modello COD: esempio
Utente U1
Xx ≥ x
Yy ≥ y Yy ≥ y
x x
Utente U2
Yy ≥ y
Xx ≥ x Xx ≥ x
y y
ord(U1) = xy ≥ xy ≥ xy ≥ xy
ord(U2) = xy ≥ xy ≥ xy ≥ xy
xy
2
xy
≥
≥
+
xy
2
xy
≥
≥
+
xy
1
xy
≥
≥
+
xy
1
xy
→ 6
8
= 0,75
16 of 32
17. Distanza tra utenti: modello SWAPD
Numero di scambi per passare da un ordinamento ad un altro
ord(U1) = xy ≥ xy ≥ xy ≥ xy, ord(U2) = xy ≥ xy ≥ xy ≥ xy
swap(3,4) → xy ≥ xy ≥ xy ≥ xy
swap(2,3) → xy ≥ xy ≥ xy ≥ xy
SWAPD(ord(U1),ord(U2)) = 2
17 of 32
18. Distanza tra utenti: modello MATD
Calcoliamo una matrice per ogni utente
mij =
1 se i è preferito a j ,
−1 se j è preferito a i ,
0 altrimenti.
MU1 =
0 1 1 1
−1 0 −1 −1
−1 1 0 1
−1 1 −1 0
MU2 =
0 1 1 1
−1 0 1 1
−1 −1 0 1
−1 −1 −1 0
d(MU1 ,MU2 ) =
1
2
4
∑
i=1
4
∑
j=1
mU1ij
−mU2ij
=
1
2
(0+2+1+1) = 2
18 of 32
19. Calcolo delle predizioni
Us
r(U1,Pj ) r(U2,Pj ) . . . r(Uk−1,Pj ) r(Uk,Pj )
d1 d2 dk−1
dk
U1
U2 U3
d2 d3
Calcoliamo la predizione come somma dei ratings, pesata
sull’inverso della distanza tra utenti
r(Us,Pj ) =
∑k
i=1 r(Ui ,Pj )∗1/di
1/d1 +1/d2 +...+1/dk
19 of 32
20. Architettura del sistema
Sviluppo modulare e basato sulle responsabilità
Separazione tra vista, controllo e dati
Sviluppo top-down del prototipo
Individuazione di problemi
Scomposizione in sottoproblemi
20 of 32
21. Rappresentazione dei dati
Utenti rappresentati con una struttura ad albero binario
(Graph library)
Prodotti rappresentati in una struttura XML
21 of 32
22. Linguaggi utilizzati
HTML
AJAX per caricamento asincrono dei dati dal server
Framework JQuery per gestire gli eventi della view
PHP lato server per la gestione della parte computazionale
22 of 32
23. Scenario: dominio finanziario
Un utente deve scegliere dove investire
Idea generale il suo investimento
Vogliamo raccomandargli il miglior prodotto, secondo le sue
preferenze!
23 of 32
24. Dialogo user-system
L’utente inserisce una query nella barra di ricerca
Il sistema elabora la query
Il sistema propone altre due query all’utente
24 of 32
25. Analisi sperimentale
COD SWAPD MATD vs ITEM-ITEM
Quanto sono migliori rispetto all’item-item
Quale dei 3 modelli è migliore
Identifichiamo tre parametri:
nUser: numero di utenti;
nFeatures: numero di features binarie considerate;
spars: indice di sparsità della matrice user-item.
Domini dei parametri:
D(nUser) = {10,20,...,100};
D(nFeatures) = {2,3,...,7};
D(spars) = {0.1,0.2,...,0.9}.
25 of 32
26. Metodo di valutazione
P1 P2 P3 P4
UA 0.1 0.6 0 0.9
UB 0.3 0.1 0.6 0.1
UC 0 0.5 0.8 0.7
UD 0.1 0.2 0 0.4
Vettore dei prodotti, ordinati in due modi
puB
= ((P3,0.6),(P1,0.3),(P2,0.1)) → Vettore predizioni
quB
= ((P3,0.7),(P2,0.4),(P1,0.1)) −→ Vettore reale
Errore medio di valutazione
Eui
= 1
s ∑s
j=1 |pos(Pj ,pui
)−pos(Pj ,qui
)| = 1
3 (0+1+1) = 0.67
26 of 32
27. Metodo di valutazione
Media su nUsers utenti per ogni simulazione
K =
1
nUsers
nUsers
∑
i=1
Eui
Media su nTest = 300 simulazioni
Kmed =
1
nTest
nTest
∑
j=1
Kj
27 of 32
31. Conclusioni
Dimostriamo che l’errore medio è minore rispetto ad Item-Item
buoni investimenti
personalizzati per l’utente
COD, SWAPD e MATD lavorano molto meglio di Item-Item
quando le matrici sono molto sparse
quando il numero di utenti è elevato
Sistema semplice e intuitivo per l’utente
31 of 32
32. Future work
Usare CP-nets acicliche e CP-nets ad albero per
rappresentare le preferenze degli utente e
confrontarle con l’approccio con CP-trees
Usare CP-trees parziali
Migliorare il metodo di estrazione delle
preferenze
algoritmi legati alle neuroscienze
Introdurre dinamicità nei CP-trees
aggiornamento preferenze utente
aggiornare l’ordinamento nei valori delle features
32 of 32