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.
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) **
[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) **
(Référence http://meg.aalip.jp/ICA/)
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()
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()
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).
・ Méthode de réduction de dimension (résumé et mise en œuvre) PCA, LSI (SVD), LDA, ICA
Recommended Posts