5 nützliche Python-Skripte für eine effektive Funktionsauswahl
Bild vom Autor

# Einführung

Als Experte für maschinelles Lernen wissen Sie, dass die Funktionsauswahl eine wichtige, aber zeitaufwändige Arbeit ist. Sie müssen ermitteln, welche Options tatsächlich zur Modellleistung beitragen, redundante Variablen entfernen, Multikollinearität erkennen, verrauschte Options herausfiltern und die optimale Characteristic-Teilmenge finden. Für jede Auswahlmethode testen Sie unterschiedliche Schwellenwerte, vergleichen Ergebnisse und verfolgen, was funktioniert.

Dies wird umso anspruchsvoller, je größer Ihr Characteristic-Bereich wird. Bei Hunderten von technischen Funktionen benötigen Sie systematische Ansätze, um die Bedeutung der Funktionen zu bewerten, Redundanzen zu beseitigen und die beste Teilmenge auszuwählen.

In diesem Artikel werden fünf Python-Skripte behandelt, die zur Automatisierung der effektivsten Techniken zur Funktionsauswahl entwickelt wurden.

Die Skripte finden Sie auf GitHub.

# 1. Filtern konstanter Merkmale mit Varianzschwellenwerten

// Der Schmerzpunkt

Merkmale mit geringer oder keiner Varianz liefern wenig bis gar keine Informationen für die Vorhersage. Ein Merkmal, das über alle Stichproben hinweg konstant oder nahezu konstant ist, kann nicht zur Unterscheidung verschiedener Zielklassen beitragen. Die manuelle Identifizierung dieser Merkmale erfordert die Berechnung der Varianz für jede Spalte, das Festlegen geeigneter Schwellenwerte und die Behandlung von Randfällen wie binären Merkmalen oder Merkmalen mit unterschiedlichen Maßstäben.

// Was das Skript macht

Identifiziert und entfernt Merkmale mit geringer Varianz basierend auf konfigurierbaren Schwellenwerten. Verarbeitet sowohl kontinuierliche als auch binäre Merkmale angemessen, normalisiert Varianzberechnungen für einen fairen Vergleich über verschiedene Skalen hinweg und stellt detaillierte Berichte bereit, aus denen hervorgeht, welche Merkmale entfernt wurden und warum.

// Wie es funktioniert

Das Skript berechnet die Varianz für jedes Characteristic und wendet dabei je nach Characteristic-Typ unterschiedliche Strategien an.

  • Für kontinuierliche Options berechnet es die Standardvarianz und kann elective anhand des Characteristic-Bereichs normalisieren, um Schwellenwerte vergleichbar zu machen
  • Für binäre Merkmale wird der Anteil der Minderheitsklasse berechnet, da die Varianz bei binären Merkmalen mit dem Klassenungleichgewicht zusammenhängt.

Options, die unter den Schwellenwert fallen, werden zur Entfernung markiert. Aus Gründen der Transparenz verwaltet das Skript eine Zuordnung der entfernten Options und ihrer Varianzwerte.

Rufen Sie das auf Varianzschwellenwerten basierende Characteristic-Auswahlskript ab

# 2. Eliminierung redundanter Funktionen durch Korrelationsanalyse

// Der Schmerzpunkt

Stark korrelierte Merkmale sind redundant und können in linearen Modellen zu Multikollinearitätsproblemen führen. Wenn zwei Merkmale eine hohe Korrelation aufweisen, behalten Sie beide bei fügt Dimensionalität hinzu, ohne Informationen hinzuzufügen. Bei Hunderten von Merkmalen ist jedoch eine systematische Analyse erforderlich, um alle korrelierten Paare zu identifizieren, zu entscheiden, welche beibehalten werden sollen, und sicherzustellen, dass Sie die Merkmale beibehalten, die am stärksten mit dem Ziel korrelieren.

// Was das Skript macht

Identifiziert stark korrelierte Merkmalspaare mithilfe von Pearson-Korrelation für numerische Merkmale und Cramérs V für kategoriale Merkmale. Wählt für jedes korrelierte Paar automatisch aus, welches Merkmal beibehalten werden soll, basierend auf der Korrelation mit der Zielvariablen. Entfernt redundante Funktionen und maximiert gleichzeitig die Vorhersagekraft. Erstellt Korrelations-Heatmaps und detaillierte Berichte über entfernte Options.

