Einführung
Daten werden mit beispielloser Geschwindigkeit aus Quellen wie Social Media, Finanztransaktionen und E-Commerce-Plattformen generiert. Der Umgang mit diesem kontinuierlichen Informationsstrom ist eine Herausforderung, bietet jedoch die M?glichkeit, zeitnahe und genaue Entscheidungen zu treffen. Echtzeitsysteme wie Finanztransaktionen, Sprachassistenten und Gesundheitssysteme stützen sich auf die kontinuierliche Datenverarbeitung, um relevante und aktuelle Antworten zu liefern.
Batch -Lernalgorithmen wie KNN, SVM und Entscheidungsb?ume erfordern, dass der gesamte Datensatz w?hrend des Trainings in den Speicher geladen wird. Bei der Arbeit mit riesigen Datens?tzen wird dies zunehmend unpraktisch, was zu erheblichen Speicher- und Speicherproblemen führt. Diese sind auch bei der Arbeit mit Echtzeitdaten ineffizient.
Aufgrund dieses Problems ben?tigen wir einen Algorithmus, der im Umgang mit enormen Datenmengen effizient und genau ist. Passiv-aggressive Algorithmen zeichnen sich in dieser Hinsicht auseinander. Im Gegensatz zu Batch -Lernalgorithmen müssen sie nicht im vollst?ndigen Datensatz geschult werden, um Vorhersagen zu treffen. Passiv-aggressive Algorithmen lernen aus den Daten im laufenden Fliegen und beseitigen die Notwendigkeit, den gesamten Datensatz in Speicher zu speichern oder zu verarbeiten.
Lernziele
- Online -Lernen und seine Bedeutung bei der Arbeit mit riesigen Datenmengen.
- Unterschied zwischen Online -Lern- und Batch -Lernalgorithmen.
- Mathematische Intuition hinter passiv-aggressiven Algorithmen.
- Verschiedene Hyperparameter und ihre Bedeutung für passiv-aggressive Algorithmen.
- Anwendungen und Anwendungsf?lle von passiv-aggressiven Algorithmen.
- Einschr?nkungen und Herausforderungen von passiv-aggressiven Algorithmen.
- Implementierung eines passiv-aggressiven Klassifizierers in Python, um Hassreden aus Echtzeit-Reddit-Daten zu erkennen.
Dieser Artikel wurde als Teil des Data Science -Blogathons ver?ffentlicht.
Inhaltsverzeichnis
- Was ist Online -Lernen?
- Vorteile des Online-Lernens in Echtzeitanwendungen
- Einführung in passiv-aggressive Algorithmen
- Rolle des Scharnierverlusts beim passiv-aggressiven Lernen
- Mathematische Formulierung passiv-aggressiver Algorithmen
- Verst?ndnis des Aggressivit?tsparameters (c)
- Auswirkungen der Regularisierung bei passiv-aggressiven Algorithmen
- Echtzeitanwendungen passiv-aggressiver Algorithmen
- Einschr?nkungen und Herausforderungen
- Aufbau eines Modells zur Erkennung von Hassreden
- Das Einrichten Ihrer Umgebung für die Echtzeitdatenverarbeitung einrichten
- Richten
- H?ufig gestellte Fragen
Was ist Online -Lernen?
Online -Lernen, auch als inkrementelles Lernen bezeichnet, ist ein Paradigma für maschinelles Lernen, bei dem das Modell inkrementell mit jedem neuen Datenpunkt aktualisiert wird, anstatt auf einen festen Datensatz gleichzeitig trainiert zu werden. Dieser Ansatz erm?glicht es dem Modell, sich kontinuierlich an neue Daten anzupassen, wodurch es in dynamischen Umgebungen, in denen sich Daten im Laufe der Zeit entwickeln, besonders nützlich sind. Im Gegensatz zu herk?mmlichen Batch-Lernmethoden erm?glicht Online-Lernen Echtzeit-Updates und Entscheidungen durch die Verarbeitung neuer Informationen, wenn es eintrifft.
Batch vs. Online -Lernen: Ein vergleichender überblick
Schauen wir uns unten in Batch vs. Online -Lernvergleich an:
Batchlernen:
- Trainingsmethode: Batch -Lernalgorithmen trainieren auf einen festen Datensatz auf einmal. Nach dem Training wird das Modell für Vorhersagen verwendet, bis es mit neuen Daten umgeschrieben wird.
- Beispiele: Neuronale Netze, Support Vector Machines (SVM), K-Nearest-Nachbarn (KNN).
- Herausforderungen: Umerlangung erfordert die Verarbeitung des gesamten Datensatzes von Grund auf neu, was zeitaufw?ndig und rechnerisch teuer sein kann. Dies ist besonders schwierig bei gro?en und wachsenden Datens?tzen, da die Umschulung selbst bei leistungsstarken GPUs Stunden dauern kann.
Online -Lernen:
- Trainingsmethode: Online -Lernalgorithmen aktualisieren das Modell schrittweise mit jedem neuen Datenpunkt. Das Modell lernt kontinuierlich und passt sich in Echtzeit an neue Daten an.
- Vorteile: Dieser Ansatz ist effizienter für die Behandlung gro?er Datens?tze und dynamischer Datenstr?me. Das Modell wird mit minimalen Rechenressourcen aktualisiert, und neue Datenpunkte k?nnen schnell verarbeitet werden, ohne dass sich von Grund auf neu einholt werden muss.
- Anwendungen: Online-Lernen ist für Anwendungen von Vorteil, die Echtzeitentscheidungen wie Aktienmarktanalysen, Social-Media-Streams und Empfehlungssysteme erfordern.
Vorteile des Online-Lernens in Echtzeitanwendungen
- Kontinuierliche Anpassung: Online -Lernmodelle passen sich an neue Daten an, die sie eintreffen, sodass sie ideal für Umgebungen, in denen sich Datenmuster im Laufe der Zeit entwickeln, z. B. in Betrugserkennungssystemen. Dies stellt sicher, dass das Modell relevant und effektiv bleibt, ohne dass die Umschulung von Grund auf neu ist.
- Effizienz: Online -Lernalgorithmen erfordern keine vollst?ndige Umschulung mit dem gesamten Datensatz, was erhebliche Rechenzeit und Ressourcen spart. Dies ist insbesondere für Anwendungen mit begrenzter Rechenleistung wie mobilen Ger?ten nützlich.
- Ressourcenverwaltung: Durch die schrittweise Verarbeitung von Daten verringern Online -Lernmodelle den Bedarf an umfangreichen Speicherplatz. Alte Daten k?nnen nach der Verarbeitung verworfen werden, wodurch der Speicher effizient verwaltet wird und das System leicht h?lt.
- Echtzeit-Entscheidungsfindung: Online-Lernen erm?glicht Echtzeit-Updates, die für Anwendungen von entscheidender Bedeutung sind, die auf aktuelle Informationen wie Empfehlungssysteme oder Echtzeit-Aktienhandel beruhen.
Einführung in passiv-aggressive Algorithmen
Der passiv-aggressive Algorithmus wurde erstmals von Crammer et al. Im Jahr 2006 über ihre Arbeit mit dem Titel ?Passiv-aggressive Algorithmen“. Diese Algorithmen fallen unter die Kategorie des Online -Lernens und werden haupts?chlich für Klassifizierungsaufgaben verwendet. Diese sind speichereffizient, da sie inkrementell von jedem Datenpunkt lernen, ihre Parameter anpassen und dann die Daten aus dem Speicher wegwerfen k?nnen. Dies macht passiv-aggressive Algorithmen besonders nützlich, wenn sie mit riesigen Datens?tzen und Echtzeitanwendungen zu tun haben. Darüber hinaus erm?glicht seine F?higkeit, sich schnell anzupassen, in dynamischen Umgebungen, in denen sich die Datenverteilung im Laufe der Zeit ?ndern kann, eine gute Leistung.
Sie wundern sich vielleicht über den ungew?hnlichen Namen. Dafür gibt es einen Grund. Der passive Teil des Algorithmus impliziert, dass das Modell, wenn der aktuelle Datenpunkt korrekt klassifiziert ist, unver?ndert bleibt und das aus früheren Datenpunkten gewonnene Wissen bewahrt. Der aggressive Teil dagegen zeigt an, dass das Modell seine Gewichte erheblich anpasst, um den Fehler zu korrigieren, wenn eine Fehlklassifizierung auftritt.
Um ein besseres Verst?ndnis dafür zu erlangen, wie der PA -Algorithmus funktioniert, visualisieren wir sein Verhalten im Kontext der bin?ren Klassifizierung. Stellen Sie sich vor, Sie haben eine Reihe von Datenpunkten, die jeweils zu einer von zwei Klassen geh?ren. Der PA -Algorithmus zielt darauf ab, eine trennende Hyperebene zu finden, die die Datenpunkte in ihre jeweiligen Klassen unterteilt. Der Algorithmus beginnt mit einer ersten Vermutung für die Hyperebene. Wenn ein neuer Datenpunkt falsch klassifiziert wird, aktualisiert der Algorithmus die aktuelle Hyperebene aggressiv, um sicherzustellen, dass der neue Datenpunkt korrekt klassifiziert wird. Wenn der Datenpunkt hingegen korrekt klassifiziert ist, ist keine Aktualisierung der Hyperebene erforderlich.
Rolle des Scharnierverlusts beim passiv-aggressiven Lernen
Der passiv-aggressive Algorithmus verwendet den Scharnierverlust als Verlustfunktion und ist einer der wichtigsten Bausteine ??des Algorithmus. Deshalb ist es wichtig, die Funktionsweise des Scharnierverlusts zu verstehen, bevor wir uns mit der mathematischen Intuition hinter dem Algorithmus befassen.
Der Scharnierverlust wird im maschinellen Lernen h?ufig verwendet, insbesondere für Schulungsklassifizierer wie Support Vector Machines (SVMs).
Definition des Scharnierverlusts
Es ist definiert als:
- W ist der Gewichtsvektor des Modells
- XI ist der Merkmalsvektor des I-ten Datenpunkts
- Yi ist die wahre Etikett des I -ten Datenpunkts, die im Falle einer bin?ren Klassifizierung entweder 1 oder -1 sein kann.
Nehmen wir den Fall eines Bin?rklassifizierungsproblems, bei dem das Ziel zwischen zwei Datenklassen unterscheidet. Der PA -Algorithmus zielt implizit darauf ab, den Rand zwischen der Entscheidungsgrenze und den Datenpunkten zu maximieren. Der Rand ist der Abstand zwischen einem Datenpunkt und der Trennlinie/Hyperebene. Dies ?hnelt dem funktionierenden SVM -Klassifikator, der auch den Scharnierverlust als Verlustfunktion verwendet. Ein gr??erer Rand zeigt an, dass der Klassifizierer in seiner Vorhersage sicherer ist und zwischen den beiden Klassen genau unterscheiden kann. Daher ist es das Ziel, so oft wie m?glich einen Rand von mindestens 1 zu erreichen.
Gleichung verstehen
Lassen Sie uns dies weiter ausbrechen und sehen, wie die Gleichung dazu beitr?gt, den maximalen Rand zu erreichen:
- W · xi: Dies ist das Punktprodukt des Gewichtsvektors W und des Datenpunkts XI. Es repr?sentiert den Grad des Vertrauens in die Vorhersage des Klassifikators.
- yi * (w · xi): Dies ist die signierte Punktzahl oder der Rand des Klassifizierers, wobei das Zeichen durch das wahre Etikett YI bestimmt wird. Ein positiver Wert bedeutet, dass der Klassifizierer das richtige Etikett vorhergesagt hat, w?hrend ein negativer Wert bedeutet, dass er das falsche Etikett vorhergesagt hat.
- 1 - yi * (w · xi) : Dies misst die Differenz zwischen dem gewünschten Rand (1) und dem tats?chlichen Rand.
- max (0, 1 - yi * (w · xi)): Wenn der Rand mindestens 1 betr?gt, ist der Verlust Null. Andernfalls nimmt der Verlust mit dem Margendefizit linear zu.
Einfach gesagt, der Scharnierverlust bestraft falsche Klassifizierungen sowie korrekte Klassifikationen, die nicht sicher genug sind. Wenn ein Datenpunkt korrekt mit mindestens einem Einheitsrand klassifiziert wird, ist der Verlust Null. Andernfalls nimmt der Verlust mit dem Abstand vom Rand linear zu.
Mathematische Formulierung passiv-aggressiver Algorithmen
Die mathematische Grundlage des passiven aggressiven Klassifikators dreht sich um die Aufrechterhaltung eines Gewichtsvektors W , der auf der Grundlage des Klassifizierungsfehlers der eingehenden Datenpunkte aktualisiert wird. Hier ist ein detaillierter überblick über den Algorithmus:
Einen Datensatz beigefügt:
Schritt 1: Initialisieren Sie einen Gewichtsvektor w
SCHRITT2: Für jeden neuen Datenpunkt (xi, yi), wobei xiis der Feature -Vektor und Yi die wahre Etikett ist, die vorhergesagte Etikett ?_iis berechnet als:
Schritt 3: Berechnen Sie den Scharnierverlust
- Wenn das vorhergesagte Etikett ?_i korrekt ist und der Rand mindestens 1 betr?gt, betr?gt der Verlust 0.
- Andernfalls ist der Verlust der Unterschied zwischen 1 und dem Rand.
Schritt 4: Passen Sie den Gewichtsvektor W anhand der folgenden Aktualisierungsregel an
Für jeden Datenpunkt X_I, wenn l (w; (x_i, y_i))> 0 (falsch klassifiziert oder unzureichend):
Der aktualisierte Gewichtsvektor W_T 1 ist angegeben als:
Wenn l (w; (x_i, y_i)) = 0 (korrekt klassifiziert mit ausreichendem Rand):
Dann bleibt der Gewichtsvektor unver?ndert:
Es ist zu beachten, dass diese Gleichungen nach L?sung eines eingeschr?nkten Optimierungsproblems mit dem Ziel entstehen, eine maximale Randhyperebene zwischen den Klassen zu erhalten. Diese stammen aus dem ursprünglichen Forschungspapier, und die Ableitung dieser ist jenseits des Rahmens dieses Artikels.
Diese beiden Aktualisierungsgleichungen sind das Herzstück des passiv-aggressiven Algorithmus. Die Bedeutung dieser kann einfacher verstanden werden. Einerseits erfordert das Update den neuen Gewichtswert (W_T 1), um das aktuelle Beispiel korrekt mit einem ausreichend gro?en Rand zu klassifizieren, und somit wird Fortschritte erzielt. Andererseits muss es so nah wie m?glich am ?lteren Gewicht (W_T) bleiben, um die in früheren Runden erlernten Informationen beizubehalten.
Verst?ndnis des Aggressivit?tsparameters (c)
Der Aggressivit?tsparameter C ist der wichtigste Hyperparameter im passiv-aggressiven Algorithmus. Es regelt, wie aggressiv der Algorithmus seine Gewichte aktualisiert, wenn eine Fehlklassifizierung auftritt.
Ein hoher C -Wert führt zu aggressiveren Aktualisierungen, was m?glicherweise zu einem schnelleren Lernen führt, aber auch das Risiko einer überanpassung erh?ht. Der Algorithmus kann zu empfindlich gegen Rauschen und Schwankungen der Daten sein. Andererseits führt ein niedriger Wert von C zu weniger aggressiven Updates, was den Algorithmus für Rauschen und Ausrei?er robuster macht. In diesem Fall ist es jedoch nur langsam an neue Informationen anpassen und den Lernprozess verlangsamen.
Wir m?chten, dass der Algorithmus von jeder neuen Instanz schrittweise lernt und gleichzeitig die überanpassung an laute Stichproben vermeidet. Infolgedessen müssen wir uns bemühen, ein Gleichgewicht zwischen den beiden zu erreichen, sodass wir erhebliche Aktualisierungen vornehmen k?nnen, w?hrend wir die Modellstabilit?t beibehalten und überanpassung verhindern. In den meisten F?llen h?ngt der optimale Wert von C vom spezifischen Datensatz und dem gewünschten Kompromiss zwischen Lerngeschwindigkeit und Robustheit ab. In praktischen Szenarien werden Techniken wie Kreuzvalidierung verwendet, um einen optimalen Wert von C zu erreichen.
Auswirkungen der Regularisierung bei passiv-aggressiven Algorithmen
Datens?tze in der Praxis enthalten fast immer ein gewisses Ma? an Rauschen oder Unregelm??igkeiten. Ein falscher Datenpunkt kann dazu führen, dass der PA -Algorithmus seinen Gewichtsvektor in die falsche Richtung drastisch ver?ndert. Dieses einzelne misklabelte Beispiel kann zu mehreren Vorhersagefehlern in nachfolgenden Runden führen, was sich auf die Zuverl?ssigkeit des Modells auswirkt.
Um dies anzugehen, gibt es einen weiteren wichtigen Hyperparameter, der dazu beitr?gt, den Algorithmus in den Daten robuster für Rauschen und Ausrei?er zu gestalten. Es verwendet tendenziell sanftere Gewichtsaktualisierungen im Falle einer Fehlklassifizierung. Dies ?hnelt der Regularisierung. Der Algorithmus ist basierend auf dem als PA-I und PA-II bezeichneten Regularisierungsparameter unterteilt in zwei Varianten.
Diese unterscheiden sich haupts?chlich in der Definition der Stufengr??envariablen τ (auch als normalisierter Verlust bezeichnet) . Für PA-I wird der Verlust auf den Wert des Aggressivit?tsparameters C begrenzt.
Die Formel dafür ist gegeben als:
Für PA-II kann die Schrittgr??e oder der normalisierte Verlust geschrieben werden als:
Bei der Implementierung des passiven aggressiven Klassifikators sklearn wird dieser Regularisierungsparameter als Verlust angesehen. Dies kann auf einen von zwei Werten eingestellt werden, basierend auf welcher der beiden PA-I und PA-II, die wir verwenden m?chten. Wenn Sie die PA-I-Variante verwenden m?chten, sollte der Verlust für PA-II auf ?Scharnier“ festgelegt werden, der Verlust ist auf "quadratische Wanderung" festgelegt.
Der Unterschied kann in einfachen Worten wie folgt angegeben werden:
- PA-I ist eine aggressivere Variante, die die Randbeschr?nkung entspannt (die Marge kann weniger als eins sein), bestraft jedoch den Verlust bei falschen Vorhersagen linear. Dies führt zu einem schnelleren Lernen, ist jedoch anf?lliger für Ausrei?er als sein Gegenstück.
- PA-II ist eine robustere Variante, die den Verlust quadratisch bestraft und sie widerstandsf?higer gegenüber lauten Daten und Ausrei?ern macht. Gleichzeitig macht es die Anpassung an die Varianz der Daten konservativer, was zu einem langsameren Lernen führt.
Wiederum h?ngt die Wahl zwischen diesen beiden von den spezifischen Merkmalen Ihres Datensatzes ab. In der Praxis ist es oft ratsam, mit beiden Varianten mit unterschiedlichen Werten von C zu experimentieren, bevor sie ausgew?hlt werden.
Echtzeitanwendungen passiv-aggressiver Algorithmen
Online-Lernen und passiv-aggressive Algorithmen haben eine breite Palette von Anwendungen, von Echtzeitdatenverarbeitung bis hin zu adaptiven Systemen. Im Folgenden betrachten wir einige der wirkungsvollsten Anwendungen des Online -Lernens.
Spamfilterung
Die Spam -Filterung ist eine wesentliche Anwendung der Textklassifizierung, bei der das Ziel darin besteht, zwischen Spam und legitimen E -Mails zu unterscheiden. Die F?higkeit des PA -Algorithmus, inkrementell zu lernen, ist hier besonders vorteilhaft, da es das Modell kontinuierlich auf der Grundlage neuer Spam -Trends aktualisieren kann.
Stimmungsanalyse
Die Sentiment -Analyse besteht darin, das in einem Text ausdrückliche Gefühl zu bestimmen, z. B. einen Tweet oder eine Produktüberprüfung. Der PA-Algorithmus kann verwendet werden, um Modelle zu erstellen, die die Stimmung in Echtzeit analysieren und sich an neue Slang, Ausdrücke und Stimmungstrends anpassen. Dies ist besonders nützlich bei der überwachung der sozialen Medien und der Kundenfeedback -Analyse, bei denen rechtzeitige Erkenntnisse von entscheidender Bedeutung sind.
Erkennung von Hassreden
Die Erkennung von Hass -Sprache ist eine weitere kritische Anwendung, bei der der PA -Algorithmus ?u?erst nützlich sein kann. Durch inkrementell aus neuen F?llen von Hassreden kann sich das Modell an die sich entwickelnden Sprachmuster und -kontexte anpassen. Dies ist von entscheidender Bedeutung, um die Effektivit?t automatisierter Moderationstools auf Plattformen wie Twitter, Facebook und Reddit aufrechtzuerhalten und eine sicherere und integrativere Online -Umgebung zu gew?hrleisten.
Betrugserkennung
Finanzinstitute und Online -Dienste überwachen kontinuierlich Transaktionen und Benutzerverhalten, um betrügerische Aktivit?ten zu erkennen. Die F?higkeit des PA -Algorithmus, sein Modell mit jeder neuen Transaktion zu aktualisieren, hilft bei der Identifizierung von Betrugsmustern, die auftreten und eine starke Verteidigung gegen die sich entwickelnden betrügerischen Taktiken verleihen.
Aktienmarktanalyse
Die Aktienkurse auf den Finanzm?rkten sind sehr dynamisch und müssen die Modelle schnell auf neue Informationen reagieren. Online -Lernalgorithmen k?nnen verwendet werden, um die Aktienkurse durch schrittweise aus neuen Marktdaten zu prognostizieren und zu analysieren, was zu zeitnahen und genauen Vorhersagen führt, die H?ndlern und Anlegern zugute kommen.
Empfehlungssysteme
Online-Lernalgorithmen k?nnen auch in gro?r?umigen Empfehlungssystemen verwendet werden, um Empfehlungen basierend auf Benutzerinteraktionen dynamisch zu aktualisieren. Diese Echtzeit-Anpassungsf?higkeit stellt sicher, dass Empfehlungen relevant und personalisiert bleiben, wenn sich die Benutzerpr?ferenzen ?ndern.
Dies sind einige der Bereiche, in denen Online -Lernalgorithmen wirklich gl?nzen. Ihre F?higkeiten sind jedoch nicht auf diese Bereiche beschr?nkt. Diese sind auch in einer Vielzahl anderer Bereiche anwendbar, einschlie?lich Anomalieerkennung, medizinischer Diagnose und Robotik.
Einschr?nkungen und Herausforderungen
W?hrend Online-Lernen und passiv-aggressive Algorithmen Vorteile für den Umgang mit Streaming-Daten und die Anpassung an die schnellen ?nderung bieten, haben sie auch Nachteile. Einige der wichtigsten Einschr?nkungen sind:
- Passiv-aggressive Algorithmen verarbeiten Daten nacheinander, wodurch sie für verrückte oder fehlerhafte Datenpunkte anf?lliger werden. Ein einzelner Ausrei?er kann sich überproportional auf das Lernen des Modells auswirken, was zu ungenauen Vorhersagen oder voreingenommenen Modellen führt.
- Diese Algorithmen sehen nur eine Instanz von Daten gleichzeitig, die ihr Verst?ndnis der Gesamtdatenverteilung und der Beziehungen zwischen verschiedenen Datenpunkten einschr?nkt. Dies macht es schwierig, komplexe Muster zu identifizieren und genaue Vorhersagen zu treffen.
- Da PA-Algorithmen in Echtzeit aus Datenstr?men lernen, k?nnen sie die neuesten Daten übertreffen und Muster, die in früheren Daten beobachtet wurden, potenziell vernachl?ssigen oder vergessen. Dies kann zu einer schlechten Generalisierungsleistung führen, wenn sich die Datenverteilung im Laufe der Zeit ?ndert.
- Die Auswahl des optimalen Werts des Aggressivit?tsparameters C kann schwierig sein und erfordert h?ufig Experimente. Ein hoher Wert erh?ht die Aggressivit?t, die zu überanpassung führt, w?hrend ein niedriger Wert zu langsamem Lernen führen kann.
- Die Bewertung der Leistung dieser Algorithmen ist recht komplex. Da sich die Datenverteilung im Laufe der Zeit ?ndern kann, kann die Bewertung der Leistung des Modells an einem festen Testsatz inkonsistent sein.
Aufbau eines Modells zur Erkennung von Hassreden
Social -Media -Plattformen wie Twitter und Reddit generieren t?glich massive Datenmengen, sodass sie ideal für das Testen unseres theoretischen Verst?ndnisses von Online -Lernalgorithmen.
In diesem Abschnitt werde ich einen praktischen Anwendungsfall demonstrieren, indem ich eine Hass-Spracherkennungsanwendung von Grund an mit Echtzeitdaten von Reddit erstellt. Reddit ist eine Plattform, die für seine vielf?ltige Gemeinschaft bekannt ist. Es steht jedoch auch der Herausforderung giftiger Kommentare, die verletzend und missbr?uchlich sein k?nnen. Wir werden ein System erstellen, das diese toxischen Kommentare in Echtzeit mit der Reddit-API identifizieren kann.
In diesem Fall w?re das Training eines Modells mit allen Daten auf einmal aufgrund des gro?en Datenvolumens unm?glich. Darüber hinaus ?ndern sich die Datenverteilungen und -muster mit der Zeit. Daher erfordern wir die Unterstützung von passiv-aggressiven Algorithmen, die aus Daten im laufenden Fliegen lernen k?nnen, ohne sie im Speicher zu speichern.
Das Einrichten Ihrer Umgebung für die Echtzeitdatenverarbeitung einrichten
Bevor wir den Code implementieren k?nnen, müssen Sie zuerst Ihr System einrichten. Um die Reddit -API zu verwenden, müssen Sie zuerst ein Konto auf Reddit erstellen, wenn Sie noch keine haben. Erstellen Sie dann eine Reddit -Anwendung und erhalten Sie Ihre API -Schlüssel und andere Anmeldeinformationen zur Authentifizierung. Nachdem diese Voraussetzungen durchgeführt wurden, sind wir bereit, unser Modell für Hassreden zu erstellen.
Der Workflow des Codes sieht folgenderma?en aus:
- Stellen Sie mit der "Praw` -Bibliothek" eine Verbindung zur Reddit -API her.
- Streamen Sie Echtzeitdaten und füttern Sie sie in das Modell.
- Beschriften Sie die Daten mithilfe eines Bert-Modells, das für Hass-Spracherkennungsaufgaben fein abgestimmt ist.
- Trainieren Sie das Modell inkrementell mit dem passiven aggressiven Klassifizierer.
- Testen Sie unser Modell auf einem unsichtbaren Testdatensatz und messen Sie die Leistung.
Installieren Sie die erforderlichen Bibliotheken
Der erste Schritt besteht darin, die erforderlichen Bibliotheken zu installieren.
PIP Installieren Sie PRAW Scikit-Learn NLTK-Transformatoren Torch Matplotlib Seeborn Opendataseets
Um mit Reddit zu arbeiten, brauchen wir die "Praw" -Bibliothek, die der Reddit -API -Wrapper ist. Wir brauchen auch "NLTK" für die Textverarbeitung, "scikit-larn" für maschinelles Lernen, "Matplotlib" und "Seaborn" für Visualisierungen, "Transformers" und "Torch" zum Erstellen von Worteinbettungen und zum Laden des feinen Bert-Modells und "OpenDatasets", um Daten aus Kaggle zu laden.
Bibliotheken importieren und Reddit -API einrichten
Im n?chsten Schritt importieren wir alle notwendigen Bibliotheken und stellen eine Verbindung zur Reddit -API mit `praw` auf. Es wird uns helfen, Kommentare von Subreddits zu streamen.
Import Re praw importieren Taschenlampe importieren NLTK importieren Numph als NP importieren Pandas als PD importieren matplotlib.pyplot als pLT importieren Importieren Sie Seeborn als SNS Import Opendatasets als OD von nltk.corpus importieren stopwords von sklearn.feature_extraction.text import tfidfVectorizer Aus sklearn.linear_model import PisionaggressiveClassifier von sklearn.metrics importieren Aus sklearn.model_selection importieren train_test_split von Transformers importieren Automodel, Automodelforsequencklassifizierung, Autotokenizer Aus Transformatoren importieren BertforsequencClassification, BertTokenizer, TextclassificationPipeline # Reddit API -Anmeldeinformationen Reddit_client_id = {your_client_id} Reddit_client_secret = {your_client_secret} Reddit_user_agent = {your_user_agent} # Reddit API -Verbindung einrichten reddit = praw.reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent)
Um eine Reddit -Instanz erfolgreich einzurichten, ersetzen Sie einfach die oben genannten Platzhalter durch Ihre Anmeldeinformationen und Sie k?nnen loslegen.
Reinigen Sie den Text und verarbeiten Sie den Text
Beim Umgang mit Rohtextdaten ist es üblich, Beispiele mit Symbolen, Hashtags, Slang -W?rtern usw. zu haben. Da diese für unser Modell nicht praktisch sind, müssen wir den Text zuerst reinigen, um sie zu entfernen.
# Stopwords herunterladen NLTK.Download ('Stopwords') STOP_WORDSS = SET (STOPWords.words ('Englisch')) # Reinigen Sie den Text und entfernen Sie Stoppw?rter Def Clean_text (Text): text = re.sub (r'http \ s | www \ s | https \ s ',' ', text, flags = re.multiline) text = re.sub (r '\@\ w | \#', '', text) text = re.sub (r '\ w', '', text) text = re.sub (r '\ d', '', text) text = re.sub (r '\ s', '', text) text = text.strip () text = '' .join ([Wort für Wort in text.split () if Word.lower () nicht in stop_words])) Text zurückgeben
Der obige Code definiert eine Helferfunktion, die die Kommentare durch Entfernen unerwünschter W?rter, Sonderzeichen und URLs vorbereitet.
Richten
Wenn wir rohe Kommentare von Reddit streamen, haben wir keine Ahnung, ob der Kommentar giftig ist oder nicht, weil er nicht aufgenommen ist. Um die überwachte Klassifizierung zu verwenden, müssen wir zun?chst Daten beschriftet haben. Wir müssen ein zuverl?ssiges und pr?zises System für die Kennzeichnung eingehender roher Kommentare implementieren. Dafür würden wir ein Bert-Modell verwenden, das zur Erkennung von Hassreden abgestimmt ist. Dieses Modell klassifiziert die Kommentare genau in die beiden Kategorien.
model_path = "junglelee/bert-toxic-coment-Klasse" tokenizer = BertTokenizer.From_Pretrained (model_path) Modell = BertforsequencClassification.from_Pretrained (model_path, num_labels = 2) Pipeline = TextClassificationPipeline (Modell = Modell, Tokenizer = Tokenizer) # Helferfunktion zum Beschriften des Textes Def Predict_hate_speech (Text): Vorhersage = Pipeline (Text) [0] ['Label'] Rückgabe 1 Wenn Vorhersage == 'toxisch' else 0 # 1 für toxisch, 0 für ungiftige
Hier verwenden wir die Transformers Library, um die Modellpipeline einzurichten. Dann definieren wir eine Helferfunktion, um vorherzusagen, ob der gegebene Text unter Verwendung des Bert-Modells toxisch oder ungiftig ist. Wir haben jetzt Beispiele beschriftet, um in unser Modell einzuspeisen.
Konvertieren Sie den Text mit Bert -Emetten in Vektoren
Da unser Klassifizierer nicht mit Texteingaben funktioniert, müssten diese zuerst in eine geeignete Vektordarstellung umgewandelt werden. Dazu werden wir vorgezogene Bert -Einbettungen verwenden, die unseren Text in Vektoren umwandeln, die dann dem Modell für das Training zugeführt werden k?nnen.
# Laden Sie das vorgezogene Bert -Modell und Tokenizer für Einbettungen model_name = "Bert-Base-unbekannt" " tokenizer = autotokenizer.from_prisine (model_name) BERT_MODEL = AUMODEL.FROM_PRETRAUE (model_name) Bert_Model.eval () # Helferfunktion, um Bert -Einbettungen zu erhalten Def get_bert_embedding (Text): Inputs = Tokenizer (Text, return_tensors = 'pt', truncation = true, padding = true) mit fackel.no_grad (): Ausg?nge = Bert_Model (** Eing?nge) return outs.last_hidden_state [:, 0,:]. squeeze (). numpy ()
Der obige Code nimmt einen Text an, tokenisiert ihn mit einem Bert -Tokenizer und führt ihn dann durch das Bert -Modell, um die Satzeinbettungen zu extrahieren. Der Text wurde nun in Vektoren konvertiert.
Streamen Sie Echtzeit-Reddit-Daten und trainieren Sie den passiv-aggressiven Klassifikator
Wir sind jetzt bereit, Kommentare in Echtzeit zu streamen und unseren Klassifikator für die Erkennung von Hassreden auszubilden.
# Helferfunktion zum Streamen von Kommentaren aus einem Subreddit Def Stream_Coments (subreddit_name, batch_size = 100): subreddit = reddit.subreddit (subreddit_name) comment_stream = subreddit.stream.comments () batch = [] Für einen Kommentar in comment_stream: versuchen: # Reinigen Sie den eingehenden Text comment_text = clean_text (comment.body) # Beschriften Sie den Kommentar mit dem vorgenannten Bert -Modell label = predict_hate_speech (comment_text) # Fügen Sie den Text hinzu und kennzeichnen Sie der aktuellen Stapel batch.append ((comment_text, label)) Wenn Len (Batch)> = batch_size: Ertrags -Stapel batch = [] au?er Ausnahme als E: print (f'Error: {e} ') # Geben Sie die Anzahl der Trainingsrunden an Runden = 10 # Geben Sie den Subreddit an subreddit_name = 'Fitness' # Initialisieren Sie den passiv-aggressiven Klassifikator clf = passiveaggressiveClassifier (c = 0,1, Verlust = 'Hinge', max_iter = 1, random_state = 37) # Stream -Kommentare und führen Sie inkrementelles Training durch Für num_rounds batch in Enumerate (Stream_Coments (subreddit_name, batch_size = 100)): # Trainieren Sie den Klassifikator für eine gewünschte Anzahl von Runden Wenn num_rounds == Runden: brechen # Trennen Sie den Text und die Etiketten batch_texts = [item [0] für Element in Batch] batch_labels = [Element [1] für Artikel in Batch] # Konvertieren Sie die Texte in Bert -Einbettungen X_train_batch = np.Array ([get_bert_embedding (text) für text in batch_texts]) y_train_batch = np.Array (batch_labels) # Trainieren Sie das Modell auf der aktuellen Stapel clf.Partial_fit (x_train_batch, y_train_batch, classes = [0, 1]) print (f'trained auf Stapel von {len (batch_texts)} modples. ') drucken ('Training abgeschlossen')
Im obigen Code geben wir zun?chst den Subreddit an, aus dem wir Kommentare streamen und dann unseren PA -Klassifizierer mit 10 Trainingsrunden initialisieren m?chten. Anschlie?end streamen wir Kommentare in Echtzeit. Für jeden neuen Kommentar, der zuerst eingeht, werden unerwünschte W?rter entfernt. Dann wird es unter Verwendung des vorbereiteten Bert -Modells gekennzeichnet und zur aktuellen Stapel hinzugefügt.
Wir initialisieren unseren passiv-aggressiven Klassifikator, der C = 0,1 und LUST = 'HING' einnimmt, was der PA-I-Version des Algorithmus entspricht. Für jede Charge trainieren wir unseren Klassifikator mit der Methode `partial_fit ()`. Auf diese Weise kann das Modell aus jeder Trainingsprobe schrittweise lernen, anstatt die gesamte Stapel im Speicher vor der Verarbeitung zu speichern. So k?nnen Sie das Modell erm?glichen, sich st?ndig an neue Informationen anzupassen, wodurch es ideal für Echtzeitanwendungen ist.
Modellleistung bewerten
Ich werde den Kaggle Toxic Tweets -Datensatz verwenden, um unser Modell zu bewerten. Dieser Datensatz enth?lt mehrere Tweets, die als giftig oder ungiftig eingestuft werden.
# Daten von Kaggle herunterladen od.download ("https://www.kaggle.com/datasets/ashwiniyer176/toxic-tweets-dataset")) # Die Daten laden Data = pd.read_csv ("Toxic-Tweets-Datenet/FinalBalancedDataset.csv", usecols = [1,2]) ["Tweet", "Toxizit?t"] # Trennen Sie den Text und die Etiketten test_data = data.sample (n = 100) texts = test_data ['tweet']. anwenden (clean_text) Labels = test_data ['Toxizit?t'] # Text in Vektoren konvertieren X_test = np.Array ([get_bert_embedding (Text) für Text in Texten]) y_test = np.Array (Labels) # Vorhersagen machen y_pred = clf.predict (x_test) # Bewerten Sie die Leistung des Modells accuracy = accuracy_score (y_test, y_pred) conf_matrix = confusion_matrix (y_test, y_pred) print ("Klassifizierungsbericht:") print (klassifizierung_report (y_test, y_pred))) # Die Verwirrungsmatrix zeichnen PLT.Figure (AbbSize = (7, 5)) sns.heatmap (conf_matrix, Annot = true, fmt = 'd',, CMAP = 'Blues', cbar = false, XtickLabels = ["ungiftig", "giftig"], yticklabels = ["ungiftig", "giftig"]) pt.xlabel ('vorhergesagte Etiketten') PLT.YLABEL ('True Labels') Plt.title ('Verwirrungsmatrix') Plt.Show ()
Zuerst haben wir den Testsatz geladen und mit der zuvor definierten Methode `Clean_text` gereinigt. Der Text wird dann unter Verwendung von Bert -Einbettungen in Vektoren konvertiert. Schlie?lich treffen wir Vorhersagen im Testsatz und bewerten die Leistung unseres Modells auf verschiedenen Metriken mithilfe von Klassifizierungsbericht und Verwirrungsmatrix.
Abschluss
Wir haben die Kraft von Online-Lernalgorithmen untersucht und uns auf die F?higkeit des passiv-aggressiven Algorithmus konzentriert, gro?e Datens?tze effizient zu verarbeiten und sich an Echtzeitdaten anzupassen, ohne eine vollst?ndige Umschulung zu erfordern. Und diskutierte auch die Rolle des Scharnierverlusts, der Aggressivit?t Hyperparameter (C) und wie die Regularisierung dazu beitr?gt, L?rm und Ausrei?er zu verwalten. Wir haben auch reale Anwendungen und Einschr?nkungen überprüft, bevor wir ein Hass-Spracherkennungsmodell für Reddit unter Verwendung des passiv-aggressiven Klassifikators implementieren. Danke fürs Lesen und ich freue mich auf unser n?chstes AI -Tutorial!
H?ufig gestellte Fragen
Q1. Was ist das grundlegende Prinzip, das passiv-aggressive Algorithmen zugrunde liegt?A. Das grundlegende Prinzip hinter dem passiven aggressiven Algorithmus besteht darin, die Gewichte aggressiv zu aktualisieren, wenn eine falsche Vorhersage getroffen wird, und die erlernten Gewichte passiv beizubehalten, wenn eine korrekte Vorhersage getroffen wird.
Q2. Welche Rolle spielt der Aggressivit?tsparameter C im PA -Algorithmus?A. Wenn C hoch ist, wird der Algorithmus aggressiver und passt schnell an neue Daten an, was zu einem schnelleren Lernen führt. Wenn C niedrig ist, wird der Algorithmus weniger aggressiv und macht kleinere Aktualisierungen. Dies verringert die Wahrscheinlichkeit, dass es zu lauten Proben übernommen wird, es ist jedoch langsamer, sich an neue Instanzen anzupassen.
Q3. Wie ?hnelt der passiv-aggressive Klassifikator der Support Vector Machine (SVM)?A. Beide zielen darauf ab, den Rand zwischen der Entscheidungsgrenze und den Datenpunkten zu maximieren. Beide verwenden Scharnierverlust als Verlustfunktion.
Q4. Was sind die Vorteile von Online -Lernalgorithmen gegenüber Batch -Lernalgorithmen?A. Online -Lernalgorithmen k?nnen mit riesigen Datens?tzen funktionieren, keine Speicherbeschr?nkungen haben und sich leicht an schnell ?ndernde Daten anpassen, ohne dass die Umschulung von Grund auf neu zurückgezogen werden muss.
Q5. Was sind einige reale Szenarien, in denen passive aggressive Algorithmen nützlich sein k?nnen?A. Passiv-aggressive Algorithmen k?nnen in einer Vielzahl von Anwendungen verwendet werden, einschlie?lich Spam-Filterung, Stimmungsanalyse, Hass-Spracherkennung, Echtzeit-Aktienmarktanalyse und Empfehlungssystemen.
Die in diesem Artikel gezeigten Medien sind nicht im Besitz von Analytics Vidhya und werden nach Ermessen des Autors verwendet.
Das obige ist der detaillierte Inhalt vonLeitfaden für Online-Lernen und passiv-aggressive Algorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Googles NotebookLM ist ein intelligentes KI-Notiz-Tool, das von Gemini 2.5 betrieben wird, das sich beim Zusammenfassen von Dokumenten auszeichnet. Es hat jedoch weiterhin Einschr?nkungen bei der Verwendung von Tools, wie Quellkappen, Cloud -Abh?ngigkeit und der jüngsten ?Discover“ -Funktion

