¿Qué motor de recomendación para una situación en la que los usuarios solo pueden ver una fracción de todos los elementos?


9

Quiero agregar una función de recomendación a un sistema de gestión de documentos . Es un servidor en el que se almacenan la mayoría de los documentos de la empresa. Los empleados navegan por la interfaz web y hacen clic para descargar (o leer en línea) los documentos que desean.
Cada empleado solo tiene acceso a un subconjunto de todos los documentos:

Los empleados solo tienen acceso a un subconjunto de todos los documentos

Mi objetivo : recomendar a un empleado los documentos abiertos recientemente por sus compañeros de equipo, o la hoja de cálculo que sirve como anexo al documento que acaban de abrir, o cualquier cosa que quieran leer.

Hay muchos motores de recomendación para los datos disponibles públicamente (todos los usuarios de Netflix pueden ver todas las películas), pero la situación aquí es especial: cada empleado solo tiene permiso para una fracción de todos los documentos, mientras que en Netflix cualquier usuario tiene acceso a todas las películas.

Ejemplo : Empleado1 puede leer el Documento A pero no el Documento B. Employee2 puede leer ambos y Employee3 no puede leer ninguno.

Por supuesto, no debo recomendar a un empleado documentos a los que no tenga acceso. Además, creo que debería considerar la popularidad de un documento solo en el contexto de los empleados que tienen acceso a él. Para complicar aún más las cosas, los empleados a veces pasan de un proyecto a otro, lo que afecta los documentos a los que tienen acceso.

  • ¿Hay un nombre para este tipo de problema?
  • ¿Se puede reducir sin pérdida de precisión / eficiencia a un tipo de problema más común?
  • Si no, ¿qué enfoque funcionaría bien para este tipo de problema?

Nota: Un motor de recomendación similar a Netflix no es lo suficientemente bueno. Un documento con 50 vistas debe ser destacado si solo 10 empleados (incluido yo) tienen acceso a él, pero no destacado si 100000 empleados tienen acceso a él.

En caso de que sea necesario, aquí hay algunos datos específicos: la compañía promedio tiene 1000 empleados, aproximadamente 10000 documentos, un empleado hace clic en aproximadamente 5 documentos por día. Cada proyecto tiene un promedio de 10 empleados que tienen acceso a él y tiene alrededor de 100 documentos. Cada empleado trabaja en un promedio de 5 proyectos en paralelo.

Respuestas:


1

Siento que necesitas abordar dos cosas por separado.

Primero, debe tener control de acceso para los usuarios de su sistema. Puede tener tokens de acceso adjuntos a cada usuario y archivo. Filtre la base de datos de archivos antes de procesar.

En segundo lugar, clasificaría los documentos que sugeriría tener un peso para un peso de documento y un peso de usuario en relación con el usuario de navegación actual.

Por ejemplo, puedo pensar en el peso del documento y el peso del usuario de la siguiente manera, pero pueden ser mucho más complejos según su 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}

Puede clasificar los documentos, esto estadísticamente extraerá los documentos que necesita. Espero que esto sea de alguna ayuda.


0

A partir de su descripción, sugeriría que busque métodos llamados filtrado colaborativo . Básicamente, podría tratar cualquier vista / descarga de un documento como un comentario positivo para algún elemento y luego recomendar dichos elementos para los usuarios que buscan documentos similares.

El filtrado de los resultados ocultos debe realizarse por usuario (encontrará todas las sugerencias posibles, pero solo mostrará aquellas que el usuario pueda ver).


No creo que un método tan genérico sea suficiente: un documento con 50 vistas debería ser destacado si solo 10 empleados (incluido yo) tienen acceso a él, pero no destacado si 100000 empleados tienen acceso a él.
Nicolas Raoul

No describí el método, sino la idea general. El filtrado colaborativo es más complicado y el enlace que he proporcionado es un buen punto de entrada, mientras que puede buscar diferentes implementaciones y enfoques y encontrar el más adecuado para sus datos específicos.
chewpakabra

¿Describí mis datos específicos con suficiente claridad en mi pregunta? De lo contrario, no dude en solicitar cualquier información que sea necesaria antes de recomendar un enfoque específico. Muchas gracias :-)
Nicolas Raoul

Lo que encuentro confuso es la ausencia de una idea clara de por qué no vale la pena mostrar un documento con 10000 vistas como recomendación, y uno con 50 vistas está bien. ¿Qué hay de 100? O 51? Si tiene un porcentaje definido de audiencia que hace que la vista cuente irrelevante, puede excluir tales casos del conjunto de capacitación y seguir con enfoques colaborativos. De lo contrario, es posible que tenga un problema de clasificación o agrupación de algún tipo, que es un tema mucho más amplio.
chewpakabra

¿De dónde viene la figura 10000? Si se refería a 100000, entonces no estaba lo suficientemente claro: "tener acceso a él" no significa "haberlo visto", significa "tener permiso para acceder si lo desean". En otras palabras, el primer documento ha sido visto un promedio de 10 veces por cada persona que tiene permiso para verlo, pero el segundo documento ha sido visto solo un promedio de 0.0005 veces por cada persona que tiene permiso para verlo.
Nicolas Raoul

0

Eche un vistazo a Minería de conjuntos de datos masivos, pág. 328, que eventualmente lo conducirá a SVD que se usa comúnmente en sistemas de recomendación.


La página que menciona presenta varias generalidades sobre la reducción de dimensionalidad. ¿Te importaría resumir lo que se aplica a la pregunta anterior? ¡Muchas gracias!
Nicolas Raoul

si; muestra cómo usar SVD para recomendación
Drey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.