Berücksichtigt die Boruta-Merkmalsauswahl (in R) die Korrelation zwischen Variablen?


8

Ich bin ein Anfänger in der R- und Feature-Auswahl und habe versucht, mit dem Boruta-Paket meine Anzahl von Variablen auszuwählen (zu verringern) (n = 40). Ich dachte, dass diese Methode auch die mögliche Korrelation zwischen Variablen berücksichtigt, jedoch sind zwei (von den 20 ausgewählten Variablen) stark korreliert und zwei andere sind vollständig korreliert. Ist das normal? Sollte die Boruta-Methode nicht eine der beiden als unwichtig eingestuft haben?

Antworten:


10

... sind zwei (von den 20 ausgewählten Variablen) stark korreliert und zwei andere sind vollständig korreliert. Ist das normal? Sollte die Boruta-Methode nicht eine der beiden als unwichtig eingestuft haben?

Ja, das ist normal. Boruta neigt dazu, alle Merkmale zu finden, die für die Antwortvariable relevant sind . Streng genommen gilt eine Prädiktorvariable als relevant für wenn und bei einigen anderen Prädiktorvariablen nicht bedingt unabhängig sind (oder wenn nichts gegeben ist, was einfach bedeuten würde, dass und nicht unabhängig sind).x i y x i y x i yyxiyxiyxiy

Betrachten Sie dieses einfache Beispiel:

set.seed(666)
n <- 100
x1 <- rnorm(n)
x2 <- x1 + rnorm(n,sd=0.5)
x3 <- rnorm(n)
y <- x2 + rnorm(n) 

Sie sehen, dass , dann ist für relevant , weil und nicht unabhängig sind. Sie sehen auch, dass und dann nicht unabhängig von . Die einzige Variable, die für nicht relevant ist, ist , weil:x 2 y y x 2 x 2 = x 1 + Rauschen y x 2 y x 3y=x2+noisex2yyx2x2=x1+noiseyx2yx3

  • x 3y und sind unabhängigx3
  • x 3 x 1y und sind bei bedingt unabhängigx3x1
  • x 3 ( x 1 , x 2 )y und sind bedingt unabhängig gegebenx3(x1,x2)

Dann findet Boruta das erwartete Ergebnis:

> library(Boruta)
> Boruta(data.frame(x1,x2,x3), y)
Boruta performed 30 iterations in 2.395286 secs.
 2 attributes confirmed important: x1, x2.
 1 attributes confirmed unimportant: x3.

Es gibt eine hohe Korrelation zwischen und , aber Boruta macht das nichts aus:x 2x1x2

> cor(x1,x2)
[1] 0.896883

7

Es liegt in der Natur des Algorithmus. Nehmen wir an, wir haben zwei bedeutungsvolle Merkmale und , die stark korreliert sind.X 2X1X2

Aus dem Artikel http://arxiv.org/abs/1106.5112 (Die Auswahl aller relevanten Merkmale unter Verwendung von Random Forest, Miron B. Kursa, Witold R. Rudnicki) können wir eine kurze Beschreibung des Boruta-Algorithmus entnehmen:

"Um dieses Problem zu lösen, haben wir einen Algorithmus entwickelt, der Kriterien für die Auswahl wichtiger Attribute bereitstellt. Der Algorithmus basiert auf dem Geist des zufälligen Waldes - wir bewältigen Probleme, indem wir dem System mehr Zufälligkeit hinzufügen. Die wesentliche Idee ist sehr einfach: wir Erstellen Sie eine zufällige Kopie des Systems, führen Sie die Kopie mit dem Original zusammen und erstellen Sie den Klassifikator für dieses erweiterte System. Um die Wichtigkeit der Variablen im ursprünglichen System zu bewerten, vergleichen wir sie mit der der randomisierten Variablen. Nur Variablen, für die die Wichtigkeit höher ist als die der randomisierten Variablen werden als wichtig angesehen. "

Im Wesentlichen trainiert der Boruta-Algorithmus eine zufällige Gesamtstruktur anhand der ursprünglichen und zufälligen Merkmale. Diese zufällige Gesamtstruktur während des Trainings sieht wie jede zufällige Gesamtstruktur nur eine Teilmenge aller Funktionen an jedem Knoten. Daher hat es manchmal keine Wahl zwischen und wenn die Variable für den aktuellen Knoten ausgewählt wird, und es kann keine der beiden Variablen und der anderen vorziehen .X 2 X 1 X 2X1X2X1X2

Dies ist der Grund, warum Boruta eine der Variablen und als unwichtig einstufen kann . Man müsste den zugrunde liegenden Random Forest-Algorithmus modifizieren, um immer und mit ihren zufälligen Schattenvariablen und an jedem Knoten zu sehen. Dann könnte die zufällige Gesamtstruktur beispielsweise häufig die Variablen und auswählen, was dazu führen würde, dass Boruta die Variable auswählt und ablehnt . (Hier wird abgelehnt, weil eine höhere Bedeutung als )X 2 X 1 X 2 X 1 X 2 X 1 X 2 X 1 X 2 X 2 X 2 X 2X1X2X1X2X^1X^2X1X^2X1X2X2X^2X2


Wie

Wenn Sie mit Python / pandas.DataFrames vertraut sind, finden Sie hier eine Lösung: stackoverflow.com/questions/15772009/…
MaxBenChrist

3

Ja, das ist normal. Der Boruta-Algorithmus gibt Attribute aus, die für den Klassifizierer keinen Wert haben, und lässt die 'allrelevante' Menge von Attributen übrig, die durchaus korrelierte enthalten können. Vergleichen Sie dies mit dem 'minimal-optimalen' Satz (der keine Korrelation enthalten sollte).

Warum sollte man diese Methode dann für die Merkmalsauswahl verwenden? Sie können dieses Zitat aus dem Originalpapier nützlich finden:

Das Finden aller relevanten Attribute anstelle nur der nicht redundanten kann an sich sehr nützlich sein. Dies ist insbesondere dann erforderlich, wenn man Mechanismen verstehen möchte, die sich auf das interessierende Thema beziehen, anstatt lediglich ein Black-Box-Vorhersagemodell zu erstellen.

Wenn beispielsweise Ergebnisse von Genexpressionsmessungen im Zusammenhang mit Krebs behandelt werden, ist die Identifizierung aller Gene, die mit Krebs zusammenhängen, erforderlich, um den Prozess vollständig zu verstehen, während ein minimal optimaler Satz von Genen als genetische Marker nützlicher sein könnte.

Wenn Ihr primäres Ziel darin besteht, die kausalen Zusammenhänge zwischen den Prädiktoren und den Ergebnissen zu verstehen, kann die Berücksichtigung nur des optimalen Satzes von Variablen Sie in die Irre führen und Sie müssen den alles relevanten Satz studieren.

Wenn Sie jedoch ein effizientes Modell suchen, das passt, ist es besser, das minimal-optimale Set zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.