Erstellen Sie Ihr eigenes Filmempfehlungssystem mit Python

Veröffentlicht: 2021-03-09

Fragen Sie sich, wie Netflix Filme vorschlägt, die so sehr zu Ihren Interessen passen? Oder möchten Sie vielleicht ein System bauen, das seinen Benutzern auch solche Vorschläge machen kann?

Wenn Ihre Antwort ja war, dann sind Sie hier genau richtig, denn in diesem Artikel erfahren Sie, wie Sie mit Python ein Filmempfehlungssystem erstellen.

Bevor wir jedoch beginnen, das „Wie“ zu diskutieren, müssen wir mit dem „Was“ vertraut sein.

Inhaltsverzeichnis

Empfehlungssystem: Was ist das?

Empfehlungssysteme sind aus unserem Alltag nicht mehr wegzudenken. Von Online-Händlern wie Amazon und Flipkart bis hin zu Social-Media-Plattformen wie YouTube und Facebook nutzt jedes große digitale Unternehmen Empfehlungssysteme, um seinen Kunden ein personalisiertes Benutzererlebnis zu bieten.

Einige Beispiele für Empfehlungssysteme in Ihrem Alltag sind:

  • Die Vorschläge, die Sie beim Kauf von Produkten von Amazon erhalten, sind das Ergebnis eines Empfehlungssystems.
  • YouTube verwendet ein Empfehlungssystem, um Videos vorzuschlagen, die Ihrem Geschmack entsprechen.
  • Netflix hat ein berühmtes Empfehlungssystem, um Shows und Filme entsprechend Ihren Interessen vorzuschlagen.

Ein Empfehlungssystem schlägt Benutzern Produkte anhand von Daten vor. Bei diesen Daten kann es sich um die eingegebenen Interessen, den Verlauf usw. des Benutzers handeln. Wenn Sie sich mit maschinellem Lernen und KI befassen, müssen Sie Empfehlungssysteme studieren, da sie immer beliebter und fortschrittlicher werden.

Arten von Empfehlungssystemen

Es gibt zwei Arten von Empfehlungssystemen:

1. Kollaborative Empfehlungssysteme

Ein kollaboratives Empfehlungssystem schlägt Artikel entsprechend der Ähnlichkeit ähnlicher Benutzer für diesen Artikel vor. Es gruppiert Benutzer mit ähnlichen Interessen und Vorlieben und schlägt ihre Produkte entsprechend vor.

Angenommen, Sie und ein anderer Benutzer mochten Sholay. Jetzt, nachdem er Sholay gesehen und gemocht hatte, mochte der andere Benutzer Golmaal. Da Sie und der andere Benutzer ähnliche Interessen haben, würde das Empfehlungssystem Ihnen basierend auf diesen Daten vorschlagen, Golmaal anzusehen. Dies ist kollaboratives Filtern.

2. Inhaltsbasierte Empfehlungssysteme

Ein inhaltsbasiertes Empfehlungssystem schlägt Artikel basierend auf den Daten vor, die es von einem Benutzer erhält. Es könnte auf expliziten Daten ('Likes', 'Shares' usw.) oder impliziten Daten (Watch History) basieren. Das Empfehlungssystem würde diese Daten verwenden, um ein benutzerspezifisches Profil zu erstellen, und würde Artikel basierend auf diesem Profil vorschlagen.

Aufbau eines grundlegenden Filmempfehlungssystems

Nachdem wir nun die Grundlagen von Empfehlungssystemen behandelt haben, beginnen wir mit dem Aufbau eines Filmempfehlungssystems.

Wir können mit dem Aufbau eines Filmempfehlungssystems auf Python-Basis beginnen, indem wir den vollständigen MovieLens - Datensatz verwenden. Dieser Datensatz enthält mehr als 26 Millionen Bewertungen, 750.000 Tag-Anwendungen, die auf über 45.000 Filme angewendet werden. Die in diesem Datensatz enthaltenen Tag-Genomdaten mit mehr als 12 Millionen Relevanzwerten.