// Wie es funktioniert

Das Skript berechnet die Korrelationsmatrix für alle Options. Für jedes Paar, das den Korrelationsschwellenwert überschreitet, wird die Korrelation beider Merkmale mit der Zielvariablen verglichen. Das Characteristic mit der geringeren Zielkorrelation wird zum Entfernen markiert. Dieser Prozess wird iterativ fortgesetzt, um Ketten korrelierter Merkmale zu verarbeiten. Das Skript verarbeitet fehlende Werte und gemischte Datentypen und stellt Visualisierungen bereit, die Korrelationscluster und die Auswahlentscheidung für jedes Paar zeigen.

Holen Sie sich das korrelationsbasierte Funktionsauswahlskript

# 3. Identifizieren signifikanter Merkmale mithilfe statistischer Checks

// Der Schmerzpunkt

Nicht alle Merkmale haben eine statistisch signifikante Beziehung zur Zielvariablen. Merkmale, die keinen sinnvollen Zusammenhang mit dem Ziel aufweisen, verursachen zusätzliches Rauschen und erhöhen häufig das Risiko einer Überanpassung. Das Testen jeder Funktion erfordert die Auswahl geeigneter statistischer Checks, die Berechnung von p-Werten, die Korrektur mehrerer Checks und die korrekte Interpretation der Ergebnisse.

// Was das Skript macht

Das Skript wählt automatisch den geeigneten statistischen Take a look at basierend auf den Typen der Funktion und der Zielvariablen aus und wendet ihn an. Es verwendet einen F-Take a look at der Varianzanalyse (ANOVA) für numerische Merkmale gepaart mit einem Klassifizierungsziel, einen Chi-Quadrat-Take a look at für kategoriale Merkmale, gegenseitige Informationsbewertung zur Erfassung nichtlinearer Beziehungen und einen Regressions-F-Take a look at, wenn das Ziel kontinuierlich ist. Es gilt dann entweder Bonferroni oder Falscherkennungsrate (FDR) Korrektur, um mehrere Checks zu berücksichtigen, und gibt alle nach statistischer Signifikanz geordneten Merkmale zusammen mit ihren p-Werten und Teststatistiken zurück.

// Wie es funktioniert

Das Skript bestimmt zunächst den Characteristic-Typ und den Zieltyp und leitet dann jedes Characteristic an den richtigen Take a look at weiter. Bei Klassifizierungsaufgaben mit numerischen Merkmalen testet ANOVA, ob sich der Mittelwert des Merkmals zwischen den Zielklassen erheblich unterscheidet. Bei kategorialen Merkmalen prüft ein Chi-Quadrat-Take a look at die statistische Unabhängigkeit zwischen dem Merkmal und dem Ziel. Daneben werden gegenseitige Informationswerte berechnet, um alle nichtlinearen Beziehungen aufzudecken, die bei Standardtests möglicherweise übersehen werden. Wenn das Ziel kontinuierlich ist, wird stattdessen ein Regressions-F-Take a look at verwendet.

Sobald alle Checks ausgeführt wurden, werden die p-Werte entweder mithilfe einer Bonferroni-Korrektur – bei der jeder p-Wert mit der Gesamtzahl der Options multipliziert wird – oder einer Methode der falschen Entdeckungsrate für eine weniger konservative Korrektur angepasst. Merkmale mit angepassten p-Werten unterhalb des standardmäßigen Signifikanzschwellenwerts von 0,05 werden als statistisch signifikant gekennzeichnet und für die Einbeziehung priorisiert.

Holen Sie sich das auf statistischen Checks basierende Funktionsauswahlskript

Wenn Sie an einem strengeren statistischen Ansatz zur Funktionsauswahl interessiert sind, empfehle ich Ihnen, dieses Skript wie unten beschrieben weiter zu verbessern.

// Was Sie auch erkunden und verbessern können

