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:
Der wichtigste Teil des maschinellen Lernens in der Praxis ist das Feature-Engineering , dh anhand der Daten eine bessere Darstellung der Features.
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.
quelle
Antworten:
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:
quelle
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.
quelle