Las técnicas de reducción de la dimensión están orientadas a detectar los atributos con un mayor poder predictivo de forma que se puedan discriminar aquellos que tienen un valor predictivo mayor de aquellos que simplemente generan ruido y consumen capacidad sin aportar prácticamente nada la modelo.
Son técnicas eminentemente estadísticas o teóricas que no pueden ser tomadas como "verdades absolutas" pero que en la mayoría de los casos aportan una información muy útil a la hora de optimizar el modelo.
Dentro de estas técnicas últimamente suena con mucha fuerza el denominado Análisis de Componentes Principales o PCA (de sus siglas en inglés Principal Component Analysis).
Esta técnica tiene una base estadística y su funcionamiento no es complejo aunque su base matemática no lo es tanto. Se trata de ordenar todos los atributos que componen los sucesos en un nuevo espacio de coordenadas (mediante transformaciones lineales) por orden descendente con respecto a la varianza que estos presentan.
Pero ¿porqué y cuando es útil es técnica?. Para que esta técnica sea efectiva debemos que asumir que gran parte de las variables están correlacionadas. Esto supondría que, realmente, al utilizar todas las variables en nuestro modelo, estamos incluyendo gran cantidad de información redundante y que, por tanto, podemos eliminarlas sin afectar significativamente a nuestra capacidad predictiva.
¿Pero cuales son los pasos para realizar un análisis PCA?
Primero: seleccionar un conjunto de sucesos representativos del sistema que queremos modelar. Recordemos que cada uno de estos sucesos esta representado por un vector (v) de dimensión N, siendo N el numero de atributos o valores que caracterizan dicho suceso.
Segundo: Seleccionamos la media de cada atributo (o dimensión) del conjunto de sucesos seleccionado.
Tercero: Calculamos la matriz de covarianza. Esto nos debe dar una matriz de NxN dimensiones.
Cuarto: Extraemos los autovectores y autovalores ( Eigenvectors y Eigenvalues) de la matriz de covarianza. Recordemos que un autovector es aquel que cuando se le aplica una transformación (en nuestro caso lineal) el resultado es un múltiplo de si mismo, no variando su dirección.
Quinto: Seleccionar aquellos autovectores que tengan un mayor autovalor y ordenarlos de forma descendente, esto es, el de mayor autovalor el primero y el menor el último. Pero, ¿cuantos debemos seleccionar?
La proporción del autovalor con respecto a la suma de los autovalores nos dan la proporción de varianza que estamos asumiendo. Es recomendable incluir valores por encima del 90% pero todo dependerá de la perdida de precisión que podamos asumir.
Supongamos que tenemos 7 dimensiones, si con un análisis PCA obtenemos que con los 3 primeros autovalores obtenemos un 97,3% de la proporción, claramente la técnica resultará interesante ya que estamos reduciendo de 7 a 3 dimensiones con una perdida muy pequeña.
Si por el contrario la varianza esta muy repartida y con estos tres primeros autovalores solo conseguimos el 70% es posible que la reducción de la dimensión no sea posible o interesante.
Sexto: Calculamos la matriz Factorial. Esta tendrá tantas columnas como componentes principales y tantas filas como variables y cada elemento de ésta representa los coeficientes factoriales de las variables (las correlaciones entre las variables y los componentes principales).
Séptimo: Trasformación del conjunto de sucesos al nuevo dataset de trabajo.
Para ello, tomaremos las características seleccionadas en orden descendente de forma que cada autovector se corresponda con una columna y la multiplicaremos por el conjunto de sucesos (ajustado contra la media) y traspuesto.
A modo de ejemplo:
Si tenemos un conjunto de 2000 sucesos de 7 atributos tenemos una matriz de dimensión 2000 x 7.
Si seleccionamos 3 características principales tendremos una matriz de de dimensión 3 x 7 donde en las filas tendremos cada uno de los factores principales y en las columnas los atributos.
Si multiplicamos ambos de la siguiente forma:
Que en dimensiones supone:
Traspuesta((3,7)xTraspuesta(2000,7)) = Traspuesta((3,7)x(7,2000)) = Traspuesta(3,2000) = (2000,3)
Esto es, un conjunto de 2000 sucesos reducido a 3 dimensiones, con una perdida mínima (2,9)% de la varianza o capacidad predictiva.
Próximos pasos:
Tras esto, en las próximas entradas del blog pasaremos a probar cada una de las técnicas expuestas anteriormente con distintos frameworks y validando de esta forma las bondadesy problemas de cada uno de ellos.
Para tal caso utilizaremos un PC MSI-PE60 6QE con las siguiente configuración:
Son técnicas eminentemente estadísticas o teóricas que no pueden ser tomadas como "verdades absolutas" pero que en la mayoría de los casos aportan una información muy útil a la hora de optimizar el modelo.
Dentro de estas técnicas últimamente suena con mucha fuerza el denominado Análisis de Componentes Principales o PCA (de sus siglas en inglés Principal Component Analysis).
Esta técnica tiene una base estadística y su funcionamiento no es complejo aunque su base matemática no lo es tanto. Se trata de ordenar todos los atributos que componen los sucesos en un nuevo espacio de coordenadas (mediante transformaciones lineales) por orden descendente con respecto a la varianza que estos presentan.
Pero ¿porqué y cuando es útil es técnica?. Para que esta técnica sea efectiva debemos que asumir que gran parte de las variables están correlacionadas. Esto supondría que, realmente, al utilizar todas las variables en nuestro modelo, estamos incluyendo gran cantidad de información redundante y que, por tanto, podemos eliminarlas sin afectar significativamente a nuestra capacidad predictiva.
¿Pero cuales son los pasos para realizar un análisis PCA?
Primero: seleccionar un conjunto de sucesos representativos del sistema que queremos modelar. Recordemos que cada uno de estos sucesos esta representado por un vector (v) de dimensión N, siendo N el numero de atributos o valores que caracterizan dicho suceso.
Segundo: Seleccionamos la media de cada atributo (o dimensión) del conjunto de sucesos seleccionado.
Tercero: Calculamos la matriz de covarianza. Esto nos debe dar una matriz de NxN dimensiones.
Cuarto: Extraemos los autovectores y autovalores ( Eigenvectors y Eigenvalues) de la matriz de covarianza. Recordemos que un autovector es aquel que cuando se le aplica una transformación (en nuestro caso lineal) el resultado es un múltiplo de si mismo, no variando su dirección.
Quinto: Seleccionar aquellos autovectores que tengan un mayor autovalor y ordenarlos de forma descendente, esto es, el de mayor autovalor el primero y el menor el último. Pero, ¿cuantos debemos seleccionar?
La proporción del autovalor con respecto a la suma de los autovalores nos dan la proporción de varianza que estamos asumiendo. Es recomendable incluir valores por encima del 90% pero todo dependerá de la perdida de precisión que podamos asumir.
Supongamos que tenemos 7 dimensiones, si con un análisis PCA obtenemos que con los 3 primeros autovalores obtenemos un 97,3% de la proporción, claramente la técnica resultará interesante ya que estamos reduciendo de 7 a 3 dimensiones con una perdida muy pequeña.
Si por el contrario la varianza esta muy repartida y con estos tres primeros autovalores solo conseguimos el 70% es posible que la reducción de la dimensión no sea posible o interesante.
Sexto: Calculamos la matriz Factorial. Esta tendrá tantas columnas como componentes principales y tantas filas como variables y cada elemento de ésta representa los coeficientes factoriales de las variables (las correlaciones entre las variables y los componentes principales).
Séptimo: Trasformación del conjunto de sucesos al nuevo dataset de trabajo.
Para ello, tomaremos las características seleccionadas en orden descendente de forma que cada autovector se corresponda con una columna y la multiplicaremos por el conjunto de sucesos (ajustado contra la media) y traspuesto.
A modo de ejemplo:
Si tenemos un conjunto de 2000 sucesos de 7 atributos tenemos una matriz de dimensión 2000 x 7.
Si seleccionamos 3 características principales tendremos una matriz de de dimensión 3 x 7 donde en las filas tendremos cada uno de los factores principales y en las columnas los atributos.
Si multiplicamos ambos de la siguiente forma:
New_dataset = Traspuesta ( Matriz_de_características_principales x Matriz_Traspuesta_sucesos ) =>
Que en dimensiones supone:
Traspuesta((3,7)xTraspuesta(2000,7)) = Traspuesta((3,7)x(7,2000)) = Traspuesta(3,2000) = (2000,3)
Esto es, un conjunto de 2000 sucesos reducido a 3 dimensiones, con una perdida mínima (2,9)% de la varianza o capacidad predictiva.
Próximos pasos:
Tras esto, en las próximas entradas del blog pasaremos a probar cada una de las técnicas expuestas anteriormente con distintos frameworks y validando de esta forma las bondadesy problemas de cada uno de ellos.
Para tal caso utilizaremos un PC MSI-PE60 6QE con las siguiente configuración:
- Windows 10
- Procesador i7-6700 HQ de 8 núcleos a 2,6 GHz
- 16 G de RAM
- Tarjeta Gráfica NVIDIA GTX960M
- Apache Spark 2.1.0
- Tensorflow r0.12
- SciKit learn 0.18.1
- H2O.ai 3.10.0.9