30

Haben Sie Ratschläge oder lesen Sie, wie Sie Funktionen für eine maschinelle Lernaufgabe entwickeln können? Gute Eingabemerkmale sind auch für ein neuronales Netzwerk wichtig. Die gewählten Merkmale beeinflussen die benötigte Anzahl von versteckten Neuronen und die benötigte Anzahl von Trainingsbeispielen.So können Sie Funktionen für das maschinelle Lernen entwickeln

Das folgende ist ein Beispielproblem, aber ich interessiere mich für Feature Engineering im Allgemeinen.

Motivations Beispiel: Was wäre ein guter eingegeben werden, wenn sie bei einem Puzzle (z.B. 15-puzzle oder Sokoban) suchen? Wäre es möglich zu erkennen, welcher von zwei Staaten näher am Ziel ist?

Antwort

46

Gutes Feature-Engineering umfasst zwei Komponenten. Die erste besteht darin, die Eigenschaften der Aufgabe zu verstehen, die Sie zu lösen versuchen, und wie sie mit den Stärken und Einschränkungen des von Ihnen verwendeten Klassifizierers interagieren können. Die zweite ist experimentelle Arbeit, bei der Sie Ihre Erwartungen testen und herausfinden, was tatsächlich funktioniert und was nicht.

Dies kann iterativ durchgeführt werden: Ihr von oben nach unten Verständnis des Problems Experimente motiviert, und dann die unten nach oben Informationen, die Sie für diese Experimente lernen helfen Sie ein besseres Verständnis des Problems zu erhalten. Das tiefere Verständnis des Problems kann dann mehr Experimente antreiben.

Fitting Funktionen Ihren Classifier

Angenommen, Sie haben einen einfachen linearen Klassifikator wie logistic-regression verwenden oder eine SVM mit einem linearen Kern. Wenn Sie der Meinung sind, dass es interessante Interaktionen zwischen verschiedenen Attributen gibt, die Sie messen und als Eingabe für den Klassifikator bereitstellen können, müssen Sie manuell Funktionen erstellen und bereitstellen, die diese Interaktionen erfassen. Wenn Sie jedoch eine SVM mit einem Polynom- oder Gauß-Kernel verwenden, werden Interaktionen zwischen den Eingabevariablen bereits von der Struktur des Modells erfasst.

Ebenso können SVMs schlecht funktionieren, wenn einige Eingabevariablen einen viel größeren Wertebereich annehmen als andere (z. B. die meisten Features haben den Wert 0 oder 1, aber ein Feature nimmt Werte zwischen -1000 und 1000 an) . Wenn Sie also Feature-Engineering für eine SVM durchführen, sollten Sie versuchen, die Werte Ihrer Features zu normalisieren, bevor Sie sie dem Klassifikator bereitstellen. Wenn Sie jedoch decision trees oder verwenden, ist eine solche Normalisierung nicht erforderlich, da diese Klassifikatoren robust gegenüber Unterschieden in der Größe zwischen den Werten sind, die verschiedene Funktionen annehmen.

Hinweise Insbesondere im Hinblick auf das Lösen von Rätseln

Wenn Sie bei der Lösung eines Problems mit einem komplexen Zustandsraum suchen, möchten Sie vielleicht wie Q-learning einen reinforcement learning Ansatz verwenden. Dies hilft Lernaufgaben zu strukturieren, die das Erreichen eines Ziels durch eine Reihe von Zwischenschritten durch das System beinhalten.

+0

Ist die Erkennung von Interaktionen zwischen Attributen in einem Buch erwähnt? Wie erkennt man, dass bei der Eingabe etwas fehlt? –

+0

Interaktionen sollten in den meisten Statistik-Lehrbüchern erwähnt werden. Aber es gibt einen guten Überblick auf Wikipedia: http://en.wikipedia.org/wiki/Interaction_%28statistics%29. – dmcer

+6

Was Sachen betrifft, die bei der Eingabe fehlen, nehme ich an, du meinst "wie weiß ich, ob ich genug von den richtigen Funktionen habe".Wenn Sie die Regularisierung für Ihren Klassifikator herunterfahren und die Leistung auf den Trainingsdaten immer noch schlecht ist, sollten Sie wahrscheinlich versuchen, weitere Funktionen zu entwickeln. Wenn jedoch die Leistung Ihres Trainingsgeräts gut ist, aber die Leistung Ihres Testgeräts schlecht ist, überholen Sie das Trainingset, und Sie möchten einige Funktionen entfernen und/oder die Regularisierung aufdrehen. – dmcer