Uploaded by Alan Ortiz

REPORTE PCA

advertisement
UNIVERSIDAD DE SONORA
MAESTRÍA EN INGENIERÍA EN INTERNET DE LAS COSAS E
INTELIGENCIA ARTIFICIAL
TAREA:
Dimensionality Reduction
MATERIA:
Inteligencia Artificial
PROFESOR:
Federico Miguel Cirett Galán
ALUMNOS:
Alan Adalberto Ortiz Pérez
Brian Harlán Samaniego Dávila
Hermosillo, SON.
27 / NOV / 2022
INTRODUCCIÓN
En esta actividad el objetivo es aplicar el PCA o Principal Component Analysis (análisis de
componentes principales) para reducir las dimensiones de los datos utilizados en ejercicios
previos, con el objetivo de comparar los resultados obtenidos antes y después de aplicar el
PCA.
PROCEDIMIENTO
El primer paso fue preparar los datos para ser analizados.
A partir del análisis inicial de los datos, se identificaron 10 usuarios y 8 gestos por usuario.
Se obtuvo la cantidad de registros con los que se contaba, por usuario y por gesto. La
cantidad de registros se muestra de la siguiente manera:
Usuario 1
Gesto 1
16
Gesto 2
16
Gesto 3
17
Gesto 4
16
Gesto 5
1
Gesto 6
13
Gesto 7
17
Gesto 8
17
Muestras 113
Usuario 2
Gesto 1
35
Gesto 2
1
Gesto 3
32
Gesto 4
38
Gesto 5
1
Gesto 6
26
Gesto 7
32
Gesto 8
33
Muestras 198
Usuario 3
Gesto 1
30
Gesto 2
2
Gesto 3
30
Gesto 4
30
Gesto 5
2
Gesto 6
26
Gesto 7
30
Gesto 8
30
Muestras 180
Usuario 4
Gesto 1
31
Gesto 2
3
Gesto 3
35
Gesto 4
35
Gesto 5
2
Gesto 6
26
Gesto 7
34
Gesto 8
34
Muestras 200
Usuario 5
Gesto 1
30
Gesto 2
3
Gesto 3
30
Gesto 4
30
Gesto 5
2
Gesto 6
26
Gesto 7
30
Gesto 8
30
Muestras 181
Usuario 6
Gesto 1
30
Gesto 2
4
Gesto 3
28
Gesto 4
30
Gesto 5
3
Gesto 6
26
Gesto 7
30
Gesto 8
30
Muestras 181
Usuario 7
Gesto 1
21
Gesto 2
4
Gesto 3
22
Gesto 4
22
Gesto 5
21
Gesto 6
12
Gesto 7
22
Gesto 8
22
Muestras 146
Usuario 8
Gesto 1
30
Gesto 2
2
Gesto 3
30
Gesto 4
30
Gesto 5
30
Gesto 6
26
Gesto 7
30
Gesto 8
30
Muestras 208
Usuario 9
Gesto 1
22
Gesto 2
8
Gesto 3
22
Gesto 4
22
Gesto 5
22
Gesto 6
12
Gesto 7
22
Gesto 8
22
Muestras 152
Usuario 10
Gesto 1
22
Gesto 2
3
Gesto 3
21
Gesto 4
27
Gesto 5
20
Gesto 6
11
Gesto 7
19
Gesto 8
20
Muestras 143
Siendo en total 1,702 muestras con diferente número de registros.
Muestras x Gesto
Gesto 1
Gesto 2
Gesto 3
Gesto 4
Gesto 5
Gesto 6
Gesto 7
Gesto 8
267
46
267
280
104
204
266
268
Muestras
1,702
Se eliminó el gesto 5, muestra 7, por estar repetido.
Se graficaron las muestras con el objetivo de identificar y descartar aquellas que no fueran
representativas de la clase, y así quedarse sólo con las que si fuesen representativas. En la
siguiente imagen podemos ver un ejemplo.
En este ejemplo, la muestra m007 no corresponde con el gesto, por lo que se descarta.
Las direcciones de los vectores de los gestos son las siguientes:
Gesto
Imagen de Vector
Gesto 1
Gesto 2
Gesto 3
Gesto 4
Dirección
Gesto 5
Gesto 6
Gesto 7
Gesto 8
Cantidad de elementos descartados (eliminados) por no ser representativos de la clase:
Muestras eliminadas x Gesto
Gesto 1
Gesto 2
Gesto 3
Gesto 4
Gesto 5
Gesto 6
Gesto 7
Gesto 8
22
5
24
22
28
136
138
101
Muestras
476
Que representan el 27.98% del total de muestras. En total nos quedamos con 1,226
vectores de gestos para el análisis. Las muestras quedaron repartidas de la siguiente
manera:
Muestras x Gesto
Gesto 1
Gesto 2
Gesto 3
Gesto 4
Gesto 5
Gesto 6
Gesto 7
Gesto 8
245
41
243
258
76
68
128
167
Muestras
1,226
Al analizar los puntos por muestra, se observó que no todas las muestras contaban con
puntos suficientes para realizar el análisis, lo que nos dejaba con una disparidad. Para
resolverlo, se utilizó el método de interpolación de datos para estandarizar a 12 puntos de
datos por muestra.
Después se procedió a clasificar los datos por gestos en vectores de “x” y “y” de 12 puntos
por muestra, los que nos dejó con una representación más sustanciosa y representativa
para el algoritmo de machine learning.
Para la elaboración del dataset, lo que se hizo fue calcular las deltas ∆x y ∆y, es decir, la
razón de cambio de “x” y “y”, además del ángulo de “y” con respecto a “x”, quedando el
dataset de la siguiente manera:
Este dataset es el que utilizaremos para las pruebas.
Las fórmulas utilizadas fueron las siguientes:
Para dy:
∆𝑦 = 𝑦𝑓𝑖𝑛𝑎𝑙 − 𝑦𝑖𝑛𝑖𝑐𝑖𝑎𝑙 = 𝑓(𝑥 + ∆𝑥) − 𝑓(𝑥)
Para dx:
∆𝑥 = 𝑥𝑓𝑖𝑛𝑎𝑙 − 𝑥𝑖𝑛𝑖𝑐𝑖𝑎𝑙 = (𝑥 + ∆𝑥) − 𝑥
Razón de cambio (rc):
𝑟𝑐 =
∆𝑦
∆𝑥
Ángulo (ang):
𝑦
𝑎𝑛𝑔 = 𝑡𝑎𝑛−1 ( )
𝑥
CÓDIGO
Caso 1: PCA + pivot
Importamos las librerías:
Cargamos los datos (archivo .csv):
Mostramos los datos:
Pivoteamos los datos:
Aplicamos PCA:
Aplicamos K-Means:
Mostramos la gráfica:
CASO 2: PCA + pivot + normalización
Normalizamos los datos:
Pivoteamos la tabla:
Aplicamos PCA:
Aplicamos K-Means:
Graficamos los resultados:
Ahora veremos qué pasa si aplicamos PCA a los datos en crudo, sin normalizar y sin la
función pivot_table.
Caso 3: PCA sin pivot ni normalización
Cargamos los datos crudos:
Aplicamos PCA:
Aplicamos K-Means:
Generamos la gráfica para analizar los resultados:
Podemos ver que el resultado empeoró, demostrando que el PCA no funciona bien sin
normalización. Ahora analizaremos los datos con K-Means sin normalizar y sin PCA.
CASO 4: K-Means sin PCA
Cargamos los datos:
Aplicamos K-Means:
Graficamos:
Podemos observar que el resultado es muy similar al del caso 3, pero con un orden
diferente.
Ahora probaremos con el algoritmo de SVM.
CASO 5: SVM + PCA
Importamos la librería para SVM:
Cargamos el archivo y preparamos las variables:
Aplicamos SVM:
Calculamos la precisión del modelo:
Podemos ver que se obtuvo una buena precisión.
Generamos una matriz de confusión:
Ahora aplicamos SVA con 4 componentes:
Mostramos la gráfica de la relación entre el componente 1 y 2:
Relación entre el componente 3 y 4:
Podemos ver que en este caso es capaz de separar el tercer y cuarto componente en dos
clases fácilmente diferenciables, sin embargo, una de las desventajas de PCA es que es difícil
saber lo que esos dos componentes representan en realidad.
CONCLUSIONES
El PCA nos ayuda a reducir las dimensiones de un set de datos, a la vez que reduce a lo
mínimo posible la pérdida de información o de certeza. Esto lo hace tomando las variables
de mayor varianza y creando nuevos componentes a partir de ellas.
Esto es especialmente útil cuando trabajamos con datasets compuestos por un gran
número de variables, y también nos puede ayudar a identificar las variables más relevantes
de nuestro dataset y concentrar nuestra atención hacia ellas.
El reducir la dimensionalidad también facilita el análisis de los datos y reduce los tiempos
de entrenamiento.
Download