Wir verwenden den vollständigen Datensatz, um ein grundlegendes Filmempfehlungssystem zu erstellen. Es steht Ihnen jedoch frei, für dieses Projekt ein kleineres Dataset zu verwenden. Zuerst müssen wir alle erforderlichen Bibliotheken importieren:

Ein grundlegendes Filmempfehlungssystem auf Python-Basis würde Filme nach Popularität und Genre des Films vorschlagen. Dieses System basiert auf der Vorstellung, dass populäre Filme mit kritischem Beifall eine hohe Wahrscheinlichkeit haben, vom allgemeinen Publikum gemocht zu werden. Denken Sie daran, dass ein solches Filmempfehlungssystem keine personalisierten Vorschläge macht.

Um es zu implementieren, sortieren wir die Filme nach ihrer Popularität und Bewertung und übergeben ein Genre-Argument, um die Top-Filme eines Genres zu erhalten:

Eingang

md = pd. read_csv('../input/movies_metadata.csv')

md.head()

Ausgabe

Erwachsene gehört_zur_Sammlung Budget Genres Video Ich würde imdb_id originaler Titel Überblick Einnahmen Titel
Falsch ('id'L 10194, 'name': 'Toy Story Collection') 30000000 [{'id': 16, 'name': 'Animation'}… Falsch 862 tt0114709 Spielzeuggeschichte Angeführt von Woody leben Andys Spielzeuge glücklich… 373554033 Spielzeuggeschichte
1 Falsch NaN 65000000 {{'id': 12, 'name': 'Abenteuer'}… Falsch 8844 tt0113497 Jumanji Als die Geschwister Judy und Peter… 262797249 Jumanji
2 Falsch ('id': 119050, 'name': 'Grumpy Old Men) 0 {{'id': 10749, 'name': 'Romanze'}… Falsch 15602 tt0113228 Mürrische alte Männer Eine Hochzeit in der Familie lässt die alten… 0 Mürrischere alte Männer
3 Falsch NaN 16000000 {{'id': 35, 'name': 'Komödie'}… Falsch 31357 tt0114885 Warten aufs Ausatmen Betrogen, misshandelt und getreten… 81452156 Warten aufs Ausatmen

Eingang

md['genres'] = md['genres'].fillna('[]').apply(literal_eval).apply(lambda x: [i['name'] for i in x] if isinstance(x, list ) anders [])

Die Formel für unser Diagramm

Für die Erstellung unserer Tabelle der Top-Filme haben wir die TMDB-Bewertungen verwendet. Wir werden die gewichtete Bewertungsformel von IMDB verwenden, um unser Diagramm zu erstellen, das wie folgt aussieht:

Gewichtete Bewertung (WR) = (iaouaouaouaouaou)

Hier steht v für die Anzahl der Stimmen, die ein Film erhalten hat, m ist die Mindestanzahl an Stimmen, die ein Film in der Tabelle haben sollte, R steht für die durchschnittliche Bewertung des Films und C ist die durchschnittliche Bewertung für den gesamten Bericht .

Erstellen der Diagramme

Nachdem wir nun den Datensatz und die Formel erstellt haben, können wir mit dem Erstellen des Diagramms beginnen. Wir nehmen nur die Filme in unsere Charts auf, die mindestens 95 % Stimmen haben. Wir beginnen mit der Erstellung eines Top-250-Diagramms.

Eingang

vote_counts = md[md['vote_count'].notnull()]['vote_count'].astype('int')

vote_averages = md[md['vote_average'].notnull()]['vote_average'].astype('int')

C = vote_averages.mean()

C

Ausgabe

5.244896612406511

Eingang

m = vote_counts.quantile(0.95)

m

Ausgabe

434,0

Eingang

md['year'] = pd.to_datetime(md['release_date'], errors='coerce').apply(lambda x: str(x).split('-')[0] if x != np. nan sonst np.nan)

Eingang

qualifiziert = md[(md['vote_count'] >= m) & (md['vote_count'].notnull()) & (md['vote_average'].notnull())][['title', 'year ', 'vote_count', 'vote_average', 'popularity', 'genres']]

qualifiziert['vote_count'] = qualifiziert['vote_count'].astype('int')

Qualified['vote_average'] = Qualified['vote_average'].astype('int')

qualifizierte.Form

Ausgabe

(2274, 6)

Wie Sie sehen können, muss ein Film mindestens 434 Stimmen haben, um einen Platz in unseren Charts zu bekommen. Sie haben vielleicht bemerkt, dass die durchschnittliche Bewertung, die ein Film haben muss, um in unsere Tabelle aufgenommen zu werden, 5,24 beträgt.

Eingang

def gewichtete_Bewertung(x):

v = x['vote_count']

R = x['vote_average']

Rückgabe (v/(v+m) * R) + (m/(m+v) * C)

Eingang

Qualified['wr'] = Qualified.Apply(weighted_rating, axis=1)

Eingang

Qualified = Qualified.sort_values('wr', ascending=False).head(250)

Wenn all dies vorhanden ist, erstellen wir das Diagramm:

Top-Filme insgesamt

Eingang

qualifiziert.head(15)

Ausgabe

Titel Jahr vote_count vote_average Popularität Genres wr
15480 Beginn 2010 14075 8 29.1081 [Action, Thriller, Science Fiction, Mystery, A… 7.917588
12481 Der dunkle Ritter 2008 12269 8 123.167 [Drama, Action, Krimi, Thriller] 7.905871
22879 Interstellar 2014 11187 8 32.2135 [Abenteuer, Drama, Science-Fiction] 7.897107
2843 Fight Club 1999 9678 8 63.8696 [Theater] 7.881753
4863 Der Herr der Ringe: Die Gefährten des Rings 2001 8892 8 32.0707 [Abenteuer, Fantasy, Action] 7.871787
292 Schundliteratur 1994 8670 8 140,95 [Thriller, Krimi] 7,868660
314 Die Shawshank-Erlösung 1994 8358 8 51.6454 [Drama, Krimi] 7.864000
7000 Der Herr der Ringe: Die Rückkehr des Königs 2003 8226 8 29.3244 [Abenteuer, Fantasy, Action] 7.861927
351 Forrest Gump 1994 8147 8 48.3072 [Komödie, Drama, Romanze] 7.860656
5814 Der Herr der Ringe: Die zwei Türme 2002 7641 8 29.4235 [Abenteuer, Fantasy, Action] 7,851924
256 Krieg der Sterne 1977 6778 8 42.1497 [Abenteuer, Action, Science-Fiction] 7.834205
1225 Zurück in die Zukunft 1985 6239 8 25.7785 [Abenteuer, Komödie, Science Fiction, Familie] 7.820813
834 Der Pate 1972 6024 8 41.1093 [Drama, Krimi] 7.814847
1154 Das Imperium schlägt zurück 1980 5998 8 19.471 [Abenteuer, Action, Science-Fiction] 7.814099
46 Se7en 1995 5915 8 18.4574 [Kriminalität, Mystery, Thriller]

Voila, Sie haben ein grundlegendes Filmempfehlungssystem auf Python-Basis erstellt!

Wir werden die Vorschläge unseres Empfehlungssystems jetzt auf Genre-basiert eingrenzen, damit es präziser ist. Schließlich muss The Godfather nicht jedem gleich gut gefallen.

Eingrenzung des Genres

Also modifizieren wir jetzt unser Empfehlungssystem, um genrespezifischer zu sein:

Eingang

s = md.apply(lambda x: pd.Series(x['genres']),axis=1).stack().reset_index(level=1, drop=True)

s.name = 'genre'

gen_md = md.drop('genres', axis=1).join(s)

Eingang

def build_chart(Genre, Perzentil=0,85):

df = gen_md[gen_md['genre'] == Genre]

vote_counts = df[df['vote_count'].notnull()]['vote_count'].astype('int')

vote_averages = df[df['vote_average'].notnull()]['vote_average'].astype('int')

C = vote_averages.mean()

m = vote_counts.quantile(Perzentil)

qualifiziert = df[(df['vote_count'] >= m) & (df['vote_count'].notnull()) & (df['vote_average'].notnull())][['title', 'year ', 'vote_count', 'vote_average', 'popularity']]

qualifiziert['vote_count'] = qualifiziert['vote_count'].astype('int')

Qualified['vote_average'] = Qualified['vote_average'].astype('int')

Qualified['wr'] = Qualified.apply(lambda x: (x['vote_count']/(x['vote_count']+m) * x['vote_average']) + (m/(m+x[' vote_count']) * C), Achse=1)

Qualified = Qualified.sort_values('wr', ascending=False).head(250)

Rückkehr qualifiziert

Wir haben jetzt ein Empfehlungssystem erstellt, das Filme im Romantik-Genre sortiert und die besten empfiehlt. Wir haben uns für das Romantik-Genre entschieden, weil es in unserer vorherigen Tabelle nicht oft auftauchte.

Top Filme in Romantik

Eingang

build_chart('Romanze').head(15)

Ausgabe

Titel Jahr vote_count vote_average Popularität wr
10309 Dilwale Dulhania Le Jayenge 1995 661 9 34.457 8.565285
351 Forrest Gump 1994 8147 8 48.3072 7,971357
876 Schwindel 1958 1162 8 18.2082 7.811667
40251 Dein Name. 2016 1030 8 34.461252 7.789489
883 Manche mögen es heiß 1959 835 8 11.8451 7.745154
1132 Kinoparadies 1988 834 8 14.177 7.744878
19901 Papiermann 2012 734 8 7.19863 7.713951
37863 Singen Sie Straße 2016 669 8 10.672862 7.689483
882 Das Apartment 1960 498 8 11.9943 7,599317
38718 Die Magd 2016 453 8 16.727405 7.566166
3189 Lichter der Stadt 1931 444 8 10.8915 7.558867
24886 Die Art, wie er aussieht 2014 262 8 5.71127 7.331363
45437 In einem Herzschlag 2017 146 8 20.82178 7.003959
1639 Titanic 1997 7770 7 26.8891 6,981546
19731 Silver Linings Playbook 2012 4840 7 14.4881 6.970581

Jetzt haben Sie ein Filmempfehlungssystem, das Top-Filme nach einem ausgewählten Genre vorschlägt. Wir empfehlen, dieses Empfehlungssystem auch mit anderen Genres wie Action, Drama, Suspense usw. zu testen. Teilen Sie die drei besten Filme in Ihrem Lieblingsgenre, das das Empfehlungssystem im Kommentarbereich unten vorschlägt

Erfahren Sie mehr über ein Filmempfehlungssystem

Wie Sie bestimmt schon bemerkt haben, ist der Aufbau eines auf Python basierenden Filmempfehlungssystems ziemlich einfach. Alles, was Sie brauchen, ist ein wenig Wissen über Data Science und ein wenig Aufwand, um ein voll funktionsfähiges Empfehlungssystem zu erstellen.

Was aber, wenn Sie fortschrittlichere Empfehlungssysteme erstellen möchten? Was ist, wenn Sie ein Empfehlungssystem erstellen möchten, das ein großes Unternehmen verwenden könnte?

Wenn Sie mehr über Empfehlungssysteme und Data Science erfahren möchten, empfehlen wir Ihnen, einen Data Science-Kurs zu belegen. Mit einem Kurs lernen Sie alle grundlegenden und fortgeschrittenen Konzepte der Datenwissenschaft und des maschinellen Lernens kennen. Darüber hinaus lernen Sie von Branchenexperten, die Sie durch den gesamten Kurs führen, um Ihnen dabei zu helfen, Zweifel und Verwirrung zu vermeiden.

Bei upGrad bieten wir mehrere Data Science- und Machine Learning-Kurse an. Sie können je nach Ihren Interessen jemanden aus den folgenden auswählen:

  • PG Diplom in Data Science
  • Master of Science in Datenwissenschaft
  • PG-Zertifizierung in Data Science
  • PG-Diplom in maschinellem Lernen und KI
  • Master of Science in Maschinellem Lernen und KI

Neben diesen Kursen bieten wir viele weitere Kurse in Data Science und Machine Learning an. Schauen Sie sie sich unbedingt an!

Abschließende Gedanken

Jetzt wissen Sie, wie Sie ein Filmempfehlungssystem aufbauen. Nachdem Sie das System erstellt haben, stellen Sie sicher, dass Sie es mit anderen teilen und ihnen Ihren Fortschritt zeigen. Recommender-Systeme haben ein vielfältiges Anwendungsspektrum, sodass Sie sich in der Branche sicher durchsetzen können, wenn Sie sich mit ihnen vertraut machen.

Was ist kollaboratives Filtern und welche Typen gibt es?

Kollaboratives Filtern ist eine Art Empfehlungssystem, bei dem ein Modell basierend auf den Präferenzen des Benutzers erstellt wird. Die Historie der Benutzer dient als Datensatz für das kollaborative Filtern. Es gibt zwei Arten von kollaborativer Filterung, die unten aufgeführt sind:

1. Benutzerbasiertes kollaboratives Filtern: Die Idee hinter dieser Art des kollaborativen Filterns ist, dass wir einen Benutzer als Präferenz nehmen, sagen wir „A“, und andere Benutzer mit ähnlichen Präferenzen finden und dann „A“ diese Präferenzen dieser Benutzer bereitstellen ist noch nicht begegnet.
Artikelbasiertes kollaboratives Filtern: Anstatt die Benutzer mit ähnlichen Vorlieben zu finden, finden wir Filme, die dem Geschmack von „A“ ähneln, und empfehlen die Filme, die er noch nicht gesehen hat.

Was sind die Vor- und Nachteile der inhaltsbasierten Filterung?

Die inhaltsbasierte Filterung sammelt die Daten des Benutzers und schlägt die Artikel entsprechend vor. Einige seiner Vor- und Nachteile sind im Folgenden aufgeführt:
Vorteile
1. Anders als beim kollaborativen Filtern muss das Modell keine Daten über andere Benutzer mit ähnlichen Präferenzen sammeln, da es die Vorschläge des Hauptbenutzers selbst entgegennimmt.
2. Das Model kann Ihnen nach Ihren Vorlieben einige der besten Filme empfehlen, die nur wenige andere gesehen haben.
Nachteile
1. Diese Technik erfordert viele Informationen über eine bestimmte Domäne, sodass die Qualität der bereitgestellten Funktionen mehr oder weniger der von Hand erstellten Funktionen entspricht.
2. Seine Fähigkeit, Filme zu empfehlen, ist begrenzt, da er nur nach den bestehenden Interessen der Benutzer arbeitet.

Welche gängigen Anwendungen verwenden kollaborative Filteralgorithmen?

Der kollaborative Filteralgorithmus wird zum primären Treiberalgorithmus für viele populäre Anwendungen. Immer mehr Unternehmen konzentrieren sich auf die Bereitstellung umfassender personalisierter Inhalte. Zum Beispiel haben Sie diese Nachricht wahrscheinlich auf vielen E-Commerce-Websites gesehen . Kunden, die dies kaufen, haben auch gekauft.
Im Folgenden sind einige der Anwendungen aufgeführt, die weltweit eine beliebte Benutzerbasis haben:
1. YouTube verwendet diesen Algorithmus zusammen mit einigen anderen leistungsstarken Algorithmen, um Videoempfehlungen auf der Startseite bereitzustellen.
2. E-Commerce-Websites wie Amazon, Flipkart und Myntra verwenden diesen Algorithmus auch, um Produktempfehlungen bereitzustellen.
3. Video-Streaming-Plattformen sind hier das größte Beispiel, die Benutzerbewertungen, Durchschnittsbewertungen und verwandte Inhalte verwenden, um personalisierte Vorschläge zu machen.