Pendiente uno

Slope One  es una familia de algoritmos de filtrado colaborativo (utilizados en sistemas de recomendación ) para analizar las diversas opiniones y deseos de los usuarios y desarrollar recomendaciones personalizadas.

Hay al menos 2 clases de filtrado colaborativo:

Slope One apareció en Slope One Predictores for Online Rating-Based Collaborative Filtering de Daniel Lemire y Anna Maclachlan .  Se afirma que esta es una de las formas más sencillas de filtrar en colaboración por similitud de elementos en función de las calificaciones de los usuarios. Esta simplicidad facilita enormemente la implementación de estos algoritmos, y su precisión es comparable a la precisión de algoritmos más complejos y que consumen muchos recursos [1] . Slope One también suele complementar otros algoritmos. [2] [3] .  

Filtrado y reentrenamiento de similitud de elementos

Si las calificaciones de un elemento están disponibles, por ejemplo, los usuarios tienen la posibilidad de votar por un elemento (por ejemplo, calificar del 1 al 5), entonces el filtrado colaborativo intenta predecir la calificación que un usuario otorgará a un nuevo elemento en función de su calificaciones anteriores y una base de datos de calificaciones de otros usuarios.

Ejemplo : ¿Podemos predecir la puntuación de un usuario en particular en un nuevo álbum de Celine Dion si sabemos que calificó a The Beatles 5?

En este caso, el filtrado colaborativo por similitud de elementos [4] [5] predice la calificación de un elemento en función de las calificaciones de otro elemento, con mayor frecuencia mediante el análisis de regresión ( ). Por lo tanto, si hay 1.000 sujetos, entonces puede haber hasta 1.000.000 de regresiones lineales para estudiar y hasta 2.000.000 de regresores. Este enfoque puede ser ineficiente debido al sobreajuste [1] , por lo que es necesario elegir pares de sujetos para los que se conocen las puntuaciones de varios usuarios.

Una mejor alternativa podría ser usar un predictor simplificado (p. ej., ): se ha demostrado experimentalmente que usar un predictor tan simple (llamado Slope One) a veces supera [1] el análisis de regresión, mientras que tiene la mitad de regresores. Además, este método tiene bajos requisitos de memoria y alta velocidad.

El filtrado colaborativo por similitud de elementos es solo un tipo de filtrado colaborativo. En el caso de utilizar el filtrado colaborativo por similitud de usuarios, se analizan las relaciones entre los usuarios y se aclara la similitud de sus intereses. Pero filtrar por similitud de elementos requiere menos recursos y es más eficiente cuando hay una gran cantidad de usuarios.

Filtrado colaborativo de artículos basado en estadísticas de compra

Los usuarios no siempre tienen la oportunidad de calificar artículos. Es decir, solo los datos binarios pueden estar disponibles para el filtrado colaborativo (ya sea que el usuario haya comprado el artículo o no). En tales casos, Slope One y otros algoritmos que dependen de las puntuaciones de los elementos son ineficientes.

Un ejemplo de un algoritmo de filtrado de elementos colaborativo que funciona con datos binarios es el algoritmo patentado [ 6] de elemento a elemento que se utiliza en la tienda en línea de Amazon [7] . Este algoritmo calcula la similitud de los artículos como el coseno entre los vectores de compra en la matriz del usuario y del artículo [8] :

Este algoritmo es quizás incluso más simple que Slope One. Veamos cómo funciona con un ejemplo:

Estadísticas de compra
Comprador Objeto 1 sujeto 2 Artículo 3
John Comprado no compre Comprado
Marca no compre Comprado Comprado
lucia no compre Comprado no compre

En este caso, el coseno entre "Artículo 1" y "Artículo 2" se calcula de la siguiente manera:

,

entre "Artículo 1" y "Artículo 3":

,

y entre "Artículo 2" y "Artículo 3":

.

Así, un usuario que se encuentre en la página de descripción del "Artículo 1" recibirá "Artículo 3" como recomendación; en la página "Artículo 2" - "Artículo 3" y en la página "Artículo 3" - "Artículo 1" (y luego "Artículo 2"). Este algoritmo utiliza un coeficiente para cada par de elementos (coseno), a partir del cual se crean las recomendaciones. Es decir, para n elementos, deberá calcular y almacenar n (n-1) / 2 cosenos.

