web-dev-qa-db-de.com

PCA Für kategoriale Funktionen?

Nach meinem Verständnis dachte ich, dass PCA nur für fortlaufende Funktionen ausgeführt werden kann. Beim Versuch, den Unterschied zwischen Onehot-Codierung und Label-Codierung zu verstehen, kam jedoch ein Beitrag in folgendem Link:

Wann wird One Hot Encoding vs LabelEncoder vs DictVectorizor verwendet?

Darin heißt es, dass eine Hot-Codierung, gefolgt von PCA, eine sehr gute Methode ist, was im Wesentlichen bedeutet, dass PCA für kategoriale Merkmale verwendet wird.

13
vikky

Ich stimme den anderen nicht zu.

Während Sie können PCA für binäre Daten verwenden (z. B. One-Hot-codierte Daten), bedeutet dies jedoch nicht, dass dies eine gute Sache ist oder sehr gut funktioniert.

PCA ist für stetige Variablen bestimmt. Es wird versucht, die Varianz (= Abweichungen im Quadrat) zu minimieren. Das Konzept der quadratischen Abweichungen bricht zusammen, wenn Sie binäre Variablen haben.

Ja, Sie können PCA verwenden. Und ja, du bekommst einen Output. Es ist sogar eine Ausgabe mit dem kleinsten Quadrat - es ist nicht so, als würde PCA solche Daten aussortieren. Es funktioniert, aber es ist viel weniger sinnvoll, als Sie möchten; und angeblich weniger bedeutsam als z. häufiges Pattern Mining.

20
Anony-Mousse

MCA ist eine bekannte Technik zur Reduzierung der kategorialen Datengröße. In R gibt es eine Menge Pakete, um MCA zu verwenden und sogar mit PCA in gemischten Kontexten zu mischen. In Python gibt es auch eine Mca-Bibliothek. MCA wendet ähnliche Berechnungen an wie PCA, der französische Statistiker pflegte zu sagen: "Datenanalyse ist es, die richtige Matrix zu finden, um sie zu diagonalisieren"

http://gastonsanchez.com/visually-enforced/how-to/2012/10/13/MCA-in-R/

3
joscani

Grundsätzlich sucht und entfernt PCA weniger informative (doppelte) Informationen zu Feature-Sets und reduziert die Dimension des Feature-Bereichs. Mit anderen Worten, stellen Sie sich einen N-dimensionalen Hyperraum vor. PCA findet solche M (M <N) -Features, die die Daten am meisten variieren. Auf diese Weise können Daten als M-dimensionale Merkmalsvektoren dargestellt werden. Mathematisch handelt es sich um eine Art Eigenwert- und Eigenvektorberechnung eines Merkmalsraums.

Daher ist es nicht wichtig, ob die Features kontinuierlich sind oder nicht. 

PCA wird häufig für viele Anwendungen verwendet. Meistens zur Beseitigung geräuschvoller, weniger informativer Daten, die von einem Sensor oder von Hardware vor der Klassifizierung/Erkennung stammen.

3
Ockhius

PCA ist eine Dimensionsreduzierungsmethode , die auf eine Reihe von Features angewendet werden kann. Hier ist ein Beispiel mit OneHotEncoded (d. H. Kategorialen) Daten:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X = enc.fit_transform([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]).toarray()

print(X)

> array([[ 1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  1.,  0.,  1.,  0.,  0.,  0.],
       [ 1.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  0.,  0.,  0.,  0.,  1.,  0.]])


from sklearn.decomposition import PCA
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X)

print(X_pca)

> array([[-0.70710678,  0.79056942,  0.70710678],
       [ 1.14412281, -0.79056942,  0.43701602],
       [-1.14412281, -0.79056942, -0.43701602],
       [ 0.70710678,  0.79056942, -0.70710678]])
1
AlexG

Eine aktuelle Veröffentlichung zeigt großartige und aussagekräftige Ergebnisse bei der Berechnung von PCA für kategoriale Variablen, die als Simplex-Scheitelpunkte behandelt werden. 

Kovarianz und PCA für kategoriale Variablen, Hirotaka Niitsuma und Takashi Okada, 2018.

1
Oleg Melnikov