Welches zuerst: Algorithmus-Benchmarking, Funktionsauswahl, Parameteroptimierung?

11

Wenn ich versuche, zB eine Klassifizierung vorzunehmen, gehe ich derzeit zu

  1. Probieren Sie zuerst verschiedene Algorithmen aus und vergleichen Sie sie
  2. Führen Sie die Merkmalsauswahl für den besten Algorithmus aus 1 oben durch
  3. Passen Sie die Parameter mithilfe der ausgewählten Funktionen und Algorithmen an

Ich kann mich jedoch oft nicht davon überzeugen, dass es möglicherweise einen besseren Algorithmus als den ausgewählten gibt, wenn die anderen Algorithmen mit den besten Parametern / am besten geeigneten Merkmalen optimiert wurden. Gleichzeitig ist das Durchsuchen aller Algorithmen * Parameter * -Funktionen einfach zu zeitaufwändig.

Irgendwelche Vorschläge zum richtigen Ansatz / zur richtigen Reihenfolge?

Ricky
quelle

Antworten:

8

Ich nehme an, Sie meinen Feature-Auswahl als Feature-Engineering . Der Prozess, dem ich normalerweise folge und den ich bei einigen Leuten sehe, ist

  1. Feature Engineering
  2. Probieren Sie einige Algorithmen aus, normalerweise leistungsstarke wie RandomForest, Gradient Boosted Trees, Neutral Networks oder SVM.

    2.1 Führen Sie eine einfache Parametereinstellung durch, z. B. eine Rastersuche für einen kleinen Bereich von Parametern

Wenn das Ergebnis von Schritt 2 nicht zufriedenstellend ist, kehren Sie zu Schritt 1 zurück, um weitere Funktionen zu generieren, oder entfernen Sie redundante Funktionen und behalten Sie die besten bei. Diese Funktion wird normalerweise als Funktionsauswahl bezeichnet . Wenn Ihnen die Ideen für neue Funktionen ausgehen, probieren Sie weitere Algorithmen aus.

Wenn das Ergebnis in Ordnung ist oder nahe an dem liegt, was Sie möchten, fahren Sie mit Schritt 3 fort

  1. Umfangreiche Parametereinstellung

Der Grund dafür ist, dass es bei der Klassifizierung ausschließlich um Feature-Engineering geht , und es sei denn, Sie kennen einen unglaublich leistungsstarken Klassifizierer wie Deep Learning, der auf ein bestimmtes Problem zugeschnitten ist, wie z. B. Computer Vision. Gute Funktionen zu generieren ist der Schlüssel. Die Auswahl eines Klassifikators ist wichtig, aber nicht entscheidend. Alle oben genannten Klassifikatoren sind hinsichtlich der Leistung ziemlich vergleichbar, und meistens stellt sich heraus, dass der beste Klassifikator einer von ihnen ist.

Die Parametereinstellung kann die Leistung in einigen Fällen erheblich steigern. Aber ohne gute Funktionen hilft das Tuning nicht viel. Denken Sie daran, dass Sie immer Zeit für die Parametereinstellung haben. Es macht auch keinen Sinn, Parameter ausgiebig zu optimieren, dann entdecken Sie eine neue Funktion und wiederholen das Ganze.

Tu N.
quelle
2

Hey, ich habe gerade deine Frage gesehen. Es ist VOLLSTÄNDIG FALSCH, zuerst die Funktionsauswahl vorzunehmen und dann das Modell mithilfe der Kreuzvalidierung zu optimieren. In Elementen des statistischen Lernens und in diesem Blog-Beitrag wird klar erwähnt, dass: CV-Methoden nur dann unvoreingenommen sind, wenn Ihre gesamte Modellbildung innerhalb der CV-Schleife erfolgt. Wählen Sie also die Funktionen in der CV-Schleife aus, um die Parameter abzustimmen. Dies kann einfach mit dem Filter Wrapper im MLR-Paket in R erfolgen.

Dhruv Mahajan
quelle
1

Eine ähnliche Frage habe ich hier bereits beantwortet . Der Prozess wäre:

  • Transformation und Reduktion: Umfasst Prozesse wie Transformationen, mittlere und mittlere Skalierung usw.
  • Funktionsauswahl: Dies kann auf viele Arten erfolgen, z. B. durch Schwellenwertauswahl, Teilmengenauswahl usw.
  • Entwerfen eines Vorhersagemodells: Entwerfen Sie das Vorhersagemodell anhand der Trainingsdaten in Abhängigkeit von den verfügbaren Funktionen.
  • Kreuzvalidierung und Parameteroptimierung:
  • Endgültige Vorhersage, Validierung

Versuchen Sie immer, vor der Modellauswahl ein Feature-Engineering durchzuführen. Wählen Sie dann das Modell anhand der besten Merkmale aus (oder anhand der Merkmale, die das Problem / die abhängige Variable tendenziell besser beeinflussen).

Dawny33
quelle
0

Wenn Sie bereit sind, Zeit mit dem Erlernen der Funktionsweise eines neuen Tools zu verbringen, können Sie Autosklearn ausprobieren. Es erledigt alles, was zum Aufbau einer ML-Pipeline für Sie erforderlich ist. Vorverarbeitung, Auswahl, Erstellung von Modellensembles und Optimierung durch Kreuzvalidierung. Abhängig von Ihrer Datenmenge kann dies ein schnellerer Weg zu einer guten Vorhersage sein oder auch nicht. Aber es ist sicherlich vielversprechend.

Diego
quelle