Quel moteur de recommandation pour une situation où les utilisateurs ne peuvent voir qu'une fraction de tous les éléments?


9

Je veux ajouter une fonction de recommandation à un système de gestion de documents . Il s'agit d'un serveur sur lequel la plupart des documents de l'entreprise sont stockés. Les employés parcourent l'interface Web et cliquent pour télécharger (ou lire en ligne) les documents qu'ils souhaitent.
Chaque employé n'a accès qu'à un sous-ensemble de tous les documents:

Les employés n'ont accès qu'à un sous-ensemble de tous les documents

Mon objectif : recommander à un employé les documents récemment ouverts par ses coéquipiers, ou la feuille de calcul qui sert d'annexe au document qu'il vient d'ouvrir, ou tout ce qu'il souhaite lire.

Il existe de nombreux moteurs de recommandation pour les données accessibles au public (tous les utilisateurs de Netflix peuvent voir tous les films), mais la situation est particulière: chaque employé n'a l'autorisation que pour une fraction de tous les documents, tandis que dans Netflix, tout utilisateur a accès à tous les films.

Exemple : Employee1 peut lire DocumentA mais pas DocumentB. L'employé2 peut lire les deux et l'employé3 ne peut en lire aucun.

Bien entendu, je ne dois pas recommander à un employé des documents auxquels il n'a pas accès. De plus, je suppose que je ne devrais considérer la popularité d'un document que dans le contexte des employés qui y ont accès. Pour compliquer encore les choses, les employés passent parfois d'un projet à un autre, ce qui impacte les documents auxquels ils ont accès.

  • Y a-t-il un nom pour ce genre de problème?
  • Peut-il être réduit sans perte de précision / efficacité à un type de problème plus courant?
  • Sinon, quelle approche fonctionnerait bien pour ce genre de problème?

Remarque: Un moteur de recommandation de type Netflix n'est pas suffisant. Un document avec 50 vues devrait être visible si seulement 10 employés (y compris moi) y ont accès, mais pas visible si 100 000 employés y ont accès.

Au cas où cela serait nécessaire, voici quelques données spécifiques: L'entreprise moyenne compte 1000 employés, environ 10000 documents, un employé clique sur environ 5 documents par jour. Chaque projet compte en moyenne 10 employés y ayant accès et compte environ 100 documents. Chaque collaborateur travaille en moyenne sur 5 projets en parallèle.

Réponses:


1

Je pense que vous devez aborder deux choses séparément.

Tout d'abord, vous devez avoir un contrôle d'accès pour les utilisateurs de votre système. Vous pouvez avoir des jetons d'accès attachés à chaque utilisateur et fichier. Filtrez la base de données de fichiers avant de procéder.

Deuxièmement, le classement des documents que je suggérerais aurait un certain poids pour un poids de document et un poids d'utilisateur qui par rapport à l'utilisateur actuel.

Par exemple, je peux penser au poids du document et au poids de l'utilisateur comme suit, mais ils peuvent être beaucoup plus complexes selon votre système.

DocumentWeight = Number of Views/ Number of Users can Access
UserWeight = ## Relative to browsing user- Users in similar project will have higher weights

DocumentScore = Sum over all viewed users{DocumentWeight x UserWeight}

Vous pouvez classer les documents, cela affichera statistiquement les documents dont vous avez besoin. J'espère que cela vous sera utile.


0

D'après votre description, je vous suggère de vous tourner vers des méthodes appelées filtrage collaboratif . Fondamentalement, vous pouvez traiter tout affichage / téléchargement d'un document comme une rétroaction positive pour un élément, puis recommander ces éléments aux utilisateurs qui consultent des documents similaires.

Le filtrage des résultats masqués doit être effectué par utilisateur (vous trouverez toutes les suggestions possibles, mais ne produisez que celles que l'utilisateur peut voir).


Je ne pense pas qu'une telle méthode générique suffirait: un document avec 50 vues devrait être visible si seulement 10 employés (y compris moi) y ont accès, mais pas si 100 000 employés y ont accès.
Nicolas Raoul

Je n'ai pas décrit la méthode, mais l'idée générale. Le filtrage collaboratif est plus compliqué et le lien que j'ai fourni est un bon point d'entrée, tandis que vous pouvez rechercher différentes implémentations et approches et trouver le plus approprié pour vos spécificités de données particulières.
chewpakabra

Ai-je décrit mes détails de données suffisamment clairement dans ma question? Sinon, n'hésitez pas à demander toute information nécessaire avant qu'une approche spécifique puisse être recommandée. Merci beaucoup :-)
Nicolas Raoul

Ce que je trouve confus, c'est l'absence d'idée claire pourquoi un document avec 10000 vues ne vaut pas la peine d'être montré comme recommandation, et un avec 50 vues est OK. Et 100? Ou 51? Si vous avez un pourcentage d'audience défini qui rend le nombre de vues non pertinent, vous pouvez simplement exclure de tels cas de l'ensemble de formation et continuer à utiliser des approches collaboratives. Sinon, vous pourriez avoir un problème de classification ou de clusterisation, qui est un sujet beaucoup plus large.
chewpakabra

D'où vient le chiffre 10000? Si vous vouliez dire 100000, je n'étais pas assez clair: "y avoir accès" ne signifie pas "l'avoir vu", cela signifie "avoir la permission d'y accéder s'ils le souhaitent". En d'autres termes, le premier document a été consulté en moyenne 10 fois par chaque personne autorisée à le consulter, mais le deuxième document n'a été consulté qu'en moyenne 0,0005 fois par chaque personne autorisée à le visualiser.
Nicolas Raoul

0

Jetez un coup d'œil à l' extraction d'ensembles de données massifs, p. 328, qui vous mènera éventuellement à une SVD couramment utilisée dans les systèmes de recommandation.


La page que vous mentionnez présente diverses généralités sur la réduction de la dimensionnalité. Pourriez-vous résumer ce qui s'applique à la question ci-dessus? Merci beaucoup!
Nicolas Raoul

Oui; il montre comment utiliser SVD pour la recommandation
Drey
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.