web-dev-qa-db-fra.com

PCA Pour des fonctionnalités catégoriques?

D'après ce que j'ai compris, je pensais que la PCA ne pouvait être effectuée que pour des fonctions continues. Mais tout en essayant de comprendre la différence entre l'encodage onehot et l'encodage d'étiquette, vous êtes parvenu à un message dans le lien suivant:

Quand utiliser One Hot Encoding vs LabelEncoder vs DictVectorizor?

Il est indiqué qu'un codage à chaud suivi par PCA est une très bonne méthode, ce qui signifie fondamentalement que PCA est appliqué aux caractéristiques catégoriques .

13
vikky

Je ne suis pas d'accord avec les autres.

Alors que vous pouvez utiliser PCA sur des données binaires (par exemple, des données codées à chaud), cela ne signifie pas que c'est une bonne chose, sinon cela fonctionnera très bien.

PCA est conçu pour les variables continu. Il essaie de minimiser la variance (= écarts carrés). Le concept des écarts carrés disparaît lorsque vous avez des variables binaires.

Donc, oui, vous pouvez utiliser PCA. Et oui, vous obtenez une sortie. C'est même une sortie au moins carré - ce n'est pas comme si PCA segfault sur de telles données. Cela fonctionne, mais c’est beaucoup moins significatif que vous ne le voudriez; et soi-disant moins significatif que par exemple extraction de gabarit fréquente.

20
Anony-Mousse

Le MCA est une technique connue pour la réduction catégorielle des dimensions de données. Dans R, il y a beaucoup de paquetages pour utiliser MCA et même mélanger avec PCA dans des contextes mixtes. En python, il existe aussi une bibliothèque mca. La MCA applique des calculs similaires à ceux de la PCA, comme le disait le statisticien français, "l'analyse des données consiste à trouver la matrice correcte à diagonaliser".

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

3
joscani

Fondamentalement, PCA trouve et élimine des informations moins informatives (en double) sur les ensembles de fonctionnalités et réduit la dimension de leur espace. En d’autres termes, imaginons un hyperespace à N dimensions, la PCA trouve de telles caractéristiques (M <N) que les données varient le plus. De cette manière, les données peuvent être représentées sous forme de vecteurs de caractéristiques de dimension M. Mathématiquement, il s'agit en quelque sorte d'un calcul de valeurs propres et de vecteurs propres d'un espace de fonctions.

Il n’est donc pas important que les fonctionnalités soient continues ou non. 

PCA est largement utilisé dans de nombreuses applications. Principalement pour éliminer les données bruyantes et moins informatives provenant de certains capteurs ou matériels avant la classification/reconnaissance.

3
Ockhius

PCA est une méthode de réduction de dimensionnalité qui peut être appliquée à n’importe quel ensemble de fonctionnalités. Voici un exemple d'utilisation de données OneHotEncoded (c'est-à-dire catégoriques):

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

Une publication récente montre des résultats intéressants et significatifs lors du calcul de l'ACP sur des variables qualitatives traitées comme des sommets simplex. 

Covariance et PCA pour les variables qualitatives, Hirotaka Niitsuma et Takashi Okada, 2018.

1
Oleg Melnikov