Filtrado colaborativo Slope One para elementos calificados

Para reducir significativamente el efecto del sobreajuste, aumentar el rendimiento y facilitar la implementación, se propuso la familia de algoritmos Slope One . La principal diferencia con el análisis de regresión de la razón de las calificaciones de dos ítems ( ) es el uso de una forma simplificada de regresión con un solo predictor ( ). Entonces, el predictor es simplemente la diferencia promedio entre las puntuaciones de ambos sujetos. Los autores demostraron que este enfoque es en algunos casos más preciso que la regresión lineal [1] y requiere 2 veces menos memoria.

Ejemplo :

  1. Joe le dio a Celine Dion un 1 ya Lindsay Lohan un 1.5 .
  2. Jill calificó a Celine Dion con 2 puntos.
  3. ¿Cómo calificaría Jill a Lindsm Lohan?
  4. La respuesta del algoritmo Slope One es 2,5 (1,5-1+2=2,5).

Veamos un ejemplo más complejo:

Tabla de calificaciones
Visitante Objeto 1 sujeto 2 Artículo 3
John 5 3 2
Marca 3 cuatro -
lucia - 2 5

De acuerdo con esta tabla, la diferencia promedio en las calificaciones de las materias 1 y 2 es (2+(-1))/2=0.5. Así, de media, la asignatura 1 obtiene una puntuación de 0,5 puntos superior a la de la asignatura 2. Del mismo modo, para las asignaturas 3 y 1: la diferencia media de puntos es 3.

Si ahora tratamos de predecir la calificación de Lucy para el ítem 1 usando su calificación para el ítem 2, obtenemos 2+0.5 = 2.5. De manera similar, predecimos su puntaje para el sujeto 1 usando el puntaje otorgado al sujeto 3: 5+3=8. Como tenemos varios puntajes estimados (Lucy votó 2 veces), obtendremos el puntaje final como un promedio ponderado. Para los coeficientes de peso, usaremos el número de usuarios que han calificado el tema:

Para aplicar el algoritmo Slope One a n sujetos dados, se debe calcular y almacenar la diferencia promedio y el número de votos para cada uno de los n² pares de sujetos.

Estimación de la complejidad de un algoritmo

Sistemas de recomendación usando Slope One

Software de código abierto usando Slope One

Pitón :

Java :

PHP :

Erlang :

Haskell :

Básico visual :

do# :

T-SQL :

Notas

  1. 1 2 3 4 Daniel Lemire, Anna Maclachlan, Slope One Predictors for Online Rating-Based Collaborative Filtering Archivado el 30 de marzo de 2010 en Wayback Machine , en SIAM Data Mining ( SDM'05 ), Newport Beach, California, del 21 al 23 de abril , 2005.  (inglés)
  2. Pu Wang, HongWu Ye, Un algoritmo de recomendación personalizado que combina el esquema Slope One y el filtrado colaborativo basado en el usuario , IIS '09, 2009  .
  3. DeJia Zhang, Un algoritmo de recomendación de filtrado colaborativo basado en elementos mediante el suavizado de esquema Slope One , ISECS '09, 2009  .
  4. Slobodan Vucetic, Zoran Obradovic: Filtrado colaborativo mediante un enfoque basado en la regresión. Saber inf. sist. 7(1): 1-22 (2005  )
  5. Badrul M. Sarwar, George Karypis, Joseph A. Konstan, John Riedl: Algoritmos de recomendación de filtrado colaborativo basados ​​en elementos. WWW 2001 : 285-295 
  6. Patente de EE. UU. 6.266.649  (enlace descendente a partir del 16-01-2015 [2845 días])
  7. Greg Linden, Brent Smith, Jeremy York, "Recomendaciones de Amazon.com: filtrado colaborativo de elemento a elemento", IEEE Internet Computing, vol. 07, núm. 1, págs. 76-80, enero/febrero de  2003
  8. BM Sarwarm et al., "Análisis de algoritmos de recomendación para comercio electrónico", ACM Conf. Comercio Electrónico, ACM Press, 2000, pp.158-167. (Inglés)
  9. Daniel Lemire, Sean McGrath, Implementing a Rating-Based Item-to-Item Recommender System in PHP/SQL Archivado desde el original el 11 de febrero de 2010. , Informe Técnico D-01, enero de 2005.