Jaki silnik rekomendacji dla sytuacji, w której użytkownicy widzą tylko ułamek wszystkich elementów?


9

Chcę dodać funkcję rekomendacji do systemu zarządzania dokumentami . Jest to serwer, na którym przechowywana jest większość dokumentów firmowych. Pracownicy przeglądają interfejs sieciowy i klikają, aby pobrać (lub czytać online) żądane dokumenty.
Każdy pracownik ma dostęp tylko do podzestawu wszystkich dokumentów:

Pracownicy mają dostęp tylko do podzbioru wszystkich dokumentów

Mój cel : polecić pracownikowi dokumenty ostatnio otwarte przez członków jego zespołu lub arkusz kalkulacyjny, który służy jako załącznik do dokumentu, który właśnie otworzyli, lub cokolwiek, co chcieliby przeczytać.

Istnieje wiele mechanizmów rekomendacji dla publicznie dostępnych danych (wszyscy użytkownicy Netflix mogą zobaczyć wszystkie filmy), ale sytuacja jest tutaj wyjątkowa: każdy pracownik ma uprawnienia tylko do ułamka wszystkich dokumentów, podczas gdy w Netflix każdy użytkownik ma dostęp do wszystkich filmów.

Przykład : Pracownik 1 może odczytać Dokument A, ale nie Dokument B. Pracownik 2 może odczytać oba, a Pracownik 3 nie może odczytać żadnego.

Oczywiście nie wolno mi polecać pracownikom dokumentów, do których nie ma on dostępu. Co więcej, myślę, że powinienem rozważyć popularność dokumentu tylko w kontekście pracowników, którzy mają do niego dostęp. Aby jeszcze bardziej skomplikować sytuację, pracownicy czasami przenoszą się z jednego projektu do drugiego, co wpływa na dokumenty, do których mają dostęp.

  • Czy istnieje nazwa tego rodzaju problemu?
  • Czy można to zredukować bez utraty precyzji / wydajności do bardziej powszechnego rodzaju problemu?
  • Jeśli nie, jakie podejście zadziałałoby dobrze w przypadku tego rodzaju problemu?

Uwaga: silnik rekomendacji podobny do Netflix nie jest wystarczająco dobry. Dokument z 50 widokami powinien być widoczny, jeśli tylko 10 pracowników (w tym ja) ma do niego dostęp, ale nie powinien być widoczny, jeśli 100 000 pracowników ma do niego dostęp.

W razie potrzeby, oto kilka szczegółów dotyczących danych: Przeciętna firma ma 1000 pracowników, około 10000 dokumentów, pracownik klika około 5 dokumentów dziennie. Każdy projekt ma średnio 10 pracowników mających do niego dostęp i zawiera około 100 dokumentów. Każdy pracownik pracuje średnio 5 projektów równolegle.

Odpowiedzi:


1

Uważam, że musisz poruszyć dwie rzeczy osobno.

Po pierwsze, musisz mieć kontrolę dostępu dla użytkowników w systemie. Do każdego użytkownika i pliku można dołączyć tokeny dostępu. Przefiltruj bazę danych plików przed przetworzeniem.

Po drugie, ranking dokumentów, które sugeruję, powinien mieć pewną wagę do wagi dokumentu i wagi użytkownika w stosunku do bieżącego użytkownika przeglądającego.

Na przykład mogę pomyśleć o wadze dokumentu i wadze użytkownika w następujący sposób, ale mogą być one znacznie bardziej złożone w zależności od systemu

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}

Możesz uszeregować dokumenty, co spowoduje statystyczny wzrost potrzebnych dokumentów. Mam nadzieję, że to pomoże.


0

Z twojego opisu sugerowałbym, abyś spojrzał na metody zwane filtrowaniem grupowym . Zasadniczo możesz traktować każdy widok / pobranie dokumentu jako pozytywną opinię na temat jakiegoś elementu, a następnie polecić takie elementy użytkownikom przeglądającym podobne dokumenty.

Filtrowanie ukrytych wyników powinno odbywać się dla poszczególnych użytkowników (znajdziesz wszystkie możliwe sugestie, ale wypisuj tylko te, które użytkownik może zobaczyć).


Nie sądzę, aby taka ogólna metoda była wystarczająca: dokument z 50 widokami powinien być widoczny, jeśli tylko 10 pracowników (w tym ja) ma do niego dostęp, ale nie jest widoczny, jeśli 100000 pracowników ma do niego dostęp.
Nicolas Raoul

Opisałem nie metodę, ale ogólny pomysł. Wspólne filtrowanie jest bardziej skomplikowane, a link, który podałem, jest dobrym punktem wyjścia, podczas gdy możesz wyszukiwać różne implementacje i podejścia i znaleźć najbardziej odpowiednie dla twoich konkretnych danych.
chewpakabra

Czy w moim pytaniu wystarczająco jasno opisałem swoje dane? Jeśli nie, możesz poprosić o wszelkie informacje, które są potrzebne, zanim będzie można zalecić określone podejście. Wielkie dzięki :-)
Nicolas Raoul

Moim zdaniem dezorientuje mnie brak jasnego pojęcia, dlaczego dokument z 10000 widokami nie jest wart rekomendacji, a dokument z 50 widokami jest OK. Co powiesz na 100? Czy 51? Jeśli masz określony odsetek odbiorców, co powoduje, że liczba wyświetleń jest nieistotna, możesz po prostu wykluczyć takie przypadki z zestawu treningowego i nadal trzymać się podejścia opartego na współpracy. Jeśli nie, możesz mieć problem z klasyfikacją lub klastrowaniem, co jest znacznie szerszym tematem.
chewpakabra

Skąd pochodzi liczba 10000? Jeśli miałeś na myśli 100000, to nie byłem wystarczająco jasny: „mieć do niego dostęp” nie oznacza „obejrzałem”, to znaczy „mieć pozwolenie na dostęp do niego, jeśli chcą”. Innymi słowy, pierwszy dokument był przeglądany średnio 10 razy przez każdą osobę, która ma pozwolenie na jego przeglądanie, ale drugi dokument był przeglądany tylko średnio 0,0005 razy przez każdą osobę, która ma pozwolenie na jego przeglądanie.
Nicolas Raoul

0

Spójrz na Mining of Massive Data Sets str. 328, który ostatecznie doprowadzi cię do SVD, który jest powszechnie stosowany w systemach rekomendujących.


Wspomniana strona wprowadza różne ogólne informacje na temat redukcji wymiarów. Czy mógłbyś podsumować, co dotyczy powyższego pytania? Wielkie dzięki!
Nicolas Raoul,

tak; pokazuje, jak używać SVD do rekomendacji
Drey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.