Verwenden Sie nichtparametrische Alternativen, wenn Annahmen scheitern. ANOVA geht von ungefährer Normalität und gleichen Varianzen zwischen den Gruppen aus. Bei stark verzerrten oder nicht normalen Options wechseln Sie zu a Kruskal-Wallis-Take a look at ist eine robustere Wahl, die keine Verteilungsannahmen trifft.

Gehen Sie vorsichtig mit spärlichen kategorialen Merkmalen um. Chi-Quadrat erfordert, dass die erwarteten Zellhäufigkeiten mindestens 5 betragen. Wenn diese Bedingung nicht erfüllt ist – was bei Kategorien mit hoher Kardinalität oder seltenen Häufigkeiten häufig vorkommt – Fishers genauer Take a look at ist eine sicherere und genauere Various.

Behandeln Sie gegenseitige Informationswerte getrennt von p-Werten. Da Mutual-Data-Scores keine p-Werte sind, passen sie nicht auf natürliche Weise in das Bonferroni- oder FDR-Korrektursystem. Ein saubererer Ansatz besteht darin, Merkmale unabhängig voneinander nach gegenseitiger Informationsbewertung zu ordnen und sie als ergänzendes Sign zu verwenden, anstatt sie in derselben Signifikanzpipeline zusammenzuführen.

Bevorzugen Sie die Korrektur der False Discovery Charge in hochdimensionalen Einstellungen. Bonferroni ist von Natur aus konservativ, was sinnvoll ist, wenn Fehlalarme sehr kostspielig sind, aber es kann wirklich nützliche Funktionen verwerfen, wenn Sie viele davon haben. Benjamini-Hochberg FDR-Korrektur Bietet mehr statistische Aussagekraft in großen Datensätzen und wird im Allgemeinen in Arbeitsabläufen zur Auswahl von Funktionen für maschinelles Lernen bevorzugt.

Berücksichtigen Sie neben den p-Werten auch die Effektgröße. Die statistische Signifikanz allein sagt nichts über die praktische Bedeutung einer Funktion aus. Durch die Kombination von p-Werten mit Effektgrößenmaßen erhält man ein vollständigeres Bild davon, welche Merkmale es wert sind, beibehalten zu werden.

Fügen Sie einen permutationsbasierten Signifikanztest hinzu. Für komplexe oder gemischte Datensätze bietet Permutationstest eine modellunabhängige Möglichkeit, die Signifikanz zu bewerten, ohne sich auf Verteilungsannahmen zu verlassen. Es funktioniert, indem die Zielvariable wiederholt gemischt wird und überprüft wird, wie oft ein Characteristic auch allein durch Zufall punktet.

# 4. Rating von Funktionen mit modellbasierten Wichtigkeitswerten

// Der Schmerzpunkt

Die modellbasierte Merkmalswichtigkeit bietet direkte Einblicke in die Merkmale, die zur Vorhersagegenauigkeit beitragen. Allerdings ergeben unterschiedliche Modelle unterschiedliche Wichtigkeitswerte. Das Ausführen mehrerer Modelle, das Extrahieren von Wichtigkeitswerten und das Kombinieren der Ergebnisse zu einem kohärenten Rating ist komplex.

// Was das Skript macht

Trainiert mehrere Modelltypen und extrahiert die Funktionsbedeutung von jedem. Normalisiert die Wichtigkeitswerte aller Modelle für einen fairen Vergleich. Berechnet die Ensemble-Wichtigkeit durch Mittelung oder Rangfolge über Modelle hinweg. Bietet Permutationsbedeutung als modellunabhängige Various. Gibt bewertete Options mit Wichtigkeitswerten für jedes Modell und empfohlene Characteristic-Teilmengen zurück.

// Wie es funktioniert

Das Skript trainiert jeden Modelltyp mit dem gesamten Funktionsumfang und extrahiert native Wichtigkeitswerte wie baumbasierte Wichtigkeit für Wälder und Koeffizienten für lineare Modelle. Um die Wichtigkeit der Permutation zu ermitteln, werden die einzelnen Merkmale zufällig gemischt und die Abnahme der Modellleistung gemessen. Die Wichtigkeitswerte werden in jedem Modell so normalisiert, dass sie in der Summe 1 ergeben.