Tauchen wir ein. Dieses Stück analysiert eine bahnbrechende Entwicklung in AI

Aber was hier auf dem Spiel steht, sind nicht nur rückwirkende Sch?den oder Lizenzgebühren. Laut Yelena Ambartsumian, einer KI-Governance- und IP-Anw?ltin und Gründerin von Ambart Law PLLC, ist das eigentliche Anliegen zukunftsweisend. ?Ich denke, Disney und Universal's MA

Wenn Sie sich die Updates in der neuesten Version ansehen, werden Sie feststellen

Die Verwendung von AI ist nicht dasselbe wie die Verwendung gut zu verwenden. Viele Gründer haben dies durch Erfahrung entdeckt. Was als zeitsparendes Experiment beginnt, schafft oft mehr Arbeit. Die Teams verbringen Stunden damit, Inhalte der AI-generierten überarbeitung oder überprüfung der Ausgaben zu überprüften

DIA ist der Nachfolger des vorherigen kurzlebigen Browser-Bogens. Der Browser hat die ARC -Entwicklung eingestellt und sich auf DIA konzentriert. Der Browser wurde am Mittwoch in Beta ver?ffentlicht und steht allen ARC -Mitgliedern offen, w?hrend andere Benutzer auf der Warteliste stehen müssen. Obwohl ARC künstliche Intelligenz stark verwendet hat - z. B. integrierende Funktionen wie Web -Snippets und Link -Vorschau -, wird DIA als ?AI -Browser“ bezeichnet, das sich fast ausschlie?lich auf generative KI konzentriert. DIA Browser Feature DIAs auff?lligste Funktion bietet ?hnlichkeiten mit der umstrittenen Funktionsfunktion in Windows 11. Der Browser erinnert sich an Ihre vorherigen Aktivit?ten, damit Sie nach KI fragen k?nnen

Das Space Company Voyager Technologies sammelte am Mittwoch w?hrend seines B?rsengangs fast 383 Millionen US -Dollar, wobei die Aktien auf 31 US -Dollar angeboten wurden. Das Unternehmen bietet sowohl Regierungs- als auch gewerblichen Kunden eine Reihe von platzbezogenen Dienstleistungen an, einschlie?lich Aktivit?ten an Bord der IN-

Hier sind zehn überzeugende Trends, die die AI -Landschaft der Unternehmen neu ver?ndern. Das riskante finanzielle Engagement für LLMSorganisierungen erh?ht ihre Investitionen in LLM erheblich, wobei 72% erwarten, dass ihre Ausgaben in diesem Jahr steigen. Derzeit fast 40% a
