Dies ist ein Memo für mich, während ich Einführung in Anwendungen zur Verarbeitung natürlicher Sprache in 15 Schritten lese. Dieses Mal werde ich in Kapitel 2, Schritt 06, meine eigenen Punkte aufschreiben.
Durch Lernen mit dem Merkmalsvektor und der Klassen-ID als Eingaben kann die Klassen-ID aus dem Merkmalsvektor vorhergesagt werden.
Sie können den Klassifikator einfach wechseln, indem Sie der Variablen "Klassifikator" einen Klassifikator zuweisen.
# SVC
from sklearn.svm import SVC
classifier = SVC()
# RandomForest
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier()
06.2 SVM(Support Vector Machine)
Die grundlegende SVM-Übersicht entfällt. Ein Problem, das nicht durch Teilen des Merkmalsraums auf einer geraden oder flachen Identifikationsfläche (lineare Identifikationsfläche) identifiziert werden kann, wird als ** linear untrennbares ** Problem bezeichnet. Es gibt die folgenden Methoden, um damit umzugehen.
Es gibt zwei Typen, ** SVM mit weichem Rand ** und einfache SVM mit hartem Rand **, die versuchen, die Grenzfläche so einzustellen, dass "die Grenze hervorsteht und der Vorsprung so weit wie möglich verringert wird". Der Grad der Toleranz für den Vorsprung kann zum Zeitpunkt der Instanziierung festgelegt werden (Standard 1.0).
In Fällen, in denen die Grenze nicht in dem Maße getrennt werden kann, in dem die Grenze hervorstehen darf, wird die Kernelmethode verwendet, bei der der Merkmalsvektor in einen Merkmalsraum kopiert wird, dessen Dimension größer ist als der ursprüngliche Merkmalsraum, und die Unterscheidungsfläche dort festgelegt wird. Der Kerneltyp kann zum Zeitpunkt der Instanziierung angegeben werden.
--RBF-Kernel (Gauß-Kernel): Standardspezifikation, am orthodoxesten --Polygon-Kernel: beliebt in der Verarbeitung natürlicher Sprache --Andere
Die Methode, mehrere Klassifikatoren zu einem Klassifikator zu kombinieren, wird als Ensemble bezeichnet. Obwohl die Erklärung des Entscheidungsbaums weggelassen wird, sind die Eigenschaften des Entscheidungsbaumensembles wie folgt.
Typische Ensemble-Methoden sind Bagging und Boosting (Referenz).
Artikel | Random Forest | GBDT |
---|---|---|
Ensemble-Methode | Absacken | Erhöhen |
Methode | sklearn.ensemble.RandomForestClassifier() | skleran.ensemble.GradientBoostingClassifier() |
Entscheidungsbaum erstellen | Ein paar tiefe Bäume | Viele flache Bäume |
Lauf | - | Schneller und speichereffizienter als Random Forest |
Es ist ein Klassifizierer, der aus den Trainingsdaten k Merkmalsvektoren nahe dem Eingangsmerkmalsvektor auswählt und anhand seiner Klassen-ID eine Mehrheitsentscheidung trifft. Abhängig vom numerischen Wert von k kann sich die identifizierte Klassen-ID ändern, oder wenn die Anzahl der Klassen-IDs in den Trainingsdaten verzerrt ist, kann das gewünschte Ergebnis möglicherweise nicht erhalten werden.
Art | Inhalt |
---|---|
Euklidische Entfernung | Die Länge des Vektors im Raum |
Manhattan Entfernung | Summe der axialen Längen im Raum |
Minkovsky Entfernung | Eine verallgemeinerte Entfernung von euklidischer Entfernung und Manhattan-Entfernung |
Levenstein Entfernung | Fügen Sie jeweils ein Zeichen ein, um den Abstand zwischen den Zeichenfolgen darzustellen/Löschen/Häufigkeit, mit der dieselbe Zeichenfolge ersetzt und erstellt werden muss |
Artikel | parametrisch | ノンparametrisch |
---|---|---|
Parametereinstellungen | Es ist notwendig, auf die Parameter zu achten, damit die Identifikationsfläche richtig eingestellt werden kann. | Sie müssen nicht über Parameter nachdenken, die sich auf die Identifikationsoberfläche beziehen |
Berechnungskosten | Die Berechnungskosten der Identifikationsfläche sind zum Zeitpunkt des Lernens erforderlich Die Berechnungskosten zum Zeitpunkt der Identifizierung sind nahezu konstant |
Die Berechnungskosten zum Zeitpunkt des Lernens sind grundsätzlich Null Die Berechnungskosten zum Zeitpunkt der Identifizierung steigen entsprechend der Menge der Trainingsdaten |
Anzahl der erforderlichen Trainingsdaten | Verhältnis mäßig wenig | Relativ viele |
Diskriminator Beispiel | SVM | k Nachbarschaftsmethode |
Ergänzungen / Änderungen gegenüber dem vorherigen Kapitel
~~
pipeline = Pipeline([
# ('vectorizer', TfidfVectorizer(tokenizer=self._tokenize, ngram_range=(1, 3))),
('vectorizer', TfidfVectorizer(tokenizer=self._tokenize, ngram_range=(1, 2))),
# ('classifier', SVC()),
('classifier', RandomForestClassifier(n_estimators=30)),
])
~~
Ausführungsergebnis
# evaluate_dialogue_agent.Ändern Sie den Namen des py-Lademoduls nach Bedarf
from dialogue_agent import DialogueAgent
$ docker run -it -v $(pwd):/usr/src/app/ 15step:latest python evaluate_dialogue_agent.py
0.61702127
Recommended Posts