PCA para características categóricas?

En mi entendimiento, pensé que PCA solo se puede realizar para funciones continuas. Pero al tratar de comprender la diferencia entre la encoding onehot y la encoding de tags, se publicó una publicación en el siguiente enlace:

¿Cuándo usar One Hot Encoding vs LabelEncoder vs DictVectorizor?

Afirma que una encoding en caliente seguida por PCA es un método muy bueno, lo que básicamente significa que PCA se aplica para características categóricas. Por lo tanto confundido, por favor sugiéreme en el mismo.

No estoy de acuerdo con los demás.

Si bien puede usar PCA en datos binarios (p. Ej., Datos codificados en caliente), eso no significa que sea algo bueno o funcionará muy bien.

Se diseña PCA para variables continuas . Intenta minimizar la varianza (= desviaciones al cuadrado). El concepto de desviaciones al cuadrado se rompe cuando tienes variables binarias.

Así que sí, puedes usar PCA. Y sí, obtienes una salida. Incluso es una salida de mínimos cuadrados, no es como si PCA pudiera segfault en tales datos. Funciona, pero es mucho menos significativo de lo que quisieras que fuera; y supuestamente menos significativo que, por ejemplo, la minería de patrones frecuentes.

Básicamente, PCA encuentra y elimina información menos informativa (duplicada) sobre el conjunto de características y reduce la dimensión del espacio de características. En otras palabras, imagine un hiperespacio N-dimensional, PCA encuentra tales características M (M

Por lo tanto, no es importante si las características son continuas o no.

PCA se utiliza ampliamente en muchas aplicaciones. Principalmente para eliminar datos ruidosos y menos informativos que provienen de algún sensor o hardware antes de la clasificación / reconocimiento.

MCA es una técnica conocida para la reducción de dimensiones de datos categóricos. En R hay mucho paquete para usar MCA e incluso mezclar con PCA en contextos mixtos. En Python también existe una biblioteca mca. MCA aplica matemáticas similares a las de PCA, de hecho el estadístico francés solía decir: “el análisis de datos es encontrar la matriz correcta para diagonalizar”

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

Una publicación reciente muestra resultados excelentes y significativos al calcular PCA en variables categóricas tratadas como vértices simplex.

Covarianza y PCA para variables categóricas , Hirotaka Niitsum y Takashi Okada, 2018.

PCA es un método de reducción de dimensionalidad que puede aplicarse a cualquier conjunto de características. Aquí hay un ejemplo que utiliza los datos de OneHotEncoded (es decir, categóricos):

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]]) 

Creo que pca está reduciendo var aprovechando la relación lineal entre vars. Si solo hay una var categórica codificada en una captura, no hay una relación lineal entre las columnas de un usuario. por lo que no se puede reducir por pca.

Pero si existen otras vars, los cols de una sola palabra pueden presentarse por relación lineal de otras vars.

Así puede ser que se pueda reducir por pca, depende de la relación de vars.