[PYTHON] "Wie ist es dann mit anderen Methoden zu vergleichen?"

** "Wie ist es dann mit anderen Methoden zu vergleichen?" **

Ich denke, die Entwickler des Algorithmus haben (ziemlich oft) Angst vor diesem Wort. Vor allem, wenn Sie gezwungen sind, innerhalb der Frist ein praktisches System zu entwickeln. Wenn Sie nicht versuchen, eine wissenschaftliche Arbeit zu schreiben, sollten Sie dieses Problem vermeiden, wenn Sie es vermeiden können. Wenn dieses Wort vorkommt, erhöht sich der Arbeitsaufwand um den Faktor (1 + Anzahl der zu vergleichenden Methoden). Eine Person, die sich nicht bewusst ist, wie mühsam es ist, Lernen und Bewertung zu erstellen, indem nur der Lernalgorithmus durch dieselben Lerndaten und dieselbe Funktionsmenge ersetzt wird. "Wie vergleichen Sie ihn dann mit anderen Methoden? Das ist eine sehr vernünftige Aussage. (Hinweis) ** In einer Situation, in der die Entwicklungsressourcen begrenzt sind, ist es wichtig, ein akzeptables Niveau zu schaffen. ** Sie müssen darauf achten, keine Entscheidung zu treffen, die Priorität eines Projekts für ein Element zu erhöhen, das nicht der Engpass bei der Entwicklung ist. Im Fall von maschinellem Lernen, Datenerfassung, Erweiterung von Daten basierend auf Bewertungsergebnissen, Datenvorverarbeitung zum Entwerfen von Merkmalsmengen und Ergebnissen wie Verwirrungsmatrix für unbekannte Daten Ermutigen Sie die Mitarbeiter in Ihrer Umgebung, zu erkennen, dass das Festlegen von Richtlinien für die zukünftige Datenerweiterung nach der Erfassung wichtiger ist als die Auswahl des zu wählenden Algorithmus für maschinelles Lernen. Es ist zu gehen. Wenn die Entwicklungsressourcen nicht eingeschränkt sind, möchte der Entwickler selbst überprüfen, wie er sich dann mit anderen Methoden vergleichen lässt.

** Datenmangel wird in den frühen Entwicklungsstadien zum Engpass **

Bewerten Sie Werte sowohl für die Genauigkeit als auch für den Rückruf mithilfe des Scikit-Learn-Bewertungsrahmens. In den frühen Entwicklungsstadien sind überhaupt nicht genügend Daten vorhanden, und sowohl die Genauigkeit als auch der Rückruf sind beeinträchtigt. Wenn Sie daher die Trainingsdaten nur in der Kategorie mit niedriger Rückrufrate erhöhen, sollte sich die Rückrufrate dieser Kategorie verbessern. Es sollte auch die Genauigkeit der Kategorie verbessern, die diese Kategorie falsch identifiziert hat. Solange es sich so verhält, sollten Trainingsdaten und Bewertungsdaten stetig erhöht werden. Der dafür erstellte Datensatz sollte nicht verschwendet werden.

Je flexibler das Modell beim maschinellen Lernen ist, desto kleiner sind die Residuen, die auf die Trainingsdaten angewendet werden können. Dies bedeutet jedoch nicht, dass Genauigkeit und Rückruf erzielt werden, wenn es nicht zum Lernen verwendet wird. Mit jedem Algorithmus für maschinelles Lernen kann die ursprüngliche Leistung nicht erreicht werden, wenn die Menge der Lern- / Bewertungsdaten nicht ausreicht. Jeder Algorithmus hängt nur davon ab, wie empfindlich der Mangel an Daten ist.

** Support Vector Machine (SVM) **

Support Vector Machine (SVM) soll auch bei relativ geringen Datenmengen (im Vergleich zu anderen Algorithmen) leicht stabile Trainingsergebnisse liefern können. Sogar einer der SVM-Algorithmen verfügt über das Know-how, um maschinelles Lernen zum Erfolg zu führen, indem Daten im Voraus verarbeitet werden (Ein praktischer Leitfaden zur Unterstützung der Vektorklassifizierung. /~cjlin/papers/guide/guide.pdf)).

Es wird daran gearbeitet, die Werte der Parameter gamma und C zu bestimmen, die beim Erlernen von SVM angegeben werden. libSVM stellt dafür ein Tool grid.py zur Verfügung.  Grid Parameter Search for Regression

