Cómo construir un motor de recomendaciones paso a paso (abajo)

Ahora que hemos convertido un conjunto de datos, podemos usarlo para buscar películas similares para ciertos usuarios. Existen muchas diferencias entre los indicadores de similitud pura y mixta.


  • Similitud de coseno

  • Destino Euclides

  • Índice de Jaccard

  • Relacionado con Pearson


Solo podemos comprobar algunos de estos indicadores.


4.1 Similitud de coseno


La similitud de coseno, también conocida como similitud de coseno, consiste en evaluar la similitud de dos vectores calculando el coseno del ángulo entre ellos. La similitud de coseno dibuja un vector en un espacio vectorial basado en valores de coordenadas, como el espacio bidimensional más común.


Cuando queremos encontrar la similitud de dos o más elementos de los datos especificados, debemos usar la similitud del coseno. Es muy bueno y se usa con frecuencia, a menudo se usa en la industria del aprendizaje automático. Si escucha este término por primera vez, o si ha olvidado lo que aprendió antes, se recomienda ver el video de similitud de coseno.


La fórmula matemática de la similitud del coseno:


imagen


Esta fórmula también se puede traducir como: la suma de las calificaciones del usuario A y del usuario B para la película i, dividida por el cuadrado de la calificación de A y multiplicada por el cuadrado de la calificación de B.


4.2 correlación de Pearson


Los resultados del cálculo de Pearson son muy similares a la similitud del coseno. Ya no lo discutiremos en detalle, puede encontrar explicaciones de términos relacionados en Wikipedia.


imagen


Ahora tenemos una función para calcular la similitud del interés del usuario a través de la similitud del coseno, que es principalmente lo que necesitamos. Basándonos en estos datos, podemos hacer un sistema de recomendación para recomendar películas de interés en función del contenido que los usuarios hayan visto antes.


Calculamos la función de similitud a través de la siguiente programación de Python.


def cos_similarity(people,movie1,movie2):
    si={}
    for item in people[movie1]:
        if item in people[movie2]:
            si[item]=1
    if len(si)==0:
        return 0
    sum1=0
    sum21=0
    sum22=0
    for item in si:
        sum1+=(people[movie1][item]*people[movie2][item])
        sum21+=pow(people[movie1][item],2)
        sum22+=pow(people[movie2][item],2)
    if sum21==0 or sum22==0:
        return 0

    return round(sum1/(sqrt(sum21)*sqrt(sum22)),2)


5.输出


最后,让我们来看输出结果。


第一步,需要有一个已观看电影的数据集合:


movies_watched=["You, Me and Dupree","Catch Me If You Can","Snitch"]

现在系统经过了学习,会为我们推荐喜欢的电影。当前是以前的计算结果 ,也会做出输出。


------------------------------
| You, Me and Dupree          |
-------------------------------
Catch Me If You Can 0.97
Just My Luck 0.85
Lady in the Water 0.96
Snakes on a Plane 0.97
Snitch 1.0
Superman Returns 0.98
The Night Listener 0.96
------------------------------
| Catch Me If You Can        |
------------------------------
Just My Luck 1.0
Lady in the Water 0.98
Snakes on a Plane 0.99
Snitch 1.0
Superman Returns 1.0
The Night Listener 0.92
You, Me and Dupree 0.97
------------------------------
| Snitch                     |
------------------------------
Catch Me If You Can 1.0
Just My Luck 1.0
Lady in the Water 0.91
Snakes on a Plane 0.99
Superman Returns 0.99
The Night Listener 0.88
You, Me and Dupree 1.0
------------------------------


可以看到系统建议的内容。 与“Snitch”最相似的是“Catch Me If You Can”,“Supermermen Returns”等,相当于相似性度量(电影片名之后的数字)。我们想要3个最相似的电影,可以添加阈值来识别相似度。 例如,我们可以将阈值设置为0.98,并且每个超过阈值的电影将出现在我们的屏幕上。


------------------------------
| You, Me and Dupree          |
-------------------------------
Snitch 1.0
Superman Returns 0.98
------------------------------
| Catch Me If You Can        |
------------------------------
Just My Luck 1.0
Lady in the Water 0.98
Snakes on a Plane 0.99
Snitch 1.0
Superman Returns 1.0
------------------------------
| Snitch                     |
------------------------------
Catch Me If You Can 1.0
Just My Luck 1.0
Snakes on a Plane 0.99
Superman Returns 0.99
You, Me and Dupree 1.0
------------------------------

以上介绍给大家的完整代码,已经全部在Github。

La dirección es: https://github.com/Mitko06/Recommender-System


En conclusión


Felicitaciones, ahora conocemos los conceptos básicos de cómo crear un sistema de recomendación.

Por supuesto, es necesario establecer un sistema de recomendaciones más complejo en el mundo real. Pero el 95% de ellos se basan en la similitud del coseno, la similitud euclidiana, la correlación de Pearson y otros indicadores.

La construcción de un sistema de recomendación requiere tiempo y acumulación de datos. Este tutorial ha explicado cómo construir un sistema de recomendación. Puede desarrollar diferentes motores de recomendación personalizados basados ​​en esto.


Comente ahora para compartir sus pensamientos, cualquier otra pregunta sobre este tutorial.


Supongo que te gusta

Origin blog.51cto.com/15127566/2666757
Recomendado
Clasificación