Documentos de Académico
Documentos de Profesional
Documentos de Cultura
net/publication/350802071
CITATIONS READS
0 949
4 authors:
All content following this page was uploaded by Alejandro Zamora Esquivel on 11 April 2021.
Resumen—Este paper está basado en la técnica de Análisis de Componentes Principales con un enfoque en
Machine Learning, un poco de la historia sobre el mismo y además, decidimos focalizar la investigación en el
aprendizaje no supervisado. Dentro de la investigación podrán encontrar un ACP, en el cual explicamos la uti-
lización de los vectores y valores propios de dicha técnica, además de los tópicos matemáticos para desarrollar un
Análisis de Componentes Principales debidamente. Este ACP se realizó con una tabla preestablecida por nuestro
profesor académico PhD. Carlos González Alvarado, en la cual debíamos aplicar la técnica de ACP, mostrar grá-
ficamente los resultados; para esto, utilizamos el lenguaje Python, con el mismo, procedimos a realizar y explicar
el gráfico de sedimentación, el plano de componentes principales y el círculo de correlaciones con lo que contenía
la tabla antes mencionada.
Abreviaturas
Esta publicación plasma la importancia del Análisis de Com-
ponentes Principales en el campo de la ciencia de datos, donde su
ACP Análisis de Complementos Principales principal aporte recae en el problema de la alta dimensionalidad
la cual significa que un conjunto de datos tiene una gran cantidad
PCA Principal Components Analysis
de características. El problema principal asociado con la alta
ML Machine Learning dimensionalidad en el campo del Machine Learning es el sobreajuste
del modelo, que reduce la capacidad de generalizar más allá de los
DL Deep Learning
ejemplos en el conjunto de entrenamiento.
IA Inteligencia Artificial
Particularmente esta publicación busca detallar la importancia que
presenta el Análisis de Componentes Principales en es reducir la di-
mensionalidad de un conjunto de datos que cuenta de una gran cantidad
1 Introducción de variables interrelacionadas mientras se retiene la mayor cantidad
posible de la variación presente en el conjunto de datos. El Análisis
En esta publicación se busca plasmar los diversos tópicos matemáticos de Componentes Principales hace esto posible gracias a que aplica
relacionados en su mayoría al álgebra lineal, los cuales dan fundamento una transformación a un nuevo conjunto de variables llamados Com-
al desarrollo y aplicación del Análisis de Componentes Principales ponentes Principales (CP), las cuales no están correlacionadas y que
(ACP) en Machine Learning. Con el objetivo de plasmar, explicar y están ordenados de manera que los primeros retienen la mayor parte de
ejemplificar estos fundamentos, se recurre principalmente a métodos la variación presente en todas las variables originales.
prácticos de aplicación del ACP y sus aplicabilidades en análisis de
datos y en general en todo el campo de la ciencia de datos. Por esta
razón en la presente publicación se expondrán principios, conceptos, 2 Metodología
fundamentos y tópicos relacionados del Análisis de Componentes
Principales, posteriormente se ejemplificarán los fundamentos Los métodos requeridos para elaborar la presente investigación se
matemáticos en las aplicaciones del álgebra lineal sobre el contexto del presentan en función de las necesidades explicativas, didácticas y
ACP. Finalmente se presenta un Análisis de Componentes Principales divulgativas. La idea central del Análisis de Componentes Principales
en el lenguaje de programación Python como caso de estudio y es reducir la dimensionalidad de un conjunto de datos que consta de
muestreo de resultados. Asimismo, se conjuga la aplicación del ACP una gran cantidad de variables interrelacionadas mientras se retiene
con Machine Learning y Aprendizaje no Supervisado. la mayor cantidad posible de la variación presente en el conjunto
1
de datos. Esto se logra transformando a un nuevo conjunto de vector (segundo componente principal) buscará la dirección en donde
variables, los componentes principales, que no están correlaciona- los datos tengan mayor varianza y menor correlación con el primer
dos y que están ordenados de manera que los primeros retienen vector. Este procedimiento formará 2 vectores ortogonales con un
la mayor parte de la variación presente en todas las variables originales. ángulo recto de 90◦ .
2
predichas, la máquina debe encontrar esta relación y se entrena todos los aspectos del aprendizaje o de rasgo de la inteligencia pueden,
por medio de datos etiquetados, utilizando modelos de clasifi- en principio, ser descritos de una forma tan precisa que se puede crear
cación y regresión. una máquina que los simule”. (Guillen, 2016).
• Aprendizaje por refuerzo: En este tipo de aprendizaje se imple- En un documento publicado por la Universidad de Stanford en 2007,
menta el entrenamiento de máquina por medio de prueba y error John McCarthy expresó su concepto sobre I.A:
hasta determinar la manera más óptima de solucionar problemas
o de lograr el objetivo, podría decirse que se basa en exploración
inteligente. La ciencia y la ingeniería de crear máquinas inteligentes,
especialmente programas de computación inteligentes. Está
• Aprendizaje no supervisado: Se desarrollará la explicación relacionada con la tarea similar de utilizar ordenadores para
comprender la inteligencia humana, pero la IA no se limita
• Redes neuronales o deep learning: Caracterizados por la simu- a métodos que sean observables biológicamente. (Alandete,
lación de las neuronas cerebrales. 2011).
A su vez, en 1956 John McCarthy organiza la famosa conferencia de De las principales técnicas del aprendizaje no supervisado contamos
Dartmouth, donde se utiliza por primera vez el término: “Inteligencia con: agrupamiento de datos, reducción de dimensionalidad (uso del
Artificial”, mencionando: “Este estudio procederá sobre la base de que ACP), identificación de valores atípicos y detección de novedades.
3
Para efectos de nuestra investigación, nos enfocaremos en la reducción Esto debido a que el ACP son nuevas variables que se con-
de dimensionalidad con la aplicación del ACP e indirectamente con la struyen a través de combinaciones lineales y mezclas de las variables
detección de valores atípicos a través de un ejemplo práctico utilizando iniciales de entrada. Estas combinaciones surgen de tal manera que
código python y la librería scikit-learn. No obstante, antes de aden- las nuevas variables no están correlacionadas y la mayor parte de la
trarnos al código, explicaremos desde el ágebra lineal como funciona información de las variables iniciales de entradas son comprimidas
el ACP con el fin de entender el agente inteligente de nuestra caja negra. enlos primeros componentes. Por su parte, los Eigenvectores y
eigenvalores siempre vienen en pares, de modo que cada vector propio
tiene un valor propio. Y su número es igual al número de dimensiones
de los datos.
6 Antecendentes matemáticos
Como se explicó anteriormente el Análisis de Componentes Princi- Esto último es gran importancia debido qué los Eigenvectores
pales busca solucionar problemas relacionados en la reducción de de la matriz de covarianza son en realidad las direcciones de los
la dimensionalidad. La reducción de las dimensiones del espacio ejes donde hay más varianza, los cuales llamamos Componentes
de características se denomina reducción de dimensionalidad. La Principales. Y por su parte, los Eigenvalores, son los coeficientes
reducción de dimensiones es necesaria cuando hay demasiadas adjuntos a los vectores propios, que dan la cantidad de varianza
características en un conjunto de datos, lo que dificulta la distinción transportada en cada componente principal. Habiendo entendido los
entre las importantes que son relevantes para el resultado y las antecendentes de los Componentes Principales, podemos adentrarnos
redundantes o no tan importantes. en los tópicos matemáticos del ACP.
4
calcular sus correlaciones.
a y1 − y
k1 σy
.. ..
. .
k
a = akj
(3) y −y
yc = 2 (7)
. σy
. .
. .
.
akm yn −y
σy
Donde ak es el k-ésimo factor y akj es quien indica cuánto valor Las correlaciones pueden ser interpretadas de la siguiente manera:
aporta cada variable a la construcción del componente. Unos van a
1. Si la suma de las correlaciones de X j al cuadrado están cercanas
ser negativos y otros positivos, su peso solo es importante respecto
a 1, hay una correlación fuerte con los componentes o alguno de
al peso de los otros componentes, para mantener la ortogonalidad
ellos, pero la correlación con los otros va a ser débil.
de la transformación se ponen restricciones, como por ejemplo:
∑m 2
j=1 ( akj ) = 1
0
2. Si por ejemplo, el ángulo entre X j y X j es cercano a los 90 grados
entonces no hay correlación entre ellas.
En el ACP se reducen las variables y se busca la correlación 0
de las mismas, para esto debe sacarse la varianza, covarianza. Por 3. Si X j y X j se encuentran opuestas al vértice origen, hay una
ejemplo: V = n1 X t X, la cual sería la matriz de dicha varianza- correlación fuerte y negativa entre ellas.
covarianza, a esta operación se le denomina, extracción de valores. En el ACP se utilizan distintos gráficos que ayudan a representar
Quedando esta matriz de correlaciones: detalles sumamente relevantes en el análisis del método. Los gráficos
principales son: Círculo de correlaciones, Gráfico de sedimentación
cov( X I X J )
vij = = R( X I X J ) (4) y Plano de componentes principales. A continuación se explica el
σx I x J objetivo de estas 3 visualizaciones.
Entonces la fila de X en R es el espacio de individuos en el centro de la
nube de puntos. Para calcular las correlaciones se puede implementar 7.1 Círculo de correlaciones
este ejemplo: El círculo de correlaciones ayuda a visualizar la relación existente
√ que tienen las variables entre sí en nuestro conjunto de datos. En
R( X 1 , Cr ) Br a1r una investigación elaborada por el Tecnológico de Costa Rica (TEC)
..
..
se define que: “Los círculos de correlaciones son obtenidos a partir
. . de las correlaciones entre las variables originales y las componentes
√
q
R( X j , Cr ) = Br · ay = Br ar =
principales normalizadas.” (Allan Jimenez, 2012). Tomando este
j (5)
círculo como referencia para la explicación de los ejemplos abajo,
..
..
cada punto hace referencia a una variable (ejemplo: Period Deaths o
. .
√ r
Net int. Migration):
R( X m , Cr ) Br am
• ar es el r-ésimo vector propio de R = n1 X t X asociado a r. Fig. 2. Círculo de correlaciones - Period Deaths o Net int. Migration
5
• Si son ortogonales significa que no están correlacionadas. 8 Aplicación del ACP en código Python
• Si están en lados opuestos con respecto al centro significa que Para iniciar con nuestro algoritmo, importaremos las librerías nece-
están negativamente correlacionadas. sarias para desarrollarlo. Cabe mencionar que antes de importar la
librería mglearn se debe instalar en nuestro IDE (pip install mglearn).
El gráfico de sedimentación revela el nivel óptimo en la cantidad de • glearn nos permitirá visualizar gráficamente los componentes
componentes principales que deben ser seleccionados para la reduc- principales.
ción de dimensionalidad de un conjunto de datos. Los elementos que • Con pandas nos ayudaremos con la manipulación de los datos en
tendremos en este gráfico serán los componenetes originales (sin la nuestro conjunto de datos. A este conjunto le llamaremos Data
aplicación de la reducción de dimensionalidad) en el eje x y en el eje Frame.
y tendremos los valores propios de cada componente. Con el fin de
visualizar de manera directa los componentes más relevantes se ordena • numpy para el manejo de matrices numéricas.
de mayor a menor según la magnitud de cada uno. A continuación, se
visualiza un ejemplo de un gráfico de sedimentación: • matplotlib y seaborn para la visualización de datos.
1 import sklearn
2 import mglearn
3 import pandas as pd
4 import numpy as np
5 import matplotlib.pyplot as plt
6 import seaborn as sns
7 %matplotlib inline
8 from sklearn.decomposition import PCA
1 df = pd.read_excel(’/content/ACP.xlsx’)
2
3 df = df.drop([3,5,14],axis=0),
4 target = df.iloc[:,0]
Fuente: Minitab. 5
6
6 df = df.drop([’MODELO’], axis=1) 4 matriz_cov = np.cov(matriz.T)
7 df = df.drop([’SEG’], axis=1) 5
6 valores, vectores = np.linalg.eigh(matriz_cov)
7
Como vimos anteriormente, es sumamente importante visualizar las
8 proporcion = valores / np.trace(matriz_cov)
correlaciones que existen entre nuestras variables. Por ello utilizare-
mos el círculo de correlación (programado en R) para identificar cuales
Para visualizar de forma descendiente nuestro gráfico de sedimentación
variables tienen y no tienen relación entre ellas. Como se puede obser-
procedemos a ordenar de mayor a menor los valores que se encuentra en
var, muchas de nuestras variables poseen correlación entre ellas. No
la lista de proporción que se obtuvo de las líneas pasadas, de tal manera
obstante, la variable de aceleración tiene correlación negativa entre las
que podamos obtener el peso en porcentaje de nuestras componenentes
demás variables.
principales.
Fig. 6. Círculo de correlación - implementación con R
1 porcentaje = proporcion * 100 porcentaje
2 y = sorted(porcentaje,reverse=True)
1 fig, ax = plt.subplots(figsize=(10,5),dpi=100)
2 plt.plot([’CP1’,’CP2’,’CP3’,’CP4’,’CP5’, ’CP6’], y,
color=’black’, marker = ’x’, linewidth=1,
markersize=4)
3 ax.set(title=’ G r f i c o de sedimentaci n’,xlabel=’
Componentes principales’,ylabel=’Porcentaje de
Fuente: Elaboración propia. v a r i a c i n ’)
1 corr = df.corr(method=’pearson’)
2
3 plt.figure(figsize=(16,8))
4 sns.heatmap(corr,xticklabels=corr.columns,
yticklabels=corr.columns,
5 cmap=’RdBu_r’, annot=True, linewidth=0.5)
6 plt.title(’Matriz de correlaci n’)
1 pca = PCA(n_components=2)
2 pca.fit(df)
3
Esta línea de código nos servirá para manipular más fácilmente desde
Las siguientes líneas de código nos permitirán definir nuestra matriz
un Data Frame las columnas que deseamos graficar en el plano de
de covarianza, para luego poder obtener los vectores propios y valores
componentes principales.
propios, así como proporción de nuestros datos.
1 new_df = pd.DataFrame(df_transform,columns=[’CP1’,’
1 n = df.shape[0] CP2’])
2 matriz = np.array(df) 2 new_df = new_df.assign(Target=target)
3
7
Por último, graficamos nuestro plano de componentes principales y https://www.bbvaopenmind.com/tecnologia/inteligencia-artificial/el-
esto nos permitirá observar como nuestros datos interactúan en un verdadero-padre-de-la-inteligencia-artificial/
plano de 2 dimensiones.
Gonzalez, C. (s.f.). ¿Qué es el Deep Learning y para qué sirve?. Indra.
1 fig, ax = plt.subplots(figsize=(10,5),dpi=100) Recuperado de: https://bit.ly/3lcn8d7.
2 mglearn.discrete_scatter(new_df.iloc[:,0],new_df.
iloc[:,1],new_df.index,s=20) Hao, K. (2020, noviembre). “El aprendizaje profundo va a ser capaz
3 plt.legend(new_df.iloc[:,2]) de hacer cualquier cosa”. MIT Technology Review. Recuperado de:
4 ax.set(title=’Visualizaci n del A n l i s i s de los
Componentes’, xlabel=’CP 1’, ylabel=’CP 2’) https://bit.ly/38mEaS2.
10 Referencias
Alandete D.(26 de Octubre de 2011). John McCarthy, el ar-
ranque de la inteligencia artificial. El País. Recuperado de:
https://elpais.com/diario/2011/10/27/necrologicas/1319666402_850215.html