Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

¿Qué es PCA?

15/18
Recursos

Aportes 23

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

  • La maldición de la dimensión: Esto dice que por cada variable que agrego en el conjunto de datos vamos a necesitar exponencialmente más muestras para poder tener la misma relevancia estadística.
  • Cuál es el autovector relacionado con el autovalor más grande? Es el autovalor quien define cual es la dirección que contiene más información.

Este video puede aportar mas luces sobre PCA:
https://www.youtube.com/watch?v=FgakZw6K1QQ

Hola a todos comenté cada una de las líneas, espero les sirva. Si tengo un error por favor corregirme. Un abrazo a todos

# PCA, es lograr reducir la dimensionalidad de nuestros datos perdiendo la menor cantidad de información posible. Para esto, lo que se hace es encontrar un vector que pueda capturar la mayor varianza de los datos y proyectarlos en él para reducir la dimensionalidad.

# Graficamos nuestros datos.
plt.plot(xy[:, 0], xy[:, 1], '.')
plt.show()

# Para partir, debemos centrar los datos en sus respectivos ejes.
# Esto lo hacemos restandoles su media.
# Buena práctica para simplificar el cómputo de los números.
# Aparte de lo anterior, veo que es porque en el siguiente paso
# obtenemos la matriz de covarianza, para obtener estas,
# necesitamos las distancias del dato hasta la media.
# y como ahora está centrado en la media, el valor del dato,,
# indica por si solo la distancia a la media.

xy_centrado = xy - np.mean(xy, axis=0)


# Graficamos nuestros datos centrados en la media.

plt.plot(xy_centrado[:, 0], xy_centrado[:, 1], '.')
plt.show()


# El siguiente paso es calcular nuestra matriz de covarianza
# y calcular sus autovectores y autovalores.
# la matriz de covarianza se resuelve así xy_centrado.T.dot(xy_centrado)
# falta dividirla por la cantidad de datos para obtener el promedio
# pero es un escalar y no nos afecta para obtener nuestros
# autovectores y autovalores, ya que obentemos un múltiplo del
# autovector, pero su dirección sigue siendo la misma.

autovalores, autovectores = np.linalg.eig(xy_centrado.T.dot(xy_centrado))
print(autovectores)

%run "../Funciones_auxiliares/graficarVectores.ipynb"


# Graficamos nuestros autovectores.
# juntos a los datos centrados en la media.

graficarVectores(autovectores.T, ['blue', 'red'])
plt.plot(xy_centrado[:, 0], xy_centrado[:, 1]/20, '.')
plt.show


# Vemos los autovalores.
# El autovalor mayor indica que el autovector asociado a este,
# captura la mayor varianza de los datos, 
# o sea la mayor cantidad de información, por lo que este
# es el autovector que debe ser elegido.
print(autovalores)


# luego de elegir debemos proyectar los datos perpendicularmente
# en el autovector, para esto podemos usar el producto punto.
# Lo que hace el profesor acá es proyectar los datos con cada
# autovector.
xy_nuevo = autovectores.T.dot(xy_centrado.T)



#Podemos ver acá que la nube de datos cambió y podemos ver que
# el eje y captura la mayor varianza, o sea la mayor información
# de los datos. Lo que calza con la elección de nuestro autovector.

plt.plot(xy_nuevo[0, :], xy_nuevo[1, :], '.')
plt.show()
  • Por cada variable que se agrega en el conjunto de datos vamos a necesitar exponencialmente más muestras para poder tener la misma relevancia estadística. En este sentido, se busca reducir las dimensionalidades haciendo que se capture la mayor cantidad de información.
  • Para buscar la dimensión que contenga la mayor cantidad de información se siguen los siguientes pasos:
  1. Centrar la información.
    xy_centrado = xy - np.mean(xy, axis = 0)

  2. Hallar los autovalores y autovectores de la información centralizada. autovalores, autovectores = np.linalg.eig(xy_centrado.T.dot(xy_centrado))

  3. Encontrar el autovalor de mayor valor. Este autovalor está asociado al autovector que contiene más información y es sobre esta dirección reescribiran los datos.

