Aprendizaje del algoritmo PCA

introducir

El análisis de componentes principales (Análisis de componentes principales, denominado PCA) es uno de los métodos de reducción de dimensionalidad más importantes. Tiene una amplia gama de aplicaciones en los campos de la compresión de datos para eliminar la redundancia y la eliminación del ruido de datos. En términos generales, el algoritmo en el que es más fácil pensar cuando mencionamos la reducción de dimensionalidad es PCA. El algoritmo PCA se utiliza principalmente para (1) la exploración y visualización de conjuntos de datos de alta dimensión. 2) Compresión de datos. 3) Preprocesamiento de datos. 4) Análisis y procesamiento de imágenes, voces y comunicaciones. 5) Reducción de la dimensionalidad (lo más importante) para eliminar la redundancia de datos y el ruido.

1 La idea de PCA

PCA, como su nombre indica, es encontrar los aspectos más importantes de los datos y reemplazar los datos originales con los aspectos más importantes de los datos. Específicamente, si nuestro conjunto de datos es n-dimensional, hay m datos en total. Esperamos reducir la dimensión de estos datos m de dimensión n a dimensión n', y esperamos que estos conjuntos de datos de dimensión m n' representen el conjunto de datos original tanto como sea posible. Sabemos que definitivamente habrá una pérdida al reducir los datos de n dimensiones a n' dimensiones, pero queremos que la pérdida sea lo más pequeña posible. Entonces, ¿cómo hacer que estos datos n-dimensionales representen los datos originales tanto como sea posible?

PCA esencialmente toma la dirección con la varianza más grande como característica principal y "descorrelaciona" los datos en cada dirección ortogonal, es decir, los hace no correlacionados en diferentes direcciones ortogonales. Los datos se convierten del sistema de coordenadas original al nuevo sistema de coordenadas, y la elección del nuevo sistema de coordenadas está determinada por los propios datos. El primer eje nuevo selecciona la dirección con la mayor variación en los datos originales, y el segundo eje nuevo selecciona la dirección que es ortogonal al primer eje y tiene la mayor variación. Este proceso se repite para el número de características en los datos originales. Encontraremos que la mayor parte de la varianza está contenida en los primeros ejes nuevos. Por lo tanto, podemos ignorar los ejes restantes, es decir, reducir la dimensionalidad de los datos.inserte la descripción de la imagen aquí inserte la descripción de la imagen aquíinserte la descripción de la imagen aquí

2 El flujo del algoritmo de PCA

  1. Despromedio, es decir, restando los respectivos promedios de cada característica;
  2. Calcular la matriz de covarianza;
  3. Calcule los valores propios y los vectores propios de la matriz de covarianza;
  4. Ordenar los valores propios de mayor a menor;
  5. Mantenga los vectores propios más grandes;
  6. Transforme los datos en un nuevo espacio construido a partir de vectores propios.

3 El proceso general de implementación del algoritmo PCA:     

  1. normalizar los datos;
  2. Calcule la matriz de covarianza del conjunto de datos normalizado;
  3. Calcule los valores propios y los vectores propios de la matriz de covarianza;
  4. Mantenga las características k más importantes (generalmente k es menor que n);
  5. Encuentre los vectores propios correspondientes a los k valores propios
  6. Multiplique el conjunto de datos m * n por el vector de características (n * k) de k vectores de características n-dimensionales para obtener los datos de reducción de dimensión finales.

Criterio de reducción de dimensionalidad PCA:

  1. Reconstrucción más cercana: para todos los puntos del conjunto de muestra, la suma de los errores entre los puntos reconstruidos y los puntos originales es la más pequeña.
  2. Máxima separabilidad: Las proyecciones de muestras en espacios de baja dimensión están lo más separadas posible.

Ventajas del algoritmo PCA:

  1. Hacer que el conjunto de datos sea más fácil de usar;
  2. Reducir el costo computacional del algoritmo;
  3. eliminar el ruido;
  4. hacer que los resultados sean fáciles de entender;
  5. Parámetros completamente ilimitados.

Desventajas del algoritmo PCA:

  1. Si el usuario tiene un cierto conocimiento previo del objeto de observación y domina algunas características de los datos, pero no puede intervenir en el proceso de procesamiento a través de la parametrización y otros métodos, es posible que no se obtenga el efecto esperado y la eficiencia no sea alta;
  2. La descomposición de valores propios tiene algunas limitaciones, como que la matriz transformada debe ser una matriz cuadrada;
  3. En el caso de distribuciones no gaussianas, los pivotes derivados del método PCA pueden no ser óptimos.

Núcleo del algoritmo

# 定义PCA算法
def PCA(data, r):
    data = np.float32(np.mat(data))
    rows, cols = np.shape(data)
    data_mean = np.mean(data, 0)  # 对列求平均值
    A = data - np.tile(data_mean, (rows, 1))  # 将所有样例减去对应均值得到A
    C = A * A.T  # 得到协方差矩阵
    D, V = np.linalg.eig(C)  # 求协方差矩阵的特征值和特征向量
    V_r = V[:, 0:r]  # 按列取前r个特征向量
    V_r = A.T * V_r  # 小矩阵特征向量向大矩阵特征向量过渡
    for i in range(r):
        V_r[:, i] = V_r[:, i] / np.linalg.norm(V_r[:, i])  # 特征向量归一化

    final_data = A * V_r
    return final_data, data_mean, V_r
复制代码

Referirse a

zhuanlan.zhihu.com/p/33191810

Supongo que te gusta

Origin juejin.im/post/7078504048038527012
Recomendado
Clasificación