Der Ensemble-Rating wird als mittlerer Rang oder mittlere normalisierte Wichtigkeit über alle Modelle hinweg berechnet. Options werden nach Ensemble-Wichtigkeit sortiert und die Prime-N-Options oder diejenigen, die einen Wichtigkeitsschwellenwert überschreiten, werden ausgewählt.

Holen Sie sich das modellbasierte Auswahlskript

# 5. Optimierung von Funktionsteilmengen durch rekursive Eliminierung

// Der Schmerzpunkt

Die optimale Funktionsteilmenge besteht nicht immer aus den wichtigsten N-Funktionen einzeln; Auch Funktionsinteraktionen sind wichtig. Eine Funktion magazine einzeln schwach erscheinen, in Kombination mit anderen jedoch wertvoll sein. Rekursive Merkmalseliminierungstests weisen Teilmengen auf, indem die schwächsten Merkmale iterativ entfernt und Modelle neu trainiert werden. Dies erfordert jedoch die Durchführung Hunderter Modelltrainingsiterationen und die Verfolgung der Leistung über verschiedene Teilmengengrößen hinweg.

// Was das Skript macht

Entfernt systematisch Funktionen in einem iterativen Prozess, trainiert Modelle neu und bewertet die Leistung bei jedem Schritt. Beginnt mit allen Options und entfernt in jeder Iteration das unwichtigste Characteristic. Verfolgt die Modellleistung über alle Teilmengengrößen hinweg. Identifiziert die optimale Funktionsteilmenge, die die Leistung maximiert oder die Zielleistung mit minimalen Funktionen erreicht. Unterstützt Kreuzvalidierung für robuste Leistungsschätzungen.

// Wie es funktioniert

Das Skript beginnt mit dem vollständigen Funktionsumfang und trainiert ein Modell. Es ordnet Options nach Wichtigkeit und entfernt das Characteristic mit dem niedrigsten Rang. Dieser Vorgang wiederholt sich und trainiert in jeder Iteration ein neues Modell mit dem reduzierten Funktionsumfang. Leistungsmetriken wie Genauigkeit, F1 und AUC werden für jede Teilmengengröße aufgezeichnet.

Das Skript wendet eine Kreuzvalidierung an, um bei jedem Schritt stabile Leistungsschätzungen zu erhalten. Die endgültige Ausgabe umfasst Leistungskurven, die zeigen, wie sich Metriken mit der Characteristic-Anzahl und der optimalen Characteristic-Teilmenge ändern. Das heißt, Sie sehen entweder eine optimale Leistung oder einen Punkt, an dem das Hinzufügen von Funktionen zu sinkenden Erträgen führt.

Holen Sie sich das Skript zur Eliminierung rekursiver Options

# Zusammenfassung

Diese fünf Skripte befassen sich mit den zentralen Herausforderungen der Funktionsauswahl, die die Modellleistung und Trainingseffizienz bestimmen. Hier ein kurzer Überblick:

Skript Beschreibung
Auswahl des Varianzschwellenwerts

Entfernt nicht informative konstante oder nahezu konstante Options.

Korrelationsbasierter Selektor

Eliminiert redundante Funktionen und bewahrt gleichzeitig die Vorhersagekraft.

Statistischer Testselektor

Identifiziert Options mit signifikanten Beziehungen zum Ziel.

Modellbasierter Selektor

Ordnet Options anhand der Ensemble-Wichtigkeit aus mehreren Modellen eine Rangfolge zu.

Eliminierung rekursiver Merkmale

Findet optimale Funktionsteilmengen durch iteratives Testen.

Jedes Skript kann unabhängig für bestimmte Auswahlaufgaben verwendet oder zu einer vollständigen Pipeline kombiniert werden. Viel Spaß bei der Funktionsauswahl!

Bala Priya C ist ein Entwickler und technischer Redakteur aus Indien. Sie arbeitet gerne an der Schnittstelle von Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Zu ihren Interessen- und Fachgebieten gehören DevOps, Datenwissenschaft und Verarbeitung natürlicher Sprache. Sie liebt es zu lesen, zu schreiben, zu programmieren und Kaffee zu trinken! Derzeit arbeitet sie daran, zu lernen und ihr Wissen mit der Entwickler-Group zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt außerdem ansprechende Ressourcenübersichten und Programmier-Tutorials.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert