Quale motore di raccomandazione per una situazione in cui gli utenti possono vedere solo una frazione di tutti gli articoli?


9

Voglio aggiungere una funzione di raccomandazione a un sistema di gestione dei documenti . È un server su cui è archiviata la maggior parte dei documenti dell'azienda. I dipendenti navigano nell'interfaccia Web e fanno clic per scaricare (o leggere online) i documenti che desiderano.
Ogni dipendente ha accesso solo a un sottoinsieme di tutti i documenti:

I dipendenti hanno accesso solo a un sottoinsieme di tutti i documenti

Il mio obiettivo : raccomandare a un dipendente i documenti recentemente aperti dai loro compagni di squadra, o il foglio di calcolo che funge da allegato al documento che hanno appena aperto, o tutto ciò che potrebbero voler leggere.

Esistono molti motori di raccomandazione per i dati disponibili pubblicamente (tutti gli utenti di Netflix possono vedere tutti i film), ma la situazione qui è speciale: ogni dipendente ha il permesso solo per una frazione di tutti i documenti, mentre in Netflix ogni utente ha accesso a tutti i film.

Esempio : Employee1 può leggere DocumentA ma non DocumentB. Employee2 può leggere entrambi e Employee3 non può leggere nessuno.

Certo, non devo raccomandare a un dipendente i documenti a cui non ha accesso. Inoltre, suppongo che dovrei considerare la popolarità di un documento solo nel contesto dei dipendenti che hanno accesso ad esso. Per rendere le cose ancora più complicate, i dipendenti a volte passano da un progetto all'altro, il che incide sui documenti a cui hanno accesso.

  • C'è un nome per questo tipo di problema?
  • Può essere ridotto senza perdita di precisione / efficienza a un tipo più comune di problema?
  • In caso contrario, quale approccio funzionerebbe bene per questo tipo di problema?

Nota: un motore di raccomandazione simile a Netflix non è abbastanza buono. Un documento con 50 visualizzazioni dovrebbe essere importante se solo 10 dipendenti (incluso me) hanno accesso ad esso, ma non prominente se 100000 dipendenti vi abbiano accesso.

Nel caso sia necessario, ecco alcuni dati specifici: la società media ha 1000 dipendenti, circa 10000 documenti, un dipendente fa clic su circa 5 documenti al giorno. Ogni progetto ha in media 10 dipendenti che vi hanno accesso e conta circa 100 documenti. Ogni dipendente lavora su una media di 5 progetti in parallelo.

Risposte:


1

Sento che devi affrontare due cose separatamente.

Innanzitutto, devi avere il controllo dell'accesso per gli utenti nel tuo sistema. Puoi avere token di accesso allegati a ciascun utente e file. Filtra il database dei file prima di elaborare.

In secondo luogo, classificare i documenti che suggerirei abbia un certo peso per un peso del documento e un peso dell'utente rispetto all'utente corrente di navigazione.

Ad esempio, posso pensare al peso del documento e al peso dell'utente come segue, ma possono essere molto più complessi secondo il tuo sistema-

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}

Puoi classificare i documenti, questo tirerà statisticamente i documenti di cui hai bisogno. Spero che questo possa essere di aiuto.


0

Dalla tua descrizione, ti suggerirei di guardare a metodi chiamati filtri collaborativi . Fondamentalmente, potresti considerare qualsiasi visualizzazione / download di un documento come un feedback positivo per alcuni articoli e quindi raccomandare tali articoli agli utenti che cercano documenti simili.

Il filtraggio dei risultati nascosti dovrebbe essere eseguito su base per utente (trovi tutti i possibili suggerimenti, ma ottieni solo quelli che l'utente può vedere).


Non credo che un metodo così generico sarebbe sufficiente: un documento con 50 visualizzazioni dovrebbe essere importante se solo 10 dipendenti (incluso me) hanno accesso ad esso, ma non prominente se 100000 dipendenti vi hanno accesso.
Nicolas Raoul,

Non ho descritto il metodo, ma un'idea generale. Il filtro collaborativo è più complicato e il collegamento che ho fornito è un buon punto di accesso, mentre puoi cercare diverse implementazioni e approcci e trovare i più adatti per le tue specifiche specifiche dei dati.
chewpakabra,

Ho descritto i miei dati specifici abbastanza chiaramente nella mia domanda? In caso contrario, non esitare a chiedere qualsiasi informazione necessaria prima di poter raccomandare un approccio specifico. Grazie mille :-)
Nicolas Raoul,

Ciò che trovo confuso è l'assenza di una chiara idea del perché un documento con 10000 visualizzazioni non valga la pena mostrarlo come raccomandazione e uno con 50 visualizzazioni è OK. Che ne dici di 100? O 51? Se hai una percentuale definita di pubblico che rende irrilevante la vista, puoi semplicemente escludere tali casi dal set di formazione e continuare a seguire approcci collaborativi. In caso contrario, potresti avere un problema di classificazione o clusterizzazione di qualche tipo, che è un argomento molto più ampio.
chewpakabra,

Da dove viene la cifra 10000? Se intendevi 100000, allora non ero abbastanza chiaro: "avere accesso ad esso" non significa "averlo visto", significa "avere il permesso di accedervi se lo desiderano". In altre parole, il primo documento è stato visualizzato in media 10 volte da ogni persona che ha il permesso di visualizzarlo, ma il secondo documento è stato visualizzato solo in media 0,0005 volte da ogni persona che ha il permesso di visualizzarlo.
Nicolas Raoul,

0

Dai un'occhiata a Mining of Massive Data Set pagg. 328 che alla fine ti porterà a SVD che è comunemente usato nei sistemi di raccomandazione.


La pagina che menzioni introduce varie generalità sulla riduzione della dimensionalità. Ti dispiacerebbe riassumere ciò che si applica alla domanda sopra? Molte grazie!
Nicolas Raoul,

sì; mostra come utilizzare SVD per la raccomandazione
Drey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.