1: proc´edure Update sim(i, j, K)
2: pour tout k ∈]0, K] faire
3: Ei,j ← {(i0, j0) | ∃r ∈ Rel r(i, i0) ∧ r(j, j0)}
4: simk+1(i, j) =P Ei,j simk(i0, j0) |Ei,j| 5: si k < K alors 6: propagate(Ei,j, k + 1, {}) 7: fin si 8: fin pour
9: fin proc´edure
10: proc´edure propagate(Ei,j, k, Eok)
11: pour tout (i0, j0) ∈ Ei,j faire
12: si (i0, j0) /∈ Eok alors
13: Eok← Eok∪ {(i0, j0)}
14: Ei0,j0 ← {(i00, j00) | ∃r ∈ Rel r(i0, i00) ∧ r(j0, j00)}
15: simk+1(i0, j0) =P Ei0,j0 simk(i00, j00) |Ei0,j0| 16: propagate(Ei0,j0, k + 1, Eok) 17: fin si 18: fin pour
19: fin proc´edure
4.1.3 Complexit´e du calcul de la similarit´e s´emantique
Soient n la cardinalit´e de Inst ⊆ I, l’ensemble des instances des concepts s´electionn´es par l’expert, m le nombre maximum de propri´et´es par instance et K le plus grand rang atteint lors du calcul de la similarit´e s´emantique.
Complexit´e dans le pire cas du calcul de la similarit´e s´emantique dans tout le
syst`eme
Nous allons analyser l’algorithme 4.1.
Les boucles des lignes 3 et 13 sont effectu´ees sur toutes les paires d’instances du syst`eme. Le nombre de paires d’instances dans le syst`eme est ´egal `a n2 ´etant donn´e qu’il s’agit du produit (carr´e) cart´esien de Inst.
Le calcul effectu´e dans la boucle de la ligne 3 est de complexit´e constante, la complexit´e de cette boucle est donc le nombre d’it´erations, soit n2.
Le calcul effectu´e `a l’int´erieur de la boucle commen¸cant `a la ligne 13 met en œuvre les paires d’instances reli´ees `a la paire (i, j). Chaque instance i ∈ Inst ´etant en relation avec m autres
instances, implique qu’une paire (i, j) ∈ Inst2 est en relation avec m2 paires. La complexit´e de ce calcul est donc de l’ordre de m2.
La boucle de calcul de la similarit´e s´emantique pour un rang donn´e (ligne 13) a donc une complexit´e de n2× m2.
La boucle de calcul de la similarit´e s´emantique pour les K rangs (ligne 11) a donc une
complexit´e de n2× m2× K.
La complexit´e au pire de l’algorithme de calcul de la similarit´e s´emantique pour toutes les paires du syst`eme est donc de l’ordre de n2+ n2× m2× K, soit n2× m2× K.
Complexit´e dans le pire cas du calcul de la similarit´e s´emantique lors de l’ajout de
nouvelles donn´ees
Le calcul de la similarit´e s´emantique lors de l’ajout d’une relation entre deux instances est d´ecrit dans l’algorithme 4.2.
Le calcul de la similarit´e entre deux instances (lignes 3 et 14) met en œuvre les paires
d’instances reli´ees `a la paire courante et qui sont au nombre de m2 (voir section pr´ec´edente).
La proc´edure Propagate est r´ecursive. Elle est appel´ee pour chaque paire reli´ee `a une
paire qui a ´et´e mise `a jour. Au pire, toutes les paires du syst`eme seront concern´ees, soit n2. ´
Etant donn´e que pour chaque paire d’instances, le calcul de la similarit´e a une complexit´e de m2, la complexit´e de la propagation est de n2× m2.
De ce fait, la complexit´e de l’algorithme pour l’ajout d’une seule instance dans le syst`eme pour tous les rangs est de K × (m2+ n2× m2), soit de l’ordre de K × n2× m2.
On remarque que la mise `a jour du syst`eme est aussi coˆuteuse que le calcul initial. Cepen-dant, le pire des cas ne s’applique que s’il existe des s´equences de propri´et´es permettant de relier n’importe quelle instance du syst`eme `a n’importe quelle autre.
4.2 La mesure de filtrage s´emantique
4.2.1 Principes
Cette mesure sert `a calculer le degr´e d’int´erˆet de l’utilisateur cible pour un item cible. Ceci sert `a filtrer et affiner les recommandations issues d’un autre module pour l’utilisateur cible. Par exemple, ce module peut ˆetre appliqu´e `a la suite du module collaboratif d´ecrit dans le chapitre 5.
La mesure d’int´erˆet de l’utilisateur cible pour un item est relative `a des propri´et´es. Par exemple, si l’on veut calculer l’int´erˆet d’un utilisateur pour un certain film, on va calculer
4.2 La mesure de filtrage s´emantique 71
son int´erˆet pour les acteurs, r´ealisateurs, etc. du film par le biais des propri´et´es hasActor, hasDirector, etc.
Il incombe `a l’expert de s´electionner l’ensemble de propri´et´es Rel ⊆ R de domaine Item qui seront utilis´ees dans le calcul. La pr´edication de l’int´erˆet de l’utilisateur pour un item i relativement `a une propri´et´e r ∈ Rel utilise :
— les notes de l’utilisateur pour les items reli´es par r `a des instances ´egalement reli´ees `a i par r ;
— les notes de l’utilisateur pour les items reli´es par r `a des instances s´emantiquement similaires, en utilisant la mesure de similarit´e s´emantique d´efinie, `a celles reli´ees `a i par r.
´
Etant donn´e que le calcul de l’int´erˆet de l’utilisateur pour un item se fait relativement `a un ensemble de propri´et´es, et que ces propri´et´es relient des items `a d’autres instances, nous allons d’abord calculer l’int´erˆet de ces instances.
4.2.2 Calcul de l’int´erˆet de l’utilisateur pour les instances
L’int´erˆet de l’utilisateur pour les instances mesure le degr´e d’int´erˆet de l’utilisateur pour une instance en fonction de son historique. Par exemple, pour ´evaluer l’int´erˆet de l’utilisateur cible pour l’acteur “Tom Hanks”, les notes des films o`u “Tom Hanks” a jou´e et se trouvant dans l’historique de l’utilisateur cible sont utilis´ees.
Le calcul de l’int´erˆet de l’utilisateur u se fait pour chaque instance reli´ee `a l’item cible i par une propri´et´e r ∈ Rel. Les propri´et´es utilis´ees dans le calcul sont s´electionn´ees par l’expert.
Une instance a est reli´ee par une propri´et´e r `a 0 ou n items dans l’historique de l’utilisateur u.
Si a est reli´ee par une propri´et´e r `a au moins un item dans l’historique de u, l’int´erˆet de u pour a est d´efini par la m´ediane des notes des items en question. La m´ediane est utilis´ee afin d’´eviter les valeurs extrˆemes et donc les variations non d´esir´ees. L’int´erˆet interetinst de l’utilisteur u pour l’instance a pour une certaine propri´et´e r est d´efini par :
Enotes = {note(u, i0) | ∃ i0∈ historique(u) r(i0, a)} (4.7)
interetinst(u, a, r) = mediane(Enotes) (4.8)
Si l’instance a est n’est reli´ee par la propri´et´e r `a aucun item de l’historique de u, l’int´erˆet de u pour a est calcul´e grˆace `a la mesure de similarit´e s´emantique d´efinie dans la section 4.1. Les instances similaires `a a, grˆace `a la mesure de similarit´e s´emantique d´efinie pr´ec´edemment, sont calcul´ees et la moyenne des notes des items auxquels elles sont reli´ees par r ´etablit l’int´erˆet de u pour a. On utilise la moyenne plutˆot que la m´ediane afin d’estimer au mieux l’int´erˆet de l’utilisateur ´etant donn´e que l’on se base sur la similarit´e s´emantique qui est elle-mˆeme une estimation.
Enotes = {note(u, i0) | ∃ i0∈ historique(u) r(i0, b) ∧ simK(a, b) > α} (4.9)
interetinst(u, a, r) = moyenne(Enotes) (4.10)
o`u α est le seuil de similarit´e ´etabli par l’expert.
4.2.3 Calcul de l’int´erˆet de l’utilisateur pour les items relativement `a des propri´et´es
L’int´erˆet de l’utilisateur u pour un item i relativement `a une propri´et´e r se base sur l’int´erˆet de u pour les instances reli´ees `a i par r. Il est calcul´e en effectuant la somme pond´er´ee de l’int´erˆet de u pour les instances reli´ees `a i par r.
interet(u, i, r) = P
a∈Einstinteretinst(u, a, r) × ratioocc(u, a, r) P
a∈Einstratioocc(u, a, r) (4.11)
o`u Einst est l’ensemble des instances reli´ees `a l’item i par r : Einst= {a | r(i, a)}
et ratioocc(u, a, r) est la proportion d’occurrences de l’instance a parmi les instances reli´ees aux items de l’historique de l’utilisateur u par r :
ratioocc(u, a, r) = |{i
0| i0 ∈ historique(u) ∧ r(i0, a)}| |{b | ∃ i0∈ historique(u) r(i0, b)}|
Le calcul de l’int´erˆet de l’utilisateur u pour un item i relativement `a un ensemble de pro-pri´et´es Rel s´electionn´ees par l’expert est d´ecrit dans l’algorithme 4.3. Dans l’algorithme, α est le seuil de similarit´e ´etabli par l’expert
Exemple 2. Soit u, un utilisateur ayant not´e, sur une ´echelle de 1 `a 5, les films de la table 2.4.1.
Film Note
Psychose 5
Fenˆetre sur Cour 4
La Vie de Brian 5 Carrie 3 Les Langoliers 1 Pulp Fiction 4 Dr. Folamour 2 Orange M´ecanique 1
Table 2.4.1 – Extrait du profil de l’utilisateur u
4.2 La mesure de filtrage s´emantique 73