Para las historias de noticias, generalmente tiene un conjunto de candidatos de algún tipo, por ejemplo, las X historias de noticias más recientes para un tema, y su objetivo podría ser clasificar los elementos en este conjunto de candidatos en función del historial de lectura del usuario.
Si tiene una pequeña cantidad de usuarios y no tiene muchas noticias nuevas, podría usar un enfoque bastante simple como calcular el coeficiente Jaccard entre cada par de usuarios, donde el coeficiente Jaccard se define como la intersección de 2 historial de lectura de los usuarios dividido por su unión. La puntuación de una noticia (S_i) en el conjunto de candidatos para el usuario (U_a) se puede calcular sumando todos los demás usuarios (U_b) y sumando el valor del coeficiente Jaccard de (U_a, U_b) a la puntuación si U_b sucedió a tener S_i en su historia de lectura. Luego, escoja las noticias con los puntajes más altos del conjunto de candidatos de U_a.
Sin embargo, si tiene muchos usuarios y una gran cantidad de cambios de artículos (muchas noticias nuevas que aparecen periódicamente), el problema se vuelve más desafiante. Los chicos de Google News publicaron un artículo (http://www.google.com/url?sa=t&s…) titulado “Personalización de Google News: filtrado colaborativo en línea escalable” que describe 3 buenos algoritmos para abordar el problema en este contexto. Sus enfoques son: –
- ¿Cuál es la diferencia entre la implementación vinculada y la implementación contigua en listas?
- ¿Hay algún libro que tenga todos los códigos para todas las estructuras de datos? ¿Al menos para todas las estructuras de datos de árbol?
- Cómo aprender la estructura de datos en 1 mes en el albergue
- ¿Existe algún estándar de algoritmo de programación de elevadores públicos?
- ¿Qué es mejor para la búsqueda binaria, la matriz ordenada o la lista vinculada?
- MinHash: Intenta poner a 2 usuarios en el mismo grupo con probabilidad proporcional a su coeficiente Jaccard. Permuta al azar el conjunto de todas las noticias y usa el índice de la primera noticia bajo la permutación que pertenece al historial de lectura del usuario U_a como un valor MinHash para el usuario U_a. Hash cada usuario a q clústeres con cada clave de clúster que se define como la concatenación de los valores de p MinHash. Obviamente, es costoso permutar aleatoriamente el conjunto de todas las noticias; en lugar de hacer eso, uno puede generar valores de semilla aleatorios p * q y asignar cada historia S_i en el historial de lectura de un usuario a una función de (i, semilla aleatoria): elegir el valor de función mínimo sobre todas las historias en el historial de lectura de un usuario sirve como un proxy para el índice mínimo en la permutación aleatoria y, por lo tanto, puede usarse como un valor MinHash.
MinHash de reducción de mapas: itere sobre el historial de lectura de cada usuario y calcule q grupos de valores de p MinHash. Los mapeadores crean pares clave-valor de (Id. De clúster -> Id. De usuario). Reduzca para obtener, para cada Id. De clúster, una lista de Id. De usuario, podando clústeres con baja membresía y, de manera similar, para cada Id. De usuario, una lista de Id. De clúster, podando clústeres de bajo peso. Recomiende las noticias de los clústeres a los que pertenece un usuario en particular teniendo en cuenta el peso de la membresía del clúster y el peso de una noticia dentro del clúster (con decaimientos basados en cuándo los usuarios interactuaron con la noticia tal vez). - Co-visita: este es el concepto clásico al estilo de Amazon de “Los usuarios que vieron este elemento también vieron estos otros elementos”. Mantenga una matriz de adyacencia para almacenar todos los valores de interacción historia-historia y cada vez que un usuario lea una historia, intente actualizar / agregar los valores de historia-historia para todas las historias que el usuario leyó dentro de un intervalo de tiempo de esta historia. Al actualizar la matriz de adyacencia, descuenta por edad / tiempo entre lecturas de historias, etc. Para recomendar el contenido a un usuario, revise el historial de lectura del usuario y, para cada historia en el historial de lectura, encuentre las historias que fueron visitadas conjuntamente con él.
- PLSI: técnica estándar de modelar la distribución conjunta de usuarios e historias como una distribución de mezcla con una variable oculta. La matemática / notación es un poco compleja para poder resumirla aquí. La contribución clave de los autores en esta área es describir cómo mapear-reducir el algoritmo EM.