Funktionsauswahl mit Deep Learning?

9

Ich möchte die Wichtigkeit jedes Eingabe-Features mithilfe eines tiefen Modells berechnen.

Ich fand jedoch nur einen Artikel über die Auswahl von Funktionen mithilfe von Deep Learning - die Auswahl von Funktionen . Sie fügen eine Ebene von Knoten ein, die direkt mit jedem Feature verbunden sind, vor der ersten verborgenen Ebene.

Ich habe gehört, dass Deep Believe Network (DBN) auch für diese Art von Arbeit verwendet werden kann. Ich denke jedoch, dass DBN nur Abstraktionen (Cluster) von Features wie PCA bereitstellt. Obwohl es die Dimension effektiv reduzieren kann, frage ich mich, ob es möglich ist, die Wichtigkeit (Gewichtung) jedes Features zu berechnen.

Ist es möglich, die Funktionsbedeutung mit DBN zu berechnen? Und gibt es andere bekannte Methoden zur Merkmalsauswahl mithilfe von Deep Learning?

z991
quelle

Antworten:

10

Ein Ansatz, den Sie für fast jedes Vorhersagemodell verwenden können, besteht darin, zuerst Ihr Modell zu trainieren und seine Genauigkeit zu ermitteln. Fügen Sie dann für eine Eingabe etwas Rauschen hinzu und überprüfen Sie die Genauigkeit erneut. Wiederholen Sie dies für jede Eingabe und beobachten Sie, wie das Rauschen die Vorhersagen verschlechtert. Wenn eine Eingabe wichtig ist, ist die zusätzliche Unsicherheit aufgrund des Rauschens nachteilig.

Denken Sie daran, die Varianz des Rauschens proportional zur Varianz des betreffenden Eingangs einzustellen.

Natürlich ist das Rauschen zufällig und Sie möchten nicht, dass eine Eingabe aufgrund zufälliger Effekte unwichtig erscheint. Wenn Sie nur wenige Trainingsbeispiele haben, sollten Sie die Änderung der Genauigkeit für jedes Trainingsbeispiel wiederholt berechnen, wobei jedes Mal ein neues Rauschen hinzugefügt wird.

Als Antwort auf die Kommentare:

Diese Analyse kann auch durchgeführt werden, indem eine Variable vollständig entfernt wird. Dies hat jedoch einige Nachteile im Vergleich zum Hinzufügen von Rauschen.

  • Angenommen, eine Ihrer Eingaben ist konstant, sie verhält sich wie ein Bias-Term, spielt also eine Rolle bei der Vorhersage, fügt jedoch keine Informationen hinzu. Wenn Sie diese Eingabe vollständig entfernen, wird die Vorhersage weniger genau, da die Perzeptrone die falsche Vorspannung erhalten. Dadurch sieht die Eingabe so aus, als wäre sie für die Vorhersage wichtig, obwohl sie keine Informationen hinzufügt. Das Hinzufügen von Rauschen verursacht dieses Problem nicht. Dieser erste Punkt ist kein Problem, wenn Sie alle Eingaben auf den Mittelwert Null standardisiert haben.

  • Wenn zwei Eingänge korreliert sind, geben die Informationen über einen Eingang Informationen über den anderen. Ein Modell könnte gut trainiert werden, wenn Sie nur eine der korrelierten Eingaben verwenden, sodass die Analyse ergeben soll, dass eine Eingabe nicht hilfreich ist. Wenn Sie nur eine der Eingaben entfernen, verringert sich die Vorhersagegenauigkeit wie beim ersten Punkt erheblich, was darauf hinweist, dass dies wichtig ist. Das Hinzufügen von Rauschen verursacht dieses Problem jedoch nicht.

Hugh
quelle
2
Hugh, ich bin damit vertraut, indem ich die Funktion entferne. Was sind die Vorteile des Ersetzens der Funktion durch Rauschen?
DaL
@Dan Ich wollte nicht, dass die Funktion vollständig durch Rauschen ersetzt wird, sondern dass etwas Rauschen hinzugefügt wird. Durch das Entfernen eines Features können unwichtige Features wichtig erscheinen, wenn sie einen Mittelwert ungleich Null haben oder mit anderen Variablen korreliert sind. Ich habe meine Antwort bearbeitet, um sie zu erklären.
Hugh
Danke für den Kommentar. Tatsächlich habe ich jedoch eine Reihe von Funktionen (Eingaben), von denen viele korreliert sind. In diesem Fall liegt die Rechenzeit möglicherweise nahe bei n! da muss ich die kombinationen berücksichtigen. Daher möchte ich ein Deep-Learning-basiertes Modell anwenden, das komplexe Merkmalskombinationen berücksichtigen kann.
z991
@ z991 Bei multivariabler linearer Regression kann das gleiche Problem bei Variablen auftreten, die nicht perfekt korreliert sind. Oft führen wir jede Variable einzeln ein oder verwenden alle Variablen und entfernen sie einzeln. Es gibt keine Möglichkeit, einfach die beste Kombination zu berechnen. Wenn dies für die lineare Regression nicht gelöst wurde, finden Sie keine Lösung für NNs. Sie könnten den gleichen Ansatz wählen und Variablen einzeln entfernen und das n vermeiden! Berechnung.
Hugh
1
@Huge Danke für den Kommentar. Ich stimme mit Ihnen ein. Aber ich wollte wirklich wissen, wie man die Wichtigkeit jedes Merkmals mit Deep Learning oder einem neuronalen Netzwerk berechnet. Da sie mehrere Feature-Extraktionen (versteckte Ebenen) verwenden, war es für mich schwierig, die Feature-Wichtigkeit zu analysieren. Es ist möglich, das Gesamtgewicht jedes Features zu berechnen, aber es scheint ziemlich komplex und zeitaufwändig zu sein. Das verknüpfte Papier verwendete eine einzelne lineare Schicht, und ich denke, das ist eine gute Idee. Ich wollte andere bessere Methoden zur Analyse der Funktionsbedeutung im Netzwerk kennen.
z991
2

Überprüfen Sie möglicherweise dieses Dokument: https://arxiv.org/pdf/1712.08645.pdf

Sie verwenden Dropout, um Features zu bewerten.

... In dieser Arbeit verwenden wir das Dropout-Konzept auf der Eingabe-Feature-Ebene und optimieren die entsprechende Feature-weise Dropout-Rate. Da jedes Merkmal stochastisch entfernt wird, erzeugt unsere Methode einen ähnlichen Effekt wie das Absacken von Merkmalen (Ho, 1995) und schafft es, korrelierte Merkmale besser einzustufen als andere Nicht-Absack-Methoden wie LASSO. Wir vergleichen unsere Methode mit Random Forest (RF), LASSO, ElasticNet, Marginal Ranking und verschiedenen Techniken, um die Bedeutung von DNN abzuleiten, wie z. B. Deep Feature Selection und verschiedene Heuristiken ...

Florida Man
quelle