Worum geht es in der Praxis beim maschinellen Lernen?

11

Ich bin ein Neuling im Bereich maschinelles Lernen (auch einige Statistiken), habe eine Weile Wissen gelernt (überwachte / unbeaufsichtigte Lernalgorithmen, relevante Optimierungsmethoden, Regularisierungen, einige Philosophien (wie Bias-Varianz-Kompromiss?)). Ich weiß, dass ich ohne echte Übung kein tiefes Verständnis für diese maschinellen Lerninhalte gewinnen würde.

Ich beginne also mit einem Klassifizierungsproblem mit realen Daten, beispielsweise der handschriftlichen Ziffernklassifizierung (MNIST). Zu meiner Überraschung erreicht die Genauigkeit ohne Feature-Lernen / Engineering 0,97 unter Verwendung eines Zufalls-Wald-Klassifikators mit rohen Pixelwerten als Eingabe. Ich habe auch andere Lernalgorithmen wie SVM, LR ausprobiert, wobei die Parameter angepasst wurden.

Dann habe ich mich verlaufen, wäre es zu einfach oder vermisse ich hier etwas? Nehmen Sie einfach einen Lernalgorithmus aus dem Toolkit und optimieren Sie einige Parameter?

Wenn es in der Praxis nur um maschinelles Lernen gehen würde, würde ich mein Interesse an diesem Bereich verlieren. Ich dachte und las einige Tage lang einige Blogs und kam zu einigen Schlussfolgerungen:

  1. Der wichtigste Teil des maschinellen Lernens in der Praxis ist das Feature-Engineering , dh anhand der Daten eine bessere Darstellung der Features.

  2. Welcher Lernalgorithmus verwendet werden soll, ist ebenfalls wichtig, auch die Parametereinstellung, aber bei der endgültigen Auswahl geht es mehr um Experimente.

Ich bin mir nicht sicher, ob ich es richtig verstehe, in der Hoffnung, dass mich jemand korrigieren und mir Vorschläge zum maschinellen Lernen in der Praxis machen kann.

loganecolss
quelle
1
Ich glaube nicht, dass ich Ihre Frage vollständig beantworten könnte, aber ich möchte Ihnen versichern, dass es viele Probleme gibt, bei denen die Algorithmen / Tools neben der schlechten Funktionsqualität unbefriedigend sind (meiner Erfahrung nach sind die Sozialwissenschaften weit verbreitet mit beiden Situationen). Ich denke nicht, dass dies Ihre einzige Sorge ist, aber Sie scheinen sich über die Leichtigkeit Ihrer bisherigen Projekte unwohl zu fühlen.
1
@Matthew, ja, ich habe mich gerade verlaufen, ohne zu wissen, wo ich anfangen soll, wenn ich vor einem echten Problem stehe. Sollte ich die Daten analysieren, um die Natur herauszufinden, damit ich nützliche Funktionen extrahieren oder einfach einen Lernalgorithmus auswählen und ausführen kann?
Avocado
Ich würde nicht in ein Flugzeug
steigen

Antworten:

12

Maschinelles Lernen (ML) in der Praxis hängt davon ab, was das Ziel von ML ist. In einigen Situationen kann eine solide Vorverarbeitung und Anwendung einer Reihe von sofort einsatzbereiten ML-Methoden ausreichend sein. Selbst in diesen Situationen ist es wichtig zu verstehen, wie die Methoden funktionieren, um Fehler beheben zu können. In der Praxis kann ML jedoch viel mehr sein, und MNIST ist ein gutes Beispiel dafür, warum.

Es ist täuschend einfach, eine gute Leistung für den MNIST-Datensatz zu erzielen. Zum Beispiel laut Yann Le Cuns Website zur MNIST-Leistung K nächste Nachbarn (K-NN) mit der euklidischen Abstandsmetrik (L2) ebenfalls eine Fehlerrate von 3% auf, genau wie Ihr Out-of-the-Box-Zufall Wald. L2 K-NN ist ungefähr so ​​einfach wie ein ML-Algorithmus. Auf der anderen Seite hat Yann, Yoshua, Leon & Patricks bester erster Schuss auf diesen Datensatz, LeNet-4, eine Fehlerrate von 0,7%, 0,7% ist weniger als ein Viertel von 3%. Wenn Sie also dieses System einsetzen Üben Sie das Lesen handgeschriebener Ziffern. Der naive Algorithmus erfordert viermal so viel menschlichen Aufwand, um seine Fehler zu beheben.

