Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python

introduction

Lors de l'analyse des données d'ondes cérébrales (EEG) et d'encéphalogrammes (MEG) dans la recherche, nous avons décidé d'utiliser PCA et ICA pour décomposer les composants de l'activité cérébrale et analyser les résultats de la réduction de dimension en tant que quantités de caractéristiques. Pour être honnête, je ne suis pas sûr du contexte mathématique, mais pour le moment, j'ai résumé l'APC et l'ICA des données de séries chronologiques sous forme de mémorandum sur la base de la mise en œuvre.

Analyse en composantes principales (ACP) et analyse en composantes indépendantes (ICA)

Qu'est-ce que le PCA

Wikipédia Que,

En d'autres termes ** Lorsqu'on peut supposer que les données suivent une distribution normale, la méthode consistant à prendre l'axe dans la direction orthogonale dans l'ordre à partir de la composante avec la plus grande dispersion Puisque les bases sont orthogonales, les sorties sont des données non corrélées entre elles (il n'y a pas de relation linéaire, mais il peut y avoir une relation non linéaire) **

Qu'est-ce que l'ICA

[Wikipédia](https://ja.wikipedia.org/wiki/%E7%8B%AC%E7%AB%8B%E6%88%90%E5%88%86%E5%88%86%E6%9E À partir de% 90, "Wikipédia")

En d'autres termes ** Une méthode qui s'axe dans le sens de l'indépendance maximale quand on peut supposer que les données sont statistiquement indépendantes et ne suivent pas une distribution normale. La sortie sera des données indépendantes qui ne suivent pas une distribution normale (pas de relations linéaires ou non linéaires) **

Différence entre PCA et ICA (image)

PCAとICA (Référence http://meg.aalip.jp/ICA/)

Implémentation PCA

PCA.py


import numpy as np
import matplotlib.pyplot as plt

from sklearn.decomposition import PCA
X = input_data #400 (nombre de données) x 300 (série chronologique) données

#Exécutez PCA
pca = PCA(n_components=20, random_state=0)#Faire 20 bases (composants)
feature = pca.fit_transform(X)
PCA_comp =  pca.components_ #Matrice de base

#Restaurer les 0èmes données en utilisant 20 composants
plt.figure(figsize = (12, 2))
plt.plot(X[0], label="data")#0ème donnée
plt.plot(np.dot(feature[0], PCA_comp).T, label="reconstruct")#0ème donnée restaurée
plt.legend()

PCA_fig.png

Implémentation ICA

ICA.py


import numpy as np
import matplotlib.pyplot as plt

from sklearn.decomposition import FastICA
X = input_data #400 (nombre de données) x 300 (série chronologique) données

#Mise en œuvre de l'ICA
ICA = FastICA(n_components=20, random_state=0)#Faire 20 bases (composants)
X_transformed = ICA.fit_transform(X)
A_ =  ICA.mixing_.T #Matrice mixte

#Restaurer les 0èmes données en utilisant 20 composants
plt.figure(figsize = (12, 2))
plt.plot(X[0], label="data")#0ème donnée
plt.plot(np.dot(X_transformed[0], A_), label="reconstruct")#0ème donnée restaurée
plt.legend()

ICA_fig.png

en conclusion

Cette fois, j'ai résumé le PCA et l'ICA dans un mémorandum. Je pensais que ce serait bien parce que j'ai pu l'implémenter pour le moment, mais je pense que j'ai besoin d'acquérir plus de connaissances théoriques pour l'avenir. Je voudrais ajouter à propos de NMF (Non-Negative Matrix Factor Decomposition).

référence

Méthode de réduction de dimension (résumé et mise en œuvre) PCA, LSI (SVD), LDA, ICA

Recommended Posts

Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python
Analyse en composantes principales (Analyse en composantes principales: ACP)
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
[Python] Comparaison de la théorie de l'analyse des composants principaux et de l'implémentation par Python (PCA, Kernel PCA, 2DPCA)
Python: apprentissage non supervisé: analyse principale
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Visualisez la matrice de corrélation par l'analyse des composants principaux avec Python
Ceci et cela de l'analyse en composantes principales
Compression dimensionnelle par auto-encodeur et analyse des composants principaux
Reconnaître le contour et la direction d'un objet façonné avec OpenCV3 et Python3 (analyse des composants principaux: PCA, vecteur propre)
Analyse d'association en Python
Analyse de régression avec Python
Filtrage coordonné avec analyse des composants principaux et clustering K-means
Fusion de la mise en œuvre du tri / analyse du montant du calcul et de l'expérimentation en Python
Clustering et analyse en composantes principales par méthode K-means (débutant)
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
Analyse des contraintes symétriques axiales avec Python
Apprendre sans enseignant 3 Analyse des principales composantes
Mise en œuvre d'une analyse de composants indépendante
Pile et file d'attente en Python
Analyse de régression simple avec Python
Unittest et CI en Python
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
[Python] Comment faire PCA avec Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Première analyse de régression simple en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
[Python] PCA scratch dans l'exemple de "Introduction à la méthode d'analyse multivariée"
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Affectations et modifications des objets Python
Analyse des composants principaux avec Spark ML
Vérifiez et déplacez le répertoire en Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Hashing de données en R et Python
Synthèse de fonctions et application en Python
Exporter et exporter des fichiers en Python
Analyse du squelette planaire dans Python (2) Hotfix
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Analyse des données: application facile des statistiques descriptives et des statistiques d'estimation aux données CSV en Python
Chevauchement d'expressions régulières en Python et Java
Différence d'authenticité entre Python et JavaScript
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Les modules et packages en Python sont des "espaces de noms"
Évitez les boucles imbriquées en PHP et Python
Analyse des composants principaux avec le corpus d'actualités Livedoor - Pratique--
Différences entre Ruby et Python dans la portée
Modulation et démodulation AM avec Python Partie 2
différence entre les instructions (instructions) et les expressions (expressions) en Python
Module d'implémentation de file d'attente et Python "deque"