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] .
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.
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:
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.
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 :
Veamos un ejemplo más complejo:
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.
Pitón :
Java :
PHP :
Erlang :
Haskell :
do# :
T-SQL :