Zunächst schlage ich vor, SVM zu verwenden, um gute Ergebnisse zu erzielen.

Das Fehlen von Anfangswertabhängigkeiten in SVMs ist auch einer der Gründe, warum ich es als erste Methode zur Verwendung von SVMs mag. (Abhängig vom Algorithmus gibt es ein Problem der Anfangswertabhängigkeit. "Funktioniert es nicht, weil der verwendete Anfangswert schlecht war? (Funktioniert es nicht, wenn ein anderer Anfangswert verwendet wird?)" Es besteht die Möglichkeit, dass Sie niemals ein ausreichendes Urteil fällen können.)

Die Frage "Wie ist der Vergleich mit anderen Methoden?" Bedeutet, dass die Anzahl der Trainingsdaten und Bewertungsdaten ausreichend ist und die aktuelle Methode für die Datenvorverarbeitung geeignet ist. In einer Situation, in der Leistung erbracht werden kann. Lassen Sie uns zunächst ein Interesse daran haben, die Situation des Entwicklungsteams auf diese Situation zu bringen.

** Scikit-Learn ist eine Fundgrube für Algorithmusvergleiche **

Bei genügend Daten wird es sinnvoll, Algorithmen zu vergleichen. Verwenden Sie in einem solchen Fall scikit-learn, um den Unterschied zwischen den Algorithmen zu bewerten. "Selbst mit demselben Algorithmus haben verschiedene Bibliotheken natürlich unterschiedliche Schnittstellen. Selbst beim maschinellen Lernen für denselben Zweck ist die Schnittstelle unterschiedlich, wenn der Algorithmus unterschiedlich ist. "" Scikit-Learn hat diese Situation lange Zeit erschüttert. In Gesichtsvervollständigung mit einem Schätzer mit mehreren Ausgaben wird Folgendes angewendet , Es ist eine wundervolle Sache.

python


for name, estimator in ESTIMATORS.items():
    estimator.fit(X_train, y_train)
    y_test_predict[name] = estimator.predict(X_test)

** Das Scikit-Learn-API-Design wird zu einem Beispiel für andere Bibliotheken **

Es gibt verschiedene Bibliotheken für maschinelles Lernen, aber viele von ihnen erstellen Wrapper für APIs, die Scicit-Learn ähneln. Es ist also kein Verlust, sich an das Sciki-Lernen zu gewöhnen.

Chainer kann jetzt zum Scicit-Learn verwendet werden

scikit-chainer

Es gibt mehrere Scikit-Learn-ähnliche Implementierungen. Überprüfen Sie den neuesten Status, um festzustellen, welche Implementierung am besten gewartet wird.

tensorflow/skflow

tensorflow/tensorflow/examples/skflow/ digits.py iris.py mnist.py Wenn Sie sich usw. ansehen, können Sie sehen, dass es mit derselben Schnittstelle wie scicit-learn verwendet werden kann.

Wie erstelle ich ein Vorhersagemodell basierend auf scikit-learn

Wenn Sie verschiedene Dinge mit maschinellem Lernen tun, möchten Sie möglicherweise selbst ein neues Vorhersagemodell erstellen, z. B. ein Ensemblemodell, das verschiedene Modelle kombiniert. In diesem Fall können Sie es von Grund auf neu erstellen, aber das auf diese Weise erstellte Modell ist etwas unpraktisch, da Sie GridSearch oder RandomSearch nicht verwenden können, die beispielsweise Parameteroptimierungsmodule von scikit-learn sind. Wenn Sie das Modell zu diesem Zeitpunkt gemäß der Definition von Scikit-Learn definieren, funktioniert es gut und ist effizient.

** Wenn Sie den Algorithmus weiter verbessern möchten **

Wenn der Datensatz für Training und Evaluierung ordnungsgemäß erfasst wird, können mithilfe externer Ressourcen wie Kaggle effizientere Algorithmen und mehr Genauigkeit verwendet werden. Sie können einen Algorithmus entwickeln, der verwendet werden kann.

** Vorsichtsmaßnahmen für die Interpretation der Bewertung nach dem Lernen mit verschiedenen Algorithmen **

