Meine Ziele für dieses Projekt
- Die Schlüsselkomponenten des Django-Frameworks verstehen
- Beschreiben Sie die Grundprinzipien eines Empfehlungssystems
- Erstellen Sie eine einfache Filmempfehlungs-App, indem Sie den Jaccard-Algorithmus basierend auf einem Inhaltsfiltermechanismus anwenden
Github-Repository https://github.com/jamattey/Django-Movie-Recommendation
Tech-Stack
- Django-Backend
- HTML-Frontend
- Bootstrap-CSS
- SQLite-Datenbank
Über Django Framework
Django teilt seine Anwendungslogik in die folgenden drei Model-View-Controller-ähnlichen Komponenten auf:
Das Django-Modell verwaltet die Datenmodellierung und Datenbankzuordnung sowie die Geschäftslogik zur Verarbeitung von Daten
Django View beschreibt, welche Daten präsentiert werden, aber nicht wie sie präsentiert werden. Normalerweise delegiert und rendert Django View eine HTML-Seite, die beschreibt, wie die Daten präsentiert werden
Die Django-Vorlage generiert dynamische HTML-Seiten zur Darstellung von Daten
Wenn ein Client eine Anfrage sendet, leitet der Django-Server die Anfrage basierend auf der Django-URL-Konfiguration an die entsprechende Ansicht weiter und fungiert als herkömmlicher Controller
Django-Modelle
Django verwendet Django-Modelle, um Datenbanktabellen darzustellen und sie Objekten zuzuordnen, z. B. wird ein Prozess als ORM bezeichnet. Django Models versucht, das Leben des Entwicklers einfacher zu machen, indem es Datenbanken abstrahiert und Objekte und Methoden automatisch in Tabellen und SQL-Abfragen abbildet.
Sie müssen nur Klassen als Django-Modelle definieren und werden später entsprechend auf Datenbanktabellen abgebildet. Dann können Sie einfach die Django Models API verwenden, um CRUD für die Datenbanktabellen auszuführen, ohne eine einzige Zeile SQL
zu schreiben
Django-Ansichten
In Django ist eine Ansicht im Wesentlichen eine Python-Funktion. Eine solche Funktion nimmt eine Webanfrage und wendet die notwendige Logik an, um eine Webantwort zu generieren, wie z. B. den HTML-Inhalt einer Webseite, eine Weiterleitung, einen 404-Fehler, ein XML-Dokument, ein Bild oder eine andere Webantwort. Häufig interagiert View mit Django-Modellen, um erforderliche Daten in Form von QuerySets oder Objekten zum Generieren einer Webantwort zu erhalten.
Django-Anwendungsentwicklungsprozess
Zuerst habe ich ein Django-Projekt erstellt, das ein Container für Django-Apps und -Einstellungen ist. Hier kann ich entscheiden, eine oder mehrere Django-Apps zu erstellen und dem Projekt hinzuzufügen.
In Core Development habe ich Django-Modelle erstellt, um die Daten zu modellieren, und Ansichten erstellt, um zu bestimmen, welche Daten der Benutzeroberfläche präsentiert werden müssen. Außerdem ordne ich die Anforderungs-URLs unseren Ansichten zu, damit Django Anforderungen über URLs an entsprechende Ansichten weiterleiten kann. Dann können wir mit dem Entwerfen und Erstellen der Benutzeroberfläche beginnen.
Diese Filme werden in einer CSV-Datei ausgefüllt. Die Website hostet keine eigentlichen Filme, sondern ist eine Empfehlungsmaschine, die regulären Code und eine Datenbank verwendet.
Diese Empfehlungsmaschine verwendet kein maschinelles Lernen ... noch nicht 😂😂
Damit die Empfehlung tatsächlich funktioniert, musste ich zuerst die Filme markieren, die ein Benutzer über die Django Admin-Site angesehen hat. Dann habe ich einen Empfehlungsalgorithmus basierend auf angesehenen Filmen geschrieben.
Angesehene Filme in Django Admin markieren
- Django-Server ausführen
- Besuchen Sie die Admin-URL app_url/admin
- Dann klickst du in den Filmeintrag und markierst ihn als angesehen und drückst auf Speichern.
Führen Sie make_recommendations CMD aus, um Empfehlungen zu generieren
Bei jedem Empfehlungssystem besteht die Schlüsselidee immer darin, einen guten Algorithmus/ein gutes Modell zu entwickeln, um vorherzusagen, ob ein bestimmter Benutzer seinen/ihren unsichtbaren Artikel mögen oder nicht mögen wird, wie im folgenden Screenshot gezeigt:
Es gibt wahrscheinlich Hunderte von guten Empfehlungsalgorithmen, die grob in zwei Kategorien eingeteilt werden können:
Basierend auf Inhaltsfilterung:
Die auf Inhaltsfilterung basierenden Empfehlungsalgorithmen gehen davon aus, dass Ihnen ein neuer Film gefallen könnte, wenn Sie zuvor sehr ähnliche Filme gesehen haben. Oder basierend auf Ihrem Benutzerprofil (wie Alter, Geschlecht, Interessen) wird versucht, neue Filme zu finden, die Ihrem Profil entsprechen.
Kollaboratives Filtern basiert:
Die kollaborativen Filteralgorithmen gehen davon aus, dass Ihnen ein neuer Film gefallen könnte, wenn andere Benutzer, die Ihnen ähnlich sind (ähnliches Profil oder ähnliche Filme gesehen), diesen Film angesehen haben.
In diesem Projekt werden wir einen auf Inhaltsfilterung basierenden Algorithmus verwenden und versuchen, Ihnen nicht angesehene/neue Filme zu empfehlen, wenn sie Ihren angesehenen Filmen ähneln.
Wie berechnen wir eine solche Filmähnlichkeit
Hier verwenden wir die Jaccard-Ähnlichkeit, die wahrscheinlich die einfachste, aber sehr effektive Methode ist, um die Ähnlichkeit zwischen zwei Sätzen zu berechnen.
Jaccard-Ähnlichkeit ist definiert als die Größe der Schnittmenge zweier Mengen dividiert durch die Größe der Vereinigung dieser beiden Mengen.