Recomiendo ver este video. El que hizo este video, hace un resumen de todos losconceptos necesarios para entender PCA. Si estás en este curso y en este punto, entenderás todo lo que dice.

En palabras sencillas el PCA es una técnica del análisis multivariado (estadística muy avanzada) que combina conceptos de álgebra lineal y estadistica y la finalidad de este método es REDUCIR, ojo!, no eliminar sino reducir la misma información de todas nuestras variables (dimensiones) a unas nuevas variables que les vamos a llamar componentes principales, y estas variables van a 1. explicar la misma información que las variables más fuertes o con más variabilidad 2. contener adicionalmente la mayor información posible de las otras dimensiones que no arrojen tanta información o no haya tanta correlación,
POR EJEMPLO
Observemos que en la imagen estamos en R3 es decir tenemos 3 dimensiones pero observamos que realmente la correlación y la mayor informacion se concentran mas en dos ciertas regiones donde se pueden obtener eigenvectores que describan la direccion de estos datos, PERFECTO esto va a ser nuestro nuevo eje un eje en R2 donde la información de la info de nuestra 3er dimension ahora se junto con las otras dos dimensiones para no estar en un plano R3 sino R2.
¿Se conserva el 100% de nuestra misma información original? NO, pero es útil si supongamos que realizamos una experimentación muy costosa en la que la tercera acción para nuestra encuesta no es muy relevante, un PCA antes de nos ayuda a ver cuales son LOS COMPONENTES PRINCIPALES por los que vale la pena enfocarnos.

La diferencia entre random.randn() y random.rand(), aquí tienen la respuesta:

https://stackoverflow.com/questions/47240308/differences-between-numpy-random-rand-vs-numpy-random-randn-in-python

reshape() : Esta función devuelve un nuevo array con los datos del array cedido como primer argumento y el nuevo tamaño indicado.

Primera vez que alguien se ensucia un poco las manos explicando seriamente que es un PCA. Lo siento realmente por aquellos que no tienen bases matemáticas fuertes. Les toca estudiar bastante

42: El sentido del universo.

Bien jugado en este capítulo profe.

En el examen final hay una pregunta relacionada con la normalizacion de los datos. Considero que el curso no menciona con claridad las razones de fondo para esta practica. Por lo mismo me gustaria compartir un pequegno articulo relacionado para que puedan adquirar ideas adicionales y llegar a nuevas conclusiones sobre este tema. 😉

https://medium.com/@urvashilluniya/why-data-normalization-is-necessary-for-machine-learning-models-681b65a05029

Realmente no me queda clara la clase, y es la primera en que me ocurre esto en este curso, en que punto del código terminamos encontrando d ? y cuándo aplicamos d.T.dot(d) = 1 ?, en dónde termina lo que pedía la traza de ciertas operaciones con d y una x que tampoco sabría cual fue en el código. Sólo entiendo que la meta era eliminar la variable que menos afectara los datos, y que esta fue la de la dirección del autovector que tenía el autovalor de menor peso.

No termine de entender lo que explica en el minuto 12:40, ¿Como es que determina que el autovalor más grande determina cual es el eje que contiene más información, si tanto -x- como -y- varían de igual manera?

help!!! . recomendaciones externas sobre este tema alguien ? . Esta clase si esta difícil .

Sabíamos de antemano que la respuesta a la vida, el universo y todo lo demás era: 42

Nota: Al aplicar PCA se estandariza nuestros datos para proyectar los datos originales en las direcciones que maximizan la varianza.

Si tienen dudas, con un poco de tiempo comprenderán sobre PCA. Dejo un aporte para que puedan leerlo.https://www.cienciadedatos.net/documentos/35_principal_component_analysis

Cuando preparamos nuestros datos para aplicar PCA es importante que estén entre [0,1] o [-1,1] y estandarizarlos porque:

Proyecta los datos originales en las direcciones que maximizan la varianza.

  • Cuál es el autovector relacionado con el autovalor más grande? Es el autovalor quien define cual es la dirección que contiene más información.

Genial!, esto debe tener muchas aplicaciones sobretodo para parametrizar datos, o para clasificación.

Qué es d?