sql >> Base de Datos >  >> RDS >> SQLite

Creación de una aplicación de recomendación de películas de Django usando el índice Jaccard

Mis metas para este proyecto

  • Comprender los componentes clave del framework django
  • Describir los principios básicos de un sistema de recomendación
  • Cree una aplicación sencilla de recomendación de películas aplicando el algoritmo Jaccard basado en un mecanismo de filtrado de contenido

Repositorio de Github https://github.com/jamattey/Django-Movie-Recommendation

Paquete tecnológico

  • Back-end de Django
  • Interfaz HTML
  • CSS de arranque
  • Base de datos SQLite

Acerca del marco Django

Django divide su lógica de aplicación en los siguientes tres componentes tipo Model-View-Controller:

Django Model gestiona el modelado de datos y el mapeo de bases de datos, así como la lógica empresarial para procesar datos

Django View describe qué datos se presentan, pero no cómo se presentan. Por lo general, Django View delega y presenta una página HTML, que describe cómo se presentan los datos

Django Template genera páginas HTML dinámicas para presentar datos

Cuando un cliente envía una solicitud, el servidor de Django enruta la solicitud a la vista adecuada según la configuración de URL de Django y actúa como un controlador tradicional

Modelos Django
Django usa Django Models para representar tablas de bases de datos y asignarlas a objetos, como el proceso se llama ORM. Django Models intenta facilitar la vida del desarrollador al abstraer bases de datos y mapear objetos y métodos en tablas y consultas SQL automáticamente.

Solo necesita definir las clases como modelos de Django, y luego se asignarán a las tablas de la base de datos en consecuencia. Luego, simplemente puede usar Django Models API para realizar CRUD en las tablas de la base de datos sin escribir una sola línea de SQL

Vistas de Django
En Django, una vista es esencialmente una función de Python. Dicha función toma una solicitud web y aplica la lógica necesaria para generar una respuesta web, como el contenido HTML de una página web, una redirección, un error 404, un documento XML, una imagen o cualquier otra respuesta web. A menudo, View interactúa con Django Models para obtener los datos necesarios en forma de QuerySet u objetos para generar una respuesta web.

Proceso de desarrollo de aplicaciones de Django


Primero, creé un proyecto de Django que es un contenedor para aplicaciones y configuraciones de Django. Aquí, puedo decidir crear y agregar una o más aplicaciones de Django al proyecto.

En Core Development, creé modelos de Django para modelar los datos y creé vistas para determinar qué datos deben presentarse en la interfaz de usuario. También mapeo las URL de solicitud a nuestras vistas para que Django pueda reenviar solicitudes a las vistas correspondientes a través de URL. Entonces podemos comenzar a diseñar y construir la interfaz de usuario.

Estas películas se rellenan en un CSV. El sitio no alberga películas reales, pero es un motor de recomendaciones que utiliza código regular y una base de datos.

Este motor de recomendaciones no usa Machine Learning.......todavía 😂😂

Para que la recomendación realmente funcione, primero necesitaba marcar las películas que un usuario ha visto usando el sitio de administración de Django. Luego escribí un algoritmo de recomendación basado en películas vistas.

Marcar películas vistas en Django Admin

  • Ejecutar servidor Django
  • visite la URL del administrador app_url/admin
  • Luego, haces clic en la entrada de la película, la marcas como vista y presionas Guardar.

Ejecute make_recommendations CMD para generar recomendaciones

Para cualquier sistema de recomendación, la idea clave siempre es idear un buen algoritmo/modelo para predecir si a un usuario específico le gustará o no su elemento no visto, como se muestra en la siguiente captura de pantalla:

Probablemente hay cientos de buenos algoritmos de recomendación y se pueden dividir aproximadamente en dos categorías:

Filtrado de contenido basado en:

Los algoritmos de recomendación basados ​​en filtrado de contenido asumen que te puede gustar una nueva película si has visto películas muy similares antes. O según su perfil de usuario (como edad, sexo, intereses), intentará encontrar nuevas películas que coincidan con su perfil.

Filtrado colaborativo basado:

Los algoritmos de filtrado colaborativo asumen que te puede gustar una nueva película si otros usuarios similares a ti (perfil similar o vieron películas similares) han visto esta película.

En este proyecto, utilizaremos un algoritmo basado en filtrado de contenido e intentaremos recomendarle películas nuevas/no vistas si son similares a sus películas vistas.

¿Cómo calculamos esa similitud de películas?

Aquí usaremos la similitud de Jaccard, que es probablemente el método más simple pero efectivo para calcular la similitud entre dos conjuntos.

La similitud de Jaccard se define como el tamaño de la intersección de dos conjuntos dividido por el tamaño de la unión de esos dos conjuntos.