Parte 9 Reducción de la Dimensión
9.1 Análisis de Componentes Principales (ACP)
9.1.1 Intuición del ACP
Exercise 9.1
¿Cuál es el verdadero propósito de la ACP?El verdadero propósito es principalmente disminuir la complejidad del modelo. Se trata de simplificar el modelo manteniendo la relevancia y el rendimiento. A veces, puedes tener conjuntos de datos con cientos de características, por lo que, en ese caso, solo deseamos extraer muchas menos variables independientes que expliquen al máximo la varianza.
Exercise 9.2
¿Cuál es la diferencia entre ACP y análisis factorial?El análisis de componentes principales implica la extracción de compuestos que sean combinaciones lineales de variables observadas. El análisis factorial se basa en un modelo formal que predice las variables observadas a partir de factores latentes teóricos. El ACP está destinado a maximizar la varianza total para buscar patrones distinguibles, y el análisis factorial busca maximizar la varianza compartida para constructos o variables latentes.
Exercise 9.3
¿Debería aplicar PCA si mi conjunto de datos tiene variables categóricas?Podrías probar PCA, pero yo sería muy cuidadoso, porque los valores categóricos pueden tener altas variaciones de forma predeterminada y, por lo general, serán inestables a la inversión de la matriz. Aplica ACP y realiza una validación cruzada para ver si el ACP puede generalizar mejor que los datos reales. Si es así, entonces ACP es bueno para el modelo. (Nuestra matriz de entrenamiento es numéricamente estable). Sin embargo, estoy seguro de que en la mayoría de los casos, ACP no funciona bien en conjuntos de datos que solo contienen datos categóricos. El ACP sin más está diseñado en base a capturar la covarianza en variables continuas. Hay otros métodos de reducción de datos que puedes intentar para comprimir los datos, como análisis de correspondencia múltiple y ACP categórico, etc.
Exercise 9.4
¿Cuál es el mejor recurso adicional aprender sobre ACP?Mira este video que tiene una explicación asombrosa del ACP y lo estudia en más profundidad.
9.1.2 PCA en Python
Exercise 9.5
¿Qué hacefit_transform
aquí? ¿Por qué aplicamos fit_transform al conjunto de entrenamiento y solo transformamos el conjunto de prueba?
En el método fit_transform
hay ajuste y transformación.
La parte de ajuste se utiliza para analizar los datos sobre los que aplicamos el objeto (obteniendo los valores propios y los vectores propios de la matriz de covarianza, etc.) con el fin de obtener la información requerida para aplicar la transformación ACP, es decir, extrayendo algunos características principales que explican al máximo la variación.
Luego, una vez que el objeto obtiene esta información gracias al método de ajuste, la parte de transformación se usa para aplicar la transformación del ACP.
Y dado que el conjunto de prueba y el conjunto de entrenamiento tienen estructuras muy similares, no necesitamos crear un nuevo objeto que ajustemos al conjunto de prueba y luego usarlo para transformar el conjunto de prueba, podemos usar directamente el objeto ya creado y ajustado. al equipo de entrenamiento, para transformar el conjunto de prueba.
Exercise 9.6
¿Cómo averigua cuáles de las variables independientes son los 2 componentes principales?Exercise 9.7 PCA es una técnica de extracción de características, por lo que los componentes no son una de las variables independientes originales. Estos son nuevos, como una especie de transformación de los originales. \ Es solo con la selección de características que terminas con una de las variables independientes originales, como con Eliminación hacia atrás.
Exercise 9.8
¿Es mejor utilizar la extracción de características o la selección de características, o ambas? En caso de ser ambos, ¿en qué orden?La extracción de características y la selección de características son dos excelentes técnicas de reducción de dimensionalidad y, por lo tanto, siempre debe considerar ambas.
Lo que recomiendo es hacer primero la selección de características para mantener solo las características relevantes, y luego aplicar la extracción de características en estas características relevantes seleccionadas para reducir aún más la dimensionalidad de su conjunto de datos mientras mantiene suficiente variación.
Exercise 9.9
¿Cuánta razón de varianza total necesitamos usar? ¿Existe algún umbral para una buena relación de varianza total?Generalmente, un buen umbral es del 50%. Pero el 60% es más recomendable.
Exercise 9.10
¿Es más común usar exactamente 2 variables independientes para construir un clasificador, o la gente suele usar más que eso?En general, la gente simplemente extrae una serie de variables independientes que explican una proporción suficiente de la varianza (normalmente el 60%). Entonces no siempre son dos. Puede ser más. Y si son dos eso es genial porque entonces puedes visualizar mejor.
Exercise 9.11
¿Existe un método o atributo de Python que pueda ayudar a proporcionar los componentes subyacentes y los signos de los dos componentes principales PC1 y PC2?Puedes acceder a ellos con components_ attributes:
components = pca.components_
9.1.3 PCA en R
Exercise 9.12
Si quisiera ver los valores reales de todas las columnas, ¿cómo desescalaría los datos que se presentaron escalados?Digamos que el vector escalado era y_train
, luego, para cambiar la escala de su resultado y_pred
, haga lo siguiente:
y_pred_unscaled = y_pred*attr(y_train,'scaled:scale') + attr(y_train, 'scaled:center')
Exercise 9.13
¿Cómo puedo ver los componentes principales en R?Puedes ejecutar el siguiente código:
pca$rotation
Exercise 9.14
Tenemos una precisión del 100%, ¿no deberíamos preocuparnos por el sobreajuste?Si observamos los datos, veremos que es casi perfectamente separable por las 3 líneas dibujadas, lo que significa que la separabilidad es una característica de los datos más que un problema de sobreajuste. Si tuvieramos algo así como 50 líneas y una precisión del 100% (es decir, cada sección capturaría precisamente una pequeña cantidad de puntos, lo que garantiza que estén correctamente clasificados), entonces probablemente sería un problema de sobreajuste, pero aquí claramente no es el caso. Además, obtuvimos una precisión del 100% solo en el conjunto de prueba. Hubo algunos puntos mal clasificados en el conjunto de entrenamiento. Y el sobreajuste es más bien lo contrario: una precisión casi perfecta en el conjunto de entrenamiento y una deficiente en el conjunto de prueba.
Exercise 9.15
¿Cómo podemos saber cuáles son las dos variables que se toman para la representación gráfica?Las dos variables no se encuentran entre sus variables independientes originales, ya que fueron extraídas (Extracción de características), en lugar de ser seleccionadas (Selección de características). Las dos nuevas variables son las direcciones donde hay mayor variación, es decir, las direcciones donde los datos están más dispersos.
9.2 Análisis Discrimiante Lineal (LDA)
9.2.1 Intuición del LDA
Exercise 9.16
¿Podrías explicar de una manera más sencilla la diferencia entre PCA y LDA?Una forma sencilla de ver la diferencia entre PCA y LDA es que PCA trata todo el conjunto de datos como un todo, mientras que LDA intenta modelar las diferencias entre clases dentro de los datos. Además, PCA extrae algunos componentes que explican más la variación, mientras que LDA extrae algunos componentes que maximizan la separabilidad de clases.
Exercise 9.17
¿Selección de características o extracción de características?Preferirías elegir la selección de características si deseas mantener toda la interpretación de tu problema, el conjunto de datos y los resultados de su modelo. Pero si no te importa la interpretación y solo deseas obtener predicciones precisas, puedes probar ambos, por separado o juntos, y comparar los resultados de rendimiento. Entonces, sí, la selección de características y la extracción de características se pueden aplicar simultáneamente en un problema dado.
Exercise 9.18
¿Podemos usar LDA para la regresión?LDA es análisis discriminante lineal. Es una generalización del discriminante lineal de Fisher, un método utilizado en estadística, reconocimiento de patrones y aprendizaje automático para encontrar una combinación lineal de características que caracteriza o separa dos o más clases de objetos o eventos. La combinación resultante puede usarse como clasificador lineal o, más comúnmente, para la reducción de dimensionalidad antes de una clasificación posterior. Sin embargo, para la regresión, tenemos que usar ANOVA, una variación de LDA. LDA también está estrechamente relacionado con el análisis de componentes principales (PCA) y el análisis factorial, ya que ambos buscan combinaciones lineales de variables que expliquen mejor los datos. LDA intenta explícitamente modelar la diferencia entre las clases de datos. La PCA, por otro lado, no tiene en cuenta ninguna diferencia de clase, y el análisis factorial construye las combinaciones de características basadas en diferencias en lugar de similitudes. El análisis discriminante también se diferencia del análisis factorial en que no es una técnica de interdependencia: se debe hacer una distinción entre variables independientes y variables dependientes (también llamadas variables de criterio). LDA funciona cuando las mediciones realizadas en variables independientes para cada observación son cantidades continuas. Cuando se trata de variables independientes categóricas, la técnica equivalente es el análisis de correspondencia discriminante.
9.2.2 LDA en Python
Exercise 9.19
¿Qué variables independientes se encuentran después de aplicar LDA?Las dos variables independientes que vemos, indexadas por 0 y 1, son nuevas variables independientes que no se encuentran entre sus 12 variables independientes originales. Estas son variables independientes totalmente nuevas que se extrajeron a través de LDA, y es por eso que llamamos Extracción de características de LDA, en lugar de Selección de características, donde matenemos algunas de las variables independientes originales.
Exercise 9.20
¿Cómo decidir el parámetro LDAn_component
para encontrar el resultado más preciso?
Podemos ejecutar:
LDA(n\_components = None)
y debería darnod automáticamente los n_components
ideales.
Exercise 9.21
¿Cómo puedo obtener los dos discriminantes lineales LD1 y LD2 en Python?Puedes obtenerlos ejecutando la siguiente línea de código:
lda.scalings_
9.2.3 LDA en R
Exercise 9.22
¿Cómo puedo obtener los dos discriminantes lineales LD1 y LD2 en R?Puedes obtenerlos ejecutando la siguiente línea de código:
lda$scaling
Exercise 9.23
No entiendo por qué la versión R de LDA eligió 2 variables independientes automáticamente.Porque en R, cuando tienes \(k\) clases, \(k-1\) es igual al número de discriminantes lineales que obtienes.
Exercise 9.24
¿Por qué obtenemos una matriz en LDA pero obtuvimos un marco de datos en PCA, aunque el procedimiento es similar?Esto se debe simplemente a una diferencia en el formato que proporciona la función como salida. Estos procedimientos son similares independientemente del formato de salida.
9.3 Kernel ACP
9.3.1 Intuición del Kernel ACP
Exercise 9.25
¿Debería utilizarse Kernel ACP para convertir datos separables no linealmente en datos separables linealmente?Así es, pero no es necesario utilizar Kernel ACP con un clasificador no lineal, ya que los datos serán linealmente separables después de aplicar Kernel ACP y, por lo tanto, un clasificador lineal será suficiente.
Exercise 9.26
¿Cuándo deberíamos usar ACP vs Kernel ACP?Deberías comenzar con ACP. Luego, si obtiene malos resultados, prueba Kernel ACP.
9.3.2 Kernel PCA en Python
Exercise 9.27
¿Cómo sé si mis datos son linealmente separables o no?Un buen truco es entrenar primero un modelo de regresión logística. Si obtenemos una precisión realmente buena, debería ser (casi) linealmente separable.
Exercise 9.28
¿Existe una gran diferencia y qué es mejor usar entre Kernel ACP + SVM vs ACP + Kernel SVM?Sí, hay una diferencia. Utilizamos Kernel PCA + SVM cuando necesitamos transformar los datos en una variedad no lineal de baja dimensión donde los puntos son separables. Utilizamos PCA + Kernel SVM cuando necesitamos transformar los datos a través de una transformación lineal en una variedad de baja dimensión, utilizando estos puntos para transformarlos en un espacio no lineal donde son separables.
Exercise 9.29
¿Cómo decidimos qué kernel es mejor para Kernel ACP?El RBF Kernel es un gran kernel y es la mejor opción en general. Pero la mejor manera de averiguar qué kernel necesitamos aplicar es hacer algunos ajustes de parámetros con Grid Search y k-Fold Cross Validation. Lo veremos en la Parte 10 - Selección del modelo.