Wie genau funktioniert die Auswahl von Chi-Quadrat-Features?

15

Ich weiß, dass für jedes Feature-Class-Paar der Wert der Chi-Quadrat-Statistik berechnet wird und mit einem Schwellenwert verglichen wird.

Ich bin allerdings etwas verwirrt. Wenn es Merkmale und k gibtmk Klassen gibt, wie erstellt man die Kontingenztabelle? Wie entscheidet man, welche Features beibehalten und welche entfernt werden sollen?

Jede Klarstellung wird sehr geschätzt. Danke im Voraus

user721975
quelle
1
Irgendwelche Gedanken / Hinweise dazu?
user721975

Antworten:

5

Der Chi-Quadrat-Test ist ein statistischer Unabhängigkeitstest zur Bestimmung der Abhängigkeit zweier Variablen. Es teilt Ähnlichkeiten mit dem Bestimmungskoeffizienten R². Der Chi-Quadrat-Test gilt jedoch nur für kategoriale oder nominale Daten, während R² nur für numerische Daten gilt.

Aus der Definition von Chi-Quadrat können wir leicht die Anwendung der Chi-Quadrat-Technik bei der Merkmalsauswahl ableiten. Angenommen, Sie haben eine Zielvariable (dh die Klassenbezeichnung) und einige andere Features (Feature-Variablen), die die einzelnen Stichproben der Daten beschreiben. Nun berechnen wir eine Chi-Quadrat-Statistik zwischen jeder Merkmalsvariablen und der Zielvariablen und beobachten, ob eine Beziehung zwischen den Variablen und dem Ziel besteht. Wenn die Zielvariable von der Merkmalsvariablen unabhängig ist, können wir diese Merkmalsvariable verwerfen. Wenn sie abhängig sind, ist die Merkmalsvariable sehr wichtig.

Mathematische Details werden hier beschrieben: http://nlp.stanford.edu/IR-book/html/htmledition/feature-selectionchi2-feature-selection-1.html

Bei stetigen Variablen kann das Chi-Quadrat nach "Binning" der Variablen angewendet werden.

Ein Beispiel in R, schamlos aus FSelector kopiert

# Use HouseVotes84 data from  mlbench package
library(mlbench)# For data
library(FSelector)#For method
data(HouseVotes84)

#Calculate the chi square statistics 
weights<- chi.squared(Class~., HouseVotes84)

# Print the results 
print(weights)

# Select top five variables
subset<- cutoff.k(weights, 5)

# Print the final formula that can be used in classification
f<- as.simple.formula(subset, "Class")
print(f)

Das Video unten behandelt das Chisquare im Detail. Https://www.youtube.com/watch?time_continue=5&v=IrZOKSGShC8

discipulus
quelle