――Welcher Algorithmus besser ist, hängt vom Gleichgewicht zwischen dem Freiheitsgrad des Modells und der Anzahl der Daten ab. ――Die Anfälligkeit für das Lernen von Bildern, die falsch beschriftet wurden, hängt vom Algorithmus ab. ――Es hängt auch vom Algorithmus ab, ob er von der statistischen Verteilung der Trainingsdaten betroffen ist.

Bitte finden Sie die beste Methode, wenn Sie diese Dinge berücksichtigen.

Hinweis: Artikel, die auf das Problem des Überlernens hinweisen Ich habe versucht, die Stimmen von Sprachschauspielern zu klassifizieren   Ich habe versucht, den Lernprozess des neuronalen Netzes grafisch darzustellen

** Hinweis: Bedeutung des Datensatzes **

Da die Beschreibung zugenommen hat, habe ich sie als separaten Artikel unabhängig gemacht. Bedeutung des Datensatzes

Hinweis: Bei Verwendung von SVM haben Sie die Möglichkeit, welche Bibliothek Sie verwenden möchten. Wir empfehlen die Python-Bindung von libSVM und die SVM von scikit-learn, da sie Wahrscheinlichkeiten bei der Klassifizierung mehrerer Klassen zurückgeben kann.

Suche nach SVM

Wir haben eine Sammlung von Links zu Artikeln erstellt, die Daten zum maschinellen Lernen sammeln. Sammeln von Daten zum maschinellen Lernen

Referenzinformationen

Qiita Unterstützung von Vektormaschinen und anderen Techniken des maschinellen Lernens Qiita [Maschinelles Lernen mit Python] SVM-Informationen (Support Vector Machine) veröffentlicht Zusammenfassung der Referenzwebsite Qiita Chainer kann jetzt für Scicit-Learn-Like verwendet werden Qiita Überblick über Methoden des maschinellen Lernens, die aus scikit-learn gelernt wurden

Ab SSII2016

Aus dem Bildsensorsymposium

"Was die Objekterkennung betrifft, haben wir sie so weit verbreitet, dass jeder in gewissem Umfang ein System aufbauen kann, wenn wir geeignete Mengen- und Qualitätsdaten als Problem aufbereiten können." [SSII2016 Neueste und nahe Zukunft der Bilderkennung] Es ist geschrieben in (https://confit.atlas.jp/guide/event/ssii2016/static/speciallecture). Es bleibt noch die Vorbereitung der entsprechenden zu hinterfragenden Quantitäts- und Qualitätsdaten.

Herr Yasutomo Kawanishi Als ich eine Methode entwickelte, fragten mich viele Leute: "Haben Sie sie mit SVM verglichen? Was passiert mit der Genauigkeit, wenn Sie sie mit Random Forest machen?" In diesem Lernprogramm erleichtert die jüngste Verbreitung von Bibliotheken für maschinelles Lernen das Anwenden verschiedener Methoden des maschinellen Lernens auf bestimmte Erkennungsprobleme und den Vergleich ihrer Leistung sowie deren Verwendung. Ich werde erklären. (Https://confit.atlas.jp/guide/event/ssii2016/static/tutorial)

Herr Yasutomo Kawanishi slideShare Einführung in maschinelles Lernen mit Python - Von SVM zu Deep Learning -

Herr Yasutomo Kawanishi Beispielcode für das Tutorial in SSII2016

Hinweis: Es ist beängstigend, dass Sie nicht das tun können, was Sie tun sollen, wenn Sie entscheiden, dass die Reproduktion der Ergebnisse, die andere haben (sollten), Vorrang vor Ihrer aktuellen Entwicklung hat. Es wird eine Situation sein.

Nachtrag "Große Herausforderung bei der Erkennung von Fußgängern"

[Umfragepapier] Forschungstrends bei der Erkennung von Fußgängern mithilfe von Deep Learning

Dinge, die sich seit dem Schreiben dieses Satzes geändert haben (2018.07 Nachtrag)

Recommended Posts

"Wie ist es dann mit anderen Methoden zu vergleichen?"
[Pfeffer] Wie benutzt man es?
[Google Colab] So unterbrechen Sie das Lernen und setzen es dann fort
So vergleichen Sie Zeitreihendaten-Derivative DTW, DTW-
So installieren Sie den Cascade-Detektor und wie verwenden Sie ihn
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
Problemumgehung für Djangos Vorlage existiert nicht
Wie man Decorator in Django benutzt und wie man es macht
Vergleichen Sie, wie die Verarbeitung für Listen nach Sprache geschrieben wird