Wie kann man die Leistung von Feature-Auswahlmethoden vergleichen?

10

Es gibt verschiedene Ansätze zur Merkmalsauswahl / Variablenauswahl (siehe zum Beispiel Guyon & Elisseeff, 2003 ; Liu et al., 2010 ):

  • Filtermethoden (z. B. korrelationsbasiert, entropiebasiert, zufällige Waldbedeutung basierend),
  • Wrapper-Methoden (z. B. Vorwärtssuche, Bergsteigensuche) und
  • eingebettete Methoden, bei denen die Merkmalsauswahl Teil des Modelllernens ist.

Viele veröffentlichte Algorithmen sind auch in maschinellen Lernwerkzeugen wie R, Python usw. implementiert.

Was wäre eine geeignete Methode, um verschiedene Algorithmen zur Merkmalsauswahl zu vergleichen und die beste Methode für ein bestimmtes Problem / einen bestimmten Datensatz auszuwählen? Eine weitere Frage wäre, ob Metriken bekannt sind, die die Leistung von Merkmalsauswahlalgorithmen messen.

hopfk
quelle

Antworten:

4

Dies ist ein schwieriges Problem, und die Forscher machen große Fortschritte.

Wenn Sie nach einer überwachten Funktionsauswahl suchen , würde ich LASSO und seine Varianten empfehlen . Die Bewertung des Algorithmus ist beim überwachten Lernen sehr einfach: die Leistung der Metrik, die Sie für die Testdaten auswählen.

Zwei wichtige Vorbehalte von LASSO sind, dass (1) die ausgewählten Features eine Interaktion nicht automatisch erkennen, sodass Sie alle Ihre Features a priori erstellen müssen (dh bevor Sie sie durch das Modell laufen lassen) und (2) LASSO keine nicht identifiziert -lineare Beziehungen (z. B. eine quadratische Beziehung ).

Eine Möglichkeit, diese beiden Einschränkungen zu überwinden, besteht darin, Gradient Boosted Machines zu verwenden, die die Funktionsauswahl automatisch durchführen. Es ist erwähnenswert, dass die statistischen Eigenschaften von GBM etwas mehrdeutiger sind als die von LASSO.

Wenn Sie nach einer unbeaufsichtigten Funktionsauswahl suchen, scheint es, dass diese Forscher einen ähnlichen Regularisierungsansatz verwenden , aber die Bewertung in diesem speziellen Fall wird weniger offensichtlich. Menschen probieren viele verschiedene Dinge wie PCA / SVD oder K-Means aus, die letztendlich versuchen, eine lineare Annäherung an die Daten zu finden.

In diesem Fall sind die typischen Leistungsmaßstäbe der Rekonstruktionsfehler oder der RMSE der Cluster.

In Bezug auf Software haben R und Python beide GBM, LASSO, K-Means, SVD und PCA. GLMNET und XGBoost in R und Sklearn für Python sind die relevanten Bibliotheken.

franciscojavierarceo
quelle
1

Ich betrachte die Auswahl von Features immer als einen Schritt zum Endergebnis.

Im Folgenden mische ich irgendwie die Auswahl von Features und die Reduzierung der Dimensionalität, was einige Ziele haben und verwirrt werden kann.

Einige typische Anwendungen:

  • Reduzierung der Berechnungen beim maschinellen Lernen: Die Qualität der Auswahl ist ein Faktor für das endgültige Lernergebnis und natürlich auch für die Geschwindigkeit, mit der das Lernen durchgeführt wird

  • Visualisierung / Verständnis der Daten, wobei Sie eventuell mehrere Dimensionen kombinieren. Es ist gut, wenn es keine interessanten Dinge verbirgt und wenn das verständlich ist

  • Vereinfachung der Lernergebnisse, um sie dennoch verständlich zu machen (z. B. Ursachenanalyse). Gut, wenn auch einfach, aber dennoch qualitativ ausreichend

  • Kontrolle über die Anpassung, wie aus der vorherigen Antwort hervorgeht

  • ...

Ich glaube also nicht, dass es allgemeine Regeln gibt (wie immer in ML), aber dies ist ein Problem von Fall zu Fall.

Nur ein persönlicher Glaube ...

Michael Hooreman
quelle
0

Dies hängt stark von der spezifischen Situation und dem Problem ab, das Sie lösen möchten. Es gibt einige allgemeine Regeln, zum Beispiel sind Wrapper-Methoden flexibler und auch anfälliger für Überanpassungen.

Die Leistung der Merkmalsauswahl kann anhand der Gesamtleistung der Lernaufgabe bewertet werden. Beispielsweise kann man Merkmale mit verschiedenen Methoden auswählen und dann diese verschiedenen Merkmalssätze zur Klassifizierung verwenden und die Genauigkeit der erhaltenen Klassifizierer vergleichen.

Ein weiterer wichtiger Faktor in einigen Szenarien wie einigen biologischen Anwendungen ist die Interpretierbarkeit ausgewählter Merkmale, und die Ergebnisse, beispielsweise bei einem Clustering-Problem, die Bedeutung ausgewählter Merkmale und der daraus resultierenden Cluster ist ein sehr wichtiges Maß für die Leistung.

Löwenzahn
quelle
0

Sie müssten eine Reihe künstlicher Tests durchführen und versuchen, relevante Merkmale mit verschiedenen Methoden zu erkennen, während Sie im Voraus wissen, welche Teilmengen von Eingabevariablen die Ausgabevariable beeinflussen.

Ein guter Trick wäre, eine Reihe von zufälligen Eingabevariablen mit unterschiedlichen Verteilungen beizubehalten und sicherzustellen, dass Ihre Funktionsauswahlalgen sie tatsächlich als nicht relevant kennzeichnen.

Ein weiterer Trick wäre, sicherzustellen, dass die als relevant gekennzeichneten Variablen nach dem Permutieren von Zeilen nicht mehr als relevant klassifiziert werden.

Das oben Gesagte gilt sowohl für Filter- als auch für Wrapper-Ansätze.

Behandeln Sie auch Fälle, in denen Variablen, wenn sie einzeln (einzeln) genommen werden, keinen Einfluss auf das Ziel haben, aber wenn sie gemeinsam genommen werden, eine starke Abhängigkeit aufzeigen. Beispiel wäre ein bekanntes XOR-Problem (siehe Python-Code):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression,mutual_info_classif

x=np.random.randn(5000,3)
y=np.where(np.logical_xor(x[:,0]>0,x[:,1]>0),1,0)

plt.scatter(x[y==1,0],x[y==1,1],c='r',marker='x')
plt.scatter(x[y==0,0],x[y==0,1],c='b',marker='o')
plt.show()
print(mutual_info_classif(x, y)) 

Ausgabe:

Python 3 XOR-Abbildung

[0. 0. 0.00429746]

Eine vermutlich leistungsstarke (aber univariate) Filtermethode (Berechnung der gegenseitigen Information zwischen Ausgangs- und Eingabevariablen) konnte daher keine Beziehungen im Datensatz erkennen. Während wir sicher wissen, dass es sich um eine 100% ige Abhängigkeit handelt und wir Y mit 100% iger Genauigkeit vorhersagen können, wenn wir X kennen.

Eine gute Idee wäre, eine Art Benchmark für Methoden zur Auswahl von Features zu erstellen. Möchte jemand teilnehmen?

Anatoly Alekseev
quelle