Das von Yann und Kollegen verwendete Faltungsnetzwerk ist auf die Aufgabe abgestimmt, aber ich würde dies nicht als "Feature-Engineering" bezeichnen, sondern mich bemühen, die Daten zu verstehen und dieses Verständnis in den Lernalgorithmus zu kodieren.

Also, was sind die Lektionen:

  1. Mit einer Out-of-the-Box-Methode und einer guten Vorverarbeitung ist es einfach, die naive Leistungsbasis zu erreichen. Sie sollten dies immer tun, damit Sie wissen, wo sich die Basislinie befindet und ob dieses Leistungsniveau für Ihre Anforderungen gut genug ist oder nicht. Beachten Sie jedoch, dass häufig sofort einsatzbereite ML-Methoden "spröde" sind, dh überraschend empfindlich auf die Vorverarbeitung reagieren. Sobald Sie alle Out-of-the-Box-Methoden trainiert haben, ist es fast immer eine gute Idee, sie einzusacken.
  2. Bei schwierigen Problemen sind entweder domänenspezifisches Wissen oder viel mehr Daten oder beides erforderlich, um sie zu lösen. Feature Engineering bedeutet, domänenspezifisches Wissen zu verwenden, um den ML-Algorithmus zu unterstützen. Wenn Sie jedoch über genügend Daten, einen Algorithmus (oder Ansatz) verfügen, der diese Daten zum Erlernen komplexer Funktionen nutzen kann, und einen Experten, der diesen Algorithmus anwendet, können Sie manchmal auf dieses Wissen verzichten (z. B. die Kaggle Merck-Herausforderung ). Manchmal irren sich Domain-Experten auch darüber, was gute Funktionen sind. Daher ist immer mehr Daten- und ML-Fachwissen hilfreich.
  3. Berücksichtigen Sie die Fehlerrate und nicht die Genauigkeit. Eine ML-Methode mit einer Genauigkeit von 99% macht die Hälfte der Fehler, die eine mit einer Genauigkeit von 98% macht. manchmal ist das wichtig.
qdjm
quelle
2
+1, vielen Dank. Wenn ich beim Lesen Ihrer Antwort keine domänenspezifischen Kenntnisse für das Feature-Engineering habe, sollte ich mich darauf konzentrieren, gute Methoden für das Feature-Lernen unter Verwendung der angegebenen Daten zu erfinden und verschiedene Lernalgorithmen auszuprobieren.
Avocado
@loganecolss Oder Sie können auch lesen, was andere Leute mit ähnlichen Daten gemacht haben, oder mit einem Domain-Experten sprechen.
QDJM
7

Ich denke, dass die Beispiele, die Sie auf Blogs oder Websites finden, Beispiele sind, bei denen bekannt ist, dass die gängigen Methoden gut funktionieren (auch wenn sie natürlich verbessert werden können).

Meine Spezialisierung liegt im Bereich Feature Engineering und ich kann Ihnen sagen, dass die Standardalgorithmen oft überhaupt nicht gut funktionieren. (Ich habe keine Fachkenntnisse, arbeite aber oft mit Leuten, die es haben.)

Hier gibt es ein echtes Problem, bei dem ich 6 Monate lang gearbeitet habe: Bei einer Matrix X mit 100 Proben und 10000 Variablen, die den genetischen Wert von Patienten darstellen, und einer Ausgabe y mit einer Größe von 100 x 1, die die Dichte der Knochen darstellt.

Können Sie mir sagen, welche Gene die Dichte der Knochen beeinflussen?

Jetzt arbeite ich an einem anderen Problem. Ich habe einen Produktionsdatensatz für die Fertigung mit 2000 Mustern und 12000 Variablen. Mein Chef möchte nicht mehr als 30 Variablen unbeaufsichtigt aus diesem Datensatz extrahieren.
Ich habe einige Algorithmen ausprobiert, kann aber nicht weniger als 600 Variablen auswählen, da diese sehr sehr stark miteinander korrelieren. (Ich arbeite noch daran ...)

Ein weiterer wichtiger Aspekt ist die Geschwindigkeitsleistung der verschiedenen Algorithmen. In vielen Situationen können Sie nicht 20 Minuten auf ein Ergebnis warten. Beispielsweise müssen Sie wissen, wann NIPALS und wann SVD zur Berechnung von PCA verwendet werden muss.

Hoffe, dies kann Ihnen eine Vorstellung von den Problemen geben, die in ml häufig sind.

Donbeo
quelle
Vielen Dank für Ihren Rat, anscheinend habe ich mich nicht genähert n<<pProbleme wie diese, interessant.
Avocado