FR 2906910 A1 20080411 FR 0608861 A 20061010 CRITEO1.FRD Dispositif informatique de corrélation propagative L'invention concerne le rapprochement entre elles de données a priori 5 hétérogènes aux fins d'en tirer une proposition concrète, ce que l'on appellera ici une "corrélation propagative". En général, les données concernées associent des objets du monde réel et leur perception ou évaluation, notamment par des personnes. Dès lors que le 10 domaine global à traiter grandit, la charge informatique monte très vite, car elle est liée au produit du nombre d'objets par le nombre d'utilisateurs. On verra plus loin pourquoi. Les techniques actuelles utilisent donc des modèles très approximatifs, ce qui 15 nuit bien évidemment à la qualité des résultats obtenus. L'invention vise à améliorer la situation. A cet effet, l'invention propose un dispositif informatique de corrélation 20 propagative qui comprend : - une mémoire pour stocker une matrice brute qui croise des identifiant d'objets, et des identifiants d'acteurs, un élément matriciel quantifié étant présent ou non, 25 - un module d'arrière-plan capable de convertir la matrice brute en des blocs matriciels réarrangés, en fonction d'un critère lié à l'élément matriciel quantifié, et - un gestionnaire de sélection, capable, à réception d'un identifiant d'acteur 30 d'entrée, de rechercher cet identifiant d'acteur d'entrée dans une première table, qui contient des liens dont chacun associe un identifiant d'acteur et un ou 1 2906910 2 plusieurs blocs matriciels associés à cet identifiant d'acteur, et de présenter une information dépendant des contenus du ou des blocs matriciels associés à l'identifiant d'acteur d'entrée. Dans ce dispositif, le modèle d'arrière plan comprend un classificateur croisé pour convertir la matrice brute en blocs matriciels reclassés, selon un critère combinant une métrique de présence de l'élément matriciel, et une métrique de valeur de l'élément matriciel, le gestionnaire de sélection travaillant sur la base des blocs matriciels réarrangés. Un tel dispositif permet d'obtenir des résultats extrêmement satisfaisants car cette approche permet de tenir compte à la fois des profils d'acteurs et des profils d'objets. La classification ainsi réalisée permet d'obtenir une configuration particulièrement adaptée aux problèmes "creux" qui sont caractéristiques de ce type d'évaluation. De manière optionnelle et dans des modes de réalisation particuliers, le dispositif décrit ci-dessus peut présenter les caractéristiques suivantes : - le module d'arrière-plan peut comporter un contrôleur pour appeler le classificateur croisé avec un critère relié à la présence de l'élément matriciel, pour rassembler à la fois les identifiants d'acteur par profil de présence/absence d'élément matriciel selon les identifiants d'objet, et les identifiants d'objet par profil de présence/absence d'élément matriciel selon les identifiants d'acteur, pour convertir la matrice brute en blocs matriciels intermédiaires ; - le contrôleur peut appeler itérativement et sélectivement le classificateur croisé avec un critère relié à la valeur de l'élément matriciel sur certains au moins des blocs matriciels intermédiaires qui présentent des profils de présence/absence d'éléments matriciels de densité choisie pour les convertir en blocs matriciels reclassés ; 2906910 3 - le module d'arrière-plan peut comporter en outre un lisseur propre à remplir des éléments matriciels vidés d'un bloc matriciel donné, en fonction d'un critère relié à la densité du profil de présence/absence d'éléments matriciels de ce bloc, pour obtenir un bloc dense rempli ; - le lisseur peut remplir sélectivement par voisinage les éléments matriciels vides d'un bloc matriciel qui présente une densité d'un niveau choisi ; - le tisseur peut remplir les éléments matriciels vides d'un bloc matriciel sur la 10 base d'une itération croisant de manière sélective les valeurs des éléments matriciels voisins ; - le tisseur peut remplir par moyenne les éléments matriciels vides d'un bloc matriciel qui présente une densité d'un niveau choisi ; et - le gestionnaire de sélection peut présenter l'information en fonction d'une seconde table, qui contient des liens dont chacun associe un bloc matriciel et un ou plusieurs identifiants d'objets. 20 D'autres caractéristiques et avantages apparaîtront mieux à la lecture de la description qui suit, donnée à titre illustratif et non limitatif, d'exemples illustrés sur les dessins sur lesquels : - la figure 1 montre une vue schématique des composants de l'invention ; - la figure 2 et la figure 3 représentent une fonction réalisée par une partie hors-ligne de la figure 1 et ses résultats ; - les figures 4 à 7 représentent des fonctions réalisées par une partie en ligne 30 de la figure 1. 5 15 25 2906910 4 Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition le cas échéant. En outre, la description détaillée est augmentée de l'annexe 1 qui présente une méthode particulière de remplissage collaboratif comme il sera décrit plus bas. Cette annexe est mise à part dans un but de clarification, et pour faciliter les 10 renvois. Elle forme une partie intégrante de la description, et pourra donc également contribuer à la définition de l'invention, le cas échéant. Des solutions informatiques connues permettent de prévoir l'évaluation qu'une personne ferait d'un objet qu'elle ne connaît pas a priori, sur la base 15 d'évaluations d'autres objets par d'autres personnes. Ces solutions consistent classiquement à regrouper en classes des objets ou des personnes qui ont des caractéristiques similaires. Ces groupes ou classes sont ensuite utilisés pour déterminer, en commun dans une telle classe, un paramètre d'évaluation que l'on va propager sur d'autres objets, pas encore traités. Cela comporte une 20 sorte de prédiction, que l'on peut appeler, de façon réductrice, une "recommandation". De nombreuses difficultés apparaissent dans ce domaine. En effet, les données disponibles sont en général assez hétéroclites et trop peu nombreuses. Il en 25 découle que la corrélation propagative, ou, si l'on préfère la "recommandation", est de fiabilité tout au plus médiocre. Concrètement, il faut arriver à découper l'ensemble global des objets possibles en des sous-ensembles contenant un nombre limité d'objets. Plus les sous- 30 ensembles sont grands, plus on peut espérer trouver deux personnes (au moins) ayant exprimé des préférences ("évaluation") sur des objets "communs", 5 2906910 5 et donc susceptibles de servir de base à une recommandation. Inversement, pour obtenir un processus aboutissant à des recommandations fiables, le nombre d'objets dans chaque sous-ensemble ne doit pas être trop important. En fait, cette présentation est simplifiée, car il faut à la fois beaucoup d'objets 5 communs et beaucoup de personnes, ce qui est encore plus rare. On comprend qu'il n'est pas raisonnablement possible de travailler d'un seul coup sur l'ensemble global des données accessibles, car cela entraînerait une charge informatique prohibitive, liée au produit du nombre d'objets par le 10 nombre de personnes. C'est pourquoi on utilise actuellement des méthodes simplifiées, voire aléatoires. C'est ce que font divers sites Internet et autres applications informatiques pour offrir une proposition à l'usager. Dans le cadre d'un site 15 marchand par exemple, cette recommandation est utile pour proposer à un usager un produit supposé rejoindre ses goûts, et profiter ainsi d'une éventuelle vente supplémentaire. La figure 1 représente schématiquement les composants d'un dispositif 20 informatique 2 selon l'invention. Le dispositif 2 comprend une partie hors ligne HL et une partie en ligne OL. La partie HL comporte une source de données brutes 4 et un module d'arrière-plan 6 qui accède à la source 4 pour produire un modèle matriciel 8. La source de données 4 peut être réalisée de diverses manières, au moyen par exemple d'une bases de données, comme la base de données MovieLens, ou encore d'une autre source de données comme un annuaire LDAP. 30 Le module d'arrière-plan 6 comporte un contrôleur 10 qui interagit avec un classificateur croisé 12 et un lisseur 14, comme cela sera précisé avec la 25 2906910 6 description des figures 2 et 3. Le classificateur 12 et le lisseur 14 sont ici présentés comme des modules configurables, mais ils pourraient également être réalisés sous la forme de plusieurs modules spécialisés. 5 La partie en ligne OL comporte un gestionnaire de sélection 16 qui interagit avec un utilisateur 18 d'une part et avec un jeu de matrices en ligne 20 et une pile 22 de mise à jour d'autre part, pour réaliser des évaluations que l'on appelle ici recommandations, comme cela sera précisé avec la description de la figure 4. 10 L'utilisateur 18 peut être connecté directement sur un ordinateur ou un terminal mettant en oeuvre le dispositif 2, ou il peut être connecté à celui-ci par le biais d'un serveur Internet implémentant gestionnaire de sélection 16, au moyen d'un web service par exemple. De nombreuses autres implémentations sont 15 possibles pour le gestionnaire de sélection 16. Le jeu 20 est une copie du modèle matriciel 8 ou est au moins directement déductible de celui-ci. La pile 22 peut être réalisée sous la forme d'un tableau, d'une pile classique ou sous une autre forme appropriée. Lorsque le module d'arrière-plan 6 achève de calculer le modèle 8, les données de la pile 22 sont intégrées à la source de données 4 et la matrice 20 est mise à jour avec le modèle 8 qui vient d'être calculé. Ensuite, le module d'arrière-plan 6 réitère le calcul du modèle 8 pour tenir compte des nouvelles données. Le modèle matriciel 8 sera maintenant expliqué plus avant à l'aide des figures 2 et 3. Comme représenté sur la figure 2, les données brutes disponibles sont tirées 30 de la source 4. Dans une première étape M1, le contrôleur 10 appelle le classificateur 12 et opère sur ces données brutes une classification croisée, en 20 25 2906910 7 utilisant un critère basé une métrique reflétant la présence ou non d'un élément matriciel pour chacune des lignes et colonnes. La classification croisée est une méthode de tri connue qui consiste 5 généralement à croiser simultanément les colonnes et les lignes d'un tableau de données selon un critère choisi. Un exemple d'une méthode de classification croisée peut être trouvée dans "Information-theoretic co-clustering", par Inderjit S. Dhillon, Subramanyam 10 Mallela, et Dharmendra S. Modha, aux pages 89-98 dans "Proceedings of the Ninth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 2003". La classification croisée de l'étape M1 est double, de sorte que l'on obtient en 15 sortie une matrice brute classifiée 30 qui est constituée de blocs matriciels de taille réduite d'une part et des matrices de passage qui permettent de retrouver la matrice originale. Les blocs matriciels peuvent être entièrement remplis ou présenter également des éléments matriciels non remplis. 20 Les blocs matriciels de la matrice 30 constituent une vue simplifiée de la matrice de départ. Ainsi, là où il pouvait exister par exemple des blocs de 1000*1000, il reste alors des blocs de 10*10. La double classification croisée s'accompagne de la création d'une matrice de passage, qui permet de reconstituer la matrice originale à partir des blocs réduits obtenus. 25 Comme on l'a précisé plus haut, la matrice de base est extrêmement creuse. Cela signifie qu'une quantité importante des éléments matriciels de cette matrice sont vides. Cette première métrique utilisée pour classifier les données, basée sur la présence ou non de l'élément matriciel, est destinée à permettre 30 de distinguer les groupes qui présentent une quantité importante d'information des autres. 2906910 8 Dans une étape M2, le contrôleur 10 traite l'ensemble des blocs de la matrice 30 en calculant la densité de ces derniers. Cette densité est représentative du profil de présence/absence d'éléments matriciels dans chaque bloc. 5 Un test M3 relatif à la densité de cheque bloc détermine le type remplissage qui est alors appliqué aux éléments vides de ce bloc. En effet, dans le mode de réalisation décrit ici, le module d'arrière-plan construit un modèle 8 qui ne contient aucun élément matriciel vide, et qui permet donc 10 d'avoir une recommandation de chaque objet pour chaque acteur. Il serait néanmoins envisageable de ne remplir le modèle 8 que partiellement. Lorsqu'un bloc donné présente une densité suffisante, le contrôleur 10 appelle à nouveau le classificateur 12 dans une étape M4 et réalise à nouveau une 15 double classification croisée sur ce bloc, cette fois avec un critère basé sur une métrique reflétant la valeur des éléments matriciels de ce bloc. Il résulte de cette classification un bloc dense classifié intermédiaire 32, et les matrices de passage correspondantes. 20 Afin d'assurer que le bloc 32 soit entièrement rempli, le contrôleur 10 appelle le lisseur 14 dans une étape M5. Le lisseur 14 applique l'algorithme décrit dans l'annexe 1 jusqu'à ce qu'un critère de stabilité soit atteint. Dans l'algorithme de l'annexe 1, on désigne par R la matrice des notes et R(u, 25 a) est la note donnée par l'acteur u à l'objet a. On note P(u) l'ensemble des objets notés par l'acteur u et U(a) l'ensemble des acteurs qui ont noté l'objet a. Le calcul itératif est initialisé avec deux matrices identité, appelées COu (corrélations entre acteurs) et COp (corrélations entre objets). A l'étape n, la 30 matrice de corrélation entre acteurs est notée Cnu, et la matrice de corrélation 2906910 9 entre objets est notée Cnp. Le calcul des matrices Cnu et Cnp est réalisé par croisement à partir des matrices calculées à l'étape précédente. Ainsi, comme le montre la formule 11 de l'annexe 1, la matrice Cnu calculée à 5 l'étape n est établie sur la base de la matrice C(n-1)p de l'étape (n-1). De même, comme le montre la formule 21, la matrice Cnp, également calculée à l'étape n, est établie sur la base de la matrice C(n-1)u de l'étape (n-1) 21. Les formules 12 à 14 et 22 à 24 précisent les éléments des formules 11 et 21. 10 Concrètement, l'algorithme de l'étape M5 consiste à remplir les éléments matriciels vides sur la base d'éléments matriciels voisins choisis (les objets notés par les acteurs pour la matrice Cnu, et les acteurs ayant noté les objets pour la matrice Cnp). 15 Le remplissage est réalisé par corrélation selon les lignes de la matrice dans un premier temps (Cnu), puis selon les colonnes dans un deuxième temps (Cnp). Les éléments matriciels vides sont donc remplis par une itération qui croise les valeurs d'éléments matriciels voisins, ce qui constitue un remplissage par corrélation à la fois sur les lignes et sur les colonnes. 20 Bien que l'on puisse voir cet algorithme sous la forme d'une alternance itération sur les lignes/itération sur les colonnes, il serait possible d'utiliser un algorithme qui, en une seule opération, réaliserait un type de remplissage similaire basé sur une corrélation à la fois sur les lignes et sur les colonnes. II résulte de cet algorithme un bloc dense rempli 34. Dans le cas où le bloc 30 n'est pas dense, le contrôleur 10 appelle le lisseur 14 dans une étape M6 dont le résultat est un bloc creux rempli 36. 25 30 2906910 10 Le remplissage de l'étape M6 est un remplissage dit "moyenné", c'est-à-dire qu'il consiste à donner aux éléments matriciels vides la valeur de la moyenne des éléments non vides de ce bloc, s'il en existe, et à remplir tous les éléments matriciels vides sur la base d'une moyenne des éléments matriciels des blocs 5 environnants si le bloc ne contient que des éléments matriciels vides. Dans une étape M7, un test permet de vérifier si l'ensemble des blocs de la matrice 30 ont été traités. Le résultat obtenu est une matrice de blocs remplis 38 qui va servir de base aux modèle matriciel 8. Dans une étape M8, le contrôleur établit le jeu de matrices en ligne 20. La figure 3 précise le jeu de matrices 20. Comme on peut le voir sur cette figure, le jeu de matrices 20 comporte la matrice 38 principale, une matrice ou table 40 appelée Table_GU et une matrice ou table 42 appelée Table_GI. 15 La matrice 38 contient des lignes désignant des groupes d'acteurs et des colonnes désignant des groupes d'objets. La matrice 40 contient des lignes désignant des identifiants d'acteurs et des colonnes désignant des groupes d'acteurs. La matrice 42 contient en ligne des groupes d'objets et en colonne 20 des identifiants d'objets. Les matrices 40 et 42 sont obtenues à partir des matrices de passage qui sont produites lors des diverses doubles classifications croisées, et sont construites en même temps que la matrice M. Du fait de la métrique utilisée pour la double classification croisée utilisée dans l'exemple décrit ici, les matrices de passage 40 et 42 sont extrêmement creuses, et ne contiennent qu'une seule valeur non nulle par ligne pour la matrice 40, et une seule valeur non nulle par colonne pour la matrice 42. 10 25 30 2906910 11 Il serait cependant possible de réaliser une classification croisée impliquant une métrique pondérée, qui permettrait d'affecter les utilisateurs à plusieurs groupes de manière pondérée, et de même pour les objets. 5 La figure 4 montre un exemple d'une fonction d'évaluation basée sur le jeu 20, qui permet de d'évaluer une valeur d'un vote sur un objet qui a un identifiant d'objet idlt par un utilisateur qui a un identifiant d'acteur idUt, l'utilisateur n'ayant bien sûr pas évalué cet objet précédemment. 10 La fonction d'évaluation du gestionnaire de sélection 16 repose sur l'obtention préliminaire dans une étape El d'un couple d'identifiants (idUt, idlt) d'un acteur d'une part et d'un objet d'autre part. Dans des étapes simultanées E2 et E3, le gestionnaire récupère dans les tables 15 Table_GU et Table_GI (les matrices 40 et 42), la ligne correspondant à idUt et la colonne correspondant à idlt, et les stocke respectivement dans deux vecteurs $gu et $gi. Dans une étape E4, l'évaluation est définie comme le produit $gu*M*$gi. Cette 20 formule est basée sur l'hypothèse que la somme des termes des lignes de la table Table Gu et la somme des termes des colonnes de la table Table GI sont toutes deux égales à 1, de par une normalisation effectuée lors de la génération de ces deux tables. 25 Dans l'exemple ici décrit, comme les matrices 40 et 42 sont creuses, cela se résume à une multiplication. Cependant, cette formalisation matricielle prend tout son intérêt avec une classification avec pondération tel que mentionné plus haut. La valeur évaluée est ensuite retournée dans une étape E5. 30 La fonction d'évaluation décrite ci-dessus permet d'implémenter un nombre important de fonctions pour l'utilisateur 18. En effet, celui-ci peut directement 2906910 12 désigner un objet dont il désire obtenir une évaluation, mais il peut également désigner un genre d'objets, que le gestionnaire de sélection 16 peut sélectivement associer à des identifiants d'objets et retourner leurs évaluations. 5 L'utilisateur 18 peut également fournir une évaluation choisie et obtenir du gestionnaire de sélection 16 une liste des objets qui correspondent à cette évaluation. II est possible également de mélanger plusieurs de ces requêtes pour fournir une grande souplesse d'utilisation. 10 Pour que l'évaluation soit réalisable et raisonnablement fiable, il faut que l'utilisateur désigné par l'identifiant idUt ait des votes dans la source de données 4 ou dans la pile 22. Sinon, il n'est pas possible d'affecter cet utilisateur à un groupe de la table Table_GU et l'on ne peut faire qu'une évaluation basée par exemple sur la moyenne de tous les groupes de la table Table_GU. 15 Pour mettre à jour les données d'un utilisateur donné et tenir compte de votes récents avant que le jeu 20 ait été mis à jour sur la base du modèle 8, le gestionnaire de sélection 16 utilise une fonction Vote représentée sur la figure 5. 20 Partant dans une étape VI dans laquelle un utilisateur d'identifiant d'acteur idUt fournit au gestionnaire de sélection 16 un vote de valeur $val concernant un objet d'identifiant d'objet idlt, le triplet (idUt, idlt, $val) est d'abord enregistré dans la pile 22 dans une étape V2, pour intégration ultérieure à la source 4 et 25 au modèle 8. Ensuite, dans deux étapes V3 et V4 qui peuvent être réalisées en parallèle ou en série, le gestionnaire de sélection met à jour les matrices 40 et 42 sur la base respectivement de l'identifiant d'acteur idUt et de l'identifiant d'objet idlt. 30 2906910 13 Les étapes V3 et V4 peuvent également être réalisées de manière sélective et découplée dans le temps, afin de tenir compte du profil d'un utilisateur ou du produit concerné par le vote. 5 En effet, les premiers votes d'un utilisateur (respectivement les premiers votes reçus par un produit), ont une influence primordiale sur son classement dans un groupe d'acteurs donné (respectivement un groupe d'objets donné). Chaque vote a alors tendance à le faire changer de groupe. Au bout d'un 10 certain nombre de votes, l'appartenance à un groupe se stabilise, et il y a peu de chance qu'un vote seul le fasse changer. Il semble donc plus important de mettre à jour la table Table_GU (respectivement la table Table_GI) lorsqu'un vote est enregistré pour un 15 utilisateur présentant peu de votes, que pour un utilisateur ayant déjà de nombreux votes. Lorsqu'un acteur (respectivement un produit) présente un nombre de votes important, par exemple 100, le module d'arrière-plan peut donc appliquer 20 l'étape V3 (respectivement l'étape V4) de manière sélective et/ou décalée dans le temps, par exemple tous les dix votes, afin d'alléger la charge de calcul, et améliorer ainsi les performances de l'application. La mise à jour est réalisée au moyen d'une fonction Update décrite avec la 25 figure 6. Dans une étape U1, la fonction est appelée avec comme argument la table à mettre à jour et le numéro d'identifiant id de la ligne ou de la colonne à mettre à jour. Cette mise à jour pourrait également être réalisée avec une unique 30 fonction appelée avec les deux identifiants. 2906910 14 Dans une étape U2, on teste si la table à mettre à jour est celle des groupes d'acteurs (matrice 40 ou Table_GU) ou celle des groupes d'objets (matrice 42 ou Table_GI). 5 Si c'est la Table_GU, dans une étape U3, les valeurs des éléments matriciels associés à id dans la source 4 et celles contenues dans la pile 22 sont rassemblées dans un vecteur décrivant l'ensemble des votes (et non votes) de l'utilisateur lié à id. 10 Le vecteur ainsi formé est alors "projeté" dans une étape U4 sur M*Table_Gl, afin de déterminer à quel groupe d'acteurs cet utilisateur doit être rattaché. Un exemple de réalisation de l'étape U4 sera décrit ci-après à l'aide de la figure 7. Si c'est la Table_GI, dans une étape U5, les valeurs des éléments matriciels 15 associés à id dans la source 4 et celles contenues dans la pile 22 sont rassemblées dans un vecteur décrivant l'ensemble des votes (et non votes) concernant l'objet lié à id. Le vecteur ainsi formé est alors "projeté" dans une étape U6 sur Table_GU*M, 20 afin de déterminer à quel groupe d'objets cet objet doit être rattaché. Un exemple de réalisation de l'étape U6 sera décrit ci-après à l'aide de la figure 7. Dans une étape P1, la fonction Project représentée sur la figure 7 reçoit en argument la table que l'on souhaite mettre à jour, l'identifiant de la ligne ou de la 25 colonne concernée, et le vecteur des votes décrit à partir de la figure 6. Dans une étape P2, le type de table est déterminé et désigne l'opération qui va être effectuée. Si c'est la table Table_GU (matrice 40) qui est concernée, alors, la projection est effectuée dans une étape P3, en réalisant le produit 30 M*Table_Gl*$vect. Le vecteur colonne $vect2 qui résulte de ce produit est la "projection" décrite plus haut. 2906910 15 La table Table_GU est alors mise à jour dans une étape P4 en mettant à jour la ligne id de cette table, dans laquelle le seul terme non nul est celui dont la colonne correspond à l'indice qui représente la valeur maximale de $vect2. Ainsi, la table Table_GU garde la même forme que précédemment. Comme décrit plus haut, il serait également possible de garder toutes les valeurs de $vect2 dans la table Table_GU, afin d'obtenir une affectation pondérée de l'utilisateur aux groupes d'acteurs. 10 Si c'est la table Table_GI qui est concernée alors des étapes P5 et P6 sont réalisées, selon des opérations similaires à celles des étapes P3 et P4 et qui apparaîtront de manière évidente au vu de la figure 6 et de ce qui précède. On notera cependant que, dans le cas de l'étape P3, le vecteur $vect est un 15 vecteur ligne, alors que dans le cas de l'étape P5, le vecteur $vect est un vecteur colonne. Une fois la projection réalisée et la table mise à jour, la fin de cette fonction est réalisée dans une étape P7 et la suite des opérations précédentes suit son 20 cours. L'invention concerne également un code de programme d'ordinateur pour mettre en oeuvre le dispositif décrit ci-dessus, ainsi qu'un support informatique pour un tel programme. Dans l'exemple ici décrit, le modèle est obtenu au moyen de deux doubles classifications croisées avec des critères basés sur une métrique de présence de l'élément matriciel d'une part, et une métrique de valeurs de l'élément matriciel d'autre part. 5 25 30 2906910 16 Cependant, il serait également envisageable de réaliser une unique double classification croisée avec un critère combinant ces deux métriques. En outre, il a été ici décrit des méthodes de calcul faisant appel au calcul matriciel classique, mais il serait possible de faire appel à des opérateurs matriciels 5 légèrement modifiés, notamment pour prendre en compte le vide partiel des éléments d'un tel calcul. 2906910 17 Annexe 1 Section 1 Cu (u v) = 1 E C;' (ab) R(u, a) û u R(v, b) û v (11) 77u,v aEP(u), bEP(v) u v 77u,v Cpnù1(a, b) P aEP(u), bEP(v) 1 = E CP-1(a b)R(u a) aEP(u), bEP(v) u2 = 1 E CP-1(a, b) (R(u, a) ù u)2 aEP(u), bEP(v) Section 2 CP (a b) = 1 E CZù1(u v) R(u, a) ù a R(v, b) ù 'b (21) Qb uEU(a), vEU(b) ~ù1 %,b = cu (u, v) uEU(a), vEU(b) a 1 = E Cu-1(u, v)R(u, a) (23) Ï]a,b uEU(a), vEU(b) Qa2 = 1 (u, v) (R(u, a) a) ''a'b uEU(a), vEU(b) (12) (13) (14) (22) 2 (24) Revendications 1 Dispositif informatique corrélation propagative, comprenant : - une mémoire (4) pour stocker une matrice brute qui croise des identifiants d'objets (idlt), et des identifiants d'acteurs (idUt), un élément matriciel quantifié étant présent ou non, un module d'arrière-plan (6) capable de convertir la matrice brute en des blocs matriciels reclassés, en fonction d'un critère lié à l'élément matriciel quantifié, et - un gestionnaire de sélection (16), capable, à réception d'un identifiant d'acteur d'entrée, de rechercher cet identifiant d'acteur d'entrée dans une première table (40), qui contient des liens dont chacun associe un identifiant d'acteur (idUt) et un ou plusieurs blocs matriciels associés à cet identifiant d'acteur (idUt), et de présenter une information dépendant des contenus du ou des blocs matriciels associés à l'identifiant d'acteur d'entrée (idUt), caractérisé en ce que le module d'arrière-plan comprend un classificateur croisé (12), pour convertir la matrice brute en blocs matriciels reclassés (32), selon un critère combinant une métrique de présence de l'élément matriciel, et une métrique de valeurs de l'élément matriciel, et en ce que le gestionnaire de sélection (16) travaille sur la base des blocs matriciels reclassés (32). 2. Dispositif selon la revendication 1, caractérisé en ce que le module d'arrière-plan (6) comporte un contrôleur (10) pour appeller le classificateur croisé (12) avec un critère relié à la présence de l'élément matriciel, pour rassembler à la fois les identifiants d'acteurs (idUt) par profil de présence/absence d'élément matriciel selon les identifiants d'objets (idlt), et les identifiants d'objets (idlt) par profils de présence/absence d'élément matriciel selon les identifiants 2906910 Dispositif selon l'une des revendications 1 à 3, caractérisé en ce que le module d'arrière-plan comprend en outre un lisseur (14), propre à remplir des éléments matriciels vides d'un bloc matriciel donné, en fonction d'un critère relié à la densité du profil de présence/absence d'éléments matriciels de ce bloc, pour obtenir un bloc rempli (34). Dispositif selon la revendication 4, caractérisé en ce que le lisseur (14) est propre à remplir sélectivement par voisinage (M5) les éléments matriciels vides d'un bloc matriciel qui présente une densité d'un niveau choisi. Dispositif selon la revendication 5, caractérisé en ce que le lisseur (14) est propre à remplir les éléments matriciels vides d'un bloc matriciel sur la base d'une itération croisant de manière sélective les valeurs des éléments matriciels voisins. Dispositif selon la revendication 4, caractérisé en ce que le lisseur (14) est propre à remplir par moyenne (M6) les éléments matriciels vides d'un bloc matriciel qui présente une densité d'un niveau choisi. Dispositif selon l'une des revendications précédentes, caractérisé en ce que le gestionnaire de sélection (16) présente l'information en d'acteurs (idUt), pour convertir la matrice brute en blocs matriciels intermédiaires (30). 3. Dispositif selon la revendication 2, caractérisé en ce que le contrôleur (10) appelle itérativement et sélectivement le classificateur croisé (12) avec un critère relié à la valeur de l'élément matriciel sur certains au moins des blocs matriciels intermédiaires (30) qui présentent des profils de présence/absence d'éléments matriciels de densité choisie pour les convertir en blocs matriciels reclassés (32). 5 10 4. 15 5. 20 6. 25 7 30 8. 19 2906910 20 fonction d'une seconde table (42), qui contient des liens dont chacun associe un bloc matriciel et un ou plusieurs identifiants d'objet (idlt). 9. Dispositif selon la revendication 8, caractérisé en ce que le 5 gestionnaire de sélection (16) est capable de mettre à jour les tables (40, 42) sur la base d'un nouvel élément matriciel. 10. Dispositif selon la revendication 9, caractérisé en ce que le gestionnaire de sélection (16) est capable de stocker ledit élément 10 matriciel dans la mémoire de stockage (4).