Hauptkomponentenanalyse (PCA) und unabhängige Komponentenanalyse (ICA) mit Python

Einführung

Bei der Analyse von Gehirnwellen- (EEG) und Enzephalogrammdaten (MEG) in der Forschung haben wir uns entschieden, PCA und ICA zu verwenden, um die Komponenten der Gehirnaktivität zu zerlegen und die Ergebnisse der Dimensionsreduktion als Merkmalsgrößen zu analysieren. Um ehrlich zu sein, bin ich mir über den mathematischen Hintergrund nicht sicher, aber vorerst habe ich die PCA und ICA von Zeitreihendaten als Memorandum auf Implementierungsbasis zusammengefasst.

Hauptkomponentenanalyse (PCA) und unabhängige Komponentenanalyse (ICA)

Was ist PCA?

Wikipedia Als,

Mit anderen Worten ** Wenn davon ausgegangen werden kann, dass die Daten einer Normalverteilung folgen, die Methode, die Achse in orthogonaler Richtung in der Reihenfolge von der Komponente mit der größten Streuung zu nehmen Da die Basen orthogonal sind, sind die Ausgaben nicht korrelierte Daten miteinander (es gibt keine lineare Beziehung, aber möglicherweise eine nichtlineare Beziehung) **

Was ist ICA?

[Wikipedia](https://ja.wikipedia.org/wiki/%E7%8B%AC%E7%AB%8B%E6%88%90%E5%88%86%E5%88%86%E6%9E Ab% 90 "Wikipedia")

Mit anderen Worten ** Eine Methode, die in Richtung maximaler Unabhängigkeit zeigt, wenn davon ausgegangen werden kann, dass die Daten statistisch unabhängig sind und keiner Normalverteilung folgen. Die Ausgabe besteht aus unabhängigen Daten, die keiner Normalverteilung folgen (keine linearen oder nichtlinearen Beziehungen) **

Unterschied zwischen PCA und ICA (Bild)

PCAとICA (Referenz http://meg.aalip.jp/ICA/)

PCA-Implementierung

PCA.py


import numpy as np
import matplotlib.pyplot as plt

from sklearn.decomposition import PCA
X = input_data #400 (Anzahl der Daten) x 300 (Zeitreihen) Daten

#Führen Sie PCA aus
pca = PCA(n_components=20, random_state=0)#Bilden Sie 20 Basen (Komponenten)
feature = pca.fit_transform(X)
PCA_comp =  pca.components_ #Basismatrix

#Stellen Sie die 0. Daten mit 20 Komponenten wieder her
plt.figure(figsize = (12, 2))
plt.plot(X[0], label="data")#0. Daten
plt.plot(np.dot(feature[0], PCA_comp).T, label="reconstruct")#Wiederhergestellte 0. Daten
plt.legend()

PCA_fig.png

ICA-Implementierung

ICA.py


import numpy as np
import matplotlib.pyplot as plt

from sklearn.decomposition import FastICA
X = input_data #400 (Anzahl der Daten) x 300 (Zeitreihen) Daten

#Implementierung von ICA
ICA = FastICA(n_components=20, random_state=0)#Bilden Sie 20 Basen (Komponenten)
X_transformed = ICA.fit_transform(X)
A_ =  ICA.mixing_.T #Gemischte Matrix

#Stellen Sie die 0. Daten mit 20 Komponenten wieder her
plt.figure(figsize = (12, 2))
plt.plot(X[0], label="data")#0. Daten
plt.plot(np.dot(X_transformed[0], A_), label="reconstruct")#Wiederhergestellte 0. Daten
plt.legend()

ICA_fig.png

abschließend

Dieses Mal habe ich PCA und ICA als Memorandum zusammengefasst. Ich dachte, es wäre in Ordnung, weil ich es vorerst implementieren konnte, aber ich denke, ich muss mehr theoretisches Wissen für die Zukunft erwerben. Ich möchte etwas über NMF (Non-Negative Matrix Factor Decomposition) hinzufügen.

Referenz

Dimensionsreduktionsmethode (Zusammenfassung und Implementierung) PCA, LSI (SVD), LDA, ICA

Recommended Posts

Hauptkomponentenanalyse (PCA) und unabhängige Komponentenanalyse (ICA) mit Python
Hauptkomponentenanalyse (Hauptkomponentenanalyse: PCA)
2. Multivariate Analyse in Python 3-2. Hauptkomponentenanalyse (Algorithmus)
2. Multivariate Analyse in Python 3-1. Hauptkomponentenanalyse (Scikit-Learn)
[Python] Vergleich der Theorie und Implementierung der Hauptkomponentenanalyse durch Python (PCA, Kernel PCA, 2DPCA)
Coursera-Herausforderungen für maschinelles Lernen in Python: ex7-2 (Primäranalyse)
Visualisieren Sie die Korrelationsmatrix durch Hauptkomponentenanalyse mit Python
Dies und das der Hauptkomponentenanalyse
Dimensionskomprimierung durch Selbstcodierer- und Hauptkomponentenanalyse
Erkennen Sie die Kontur und Richtung eines geformten Objekts mit OpenCV3 und Python3 (Hauptkomponentenanalyse: PCA, Eigenvektor)
Assoziationsanalyse in Python
Regressionsanalyse mit Python
Koordinierte Filterung mit Hauptkomponentenanalyse und K-Mittel-Clustering
Führen Sie die Sortierimplementierung / Berechnungsmengenanalyse zusammen und experimentieren Sie in Python
Clustering und Hauptkomponentenanalyse nach der K-Means-Methode (Anfänger)
Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 2
Hauptkomponentenanalyse Analysieren Sie handschriftliche Zahlen mit PCA. Teil 1
Axialsymmetrische Spannungsanalyse mit Python
Lernen ohne Lehrer 3 Hauptkomponentenanalyse
Implementierung einer unabhängigen Komponentenanalyse
Stapel und Warteschlange in Python
Einfache Regressionsanalyse mit Python
Unittest und CI in Python
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
[Python] Wie man PCA mit Python macht
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Erste einfache Regressionsanalyse in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
Einführung in die Python-Grundlagen des maschinellen Lernens (unbeaufsichtigtes Lernen / Hauptanalyse)
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Zuweisungen und Änderungen in Python-Objekten
Hauptkomponentenanalyse mit Spark ML
Überprüfen und verschieben Sie das Verzeichnis in Python
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hashing von Daten in R und Python
Funktionssynthese und Anwendung in Python
Exportieren und Ausgeben von Dateien in Python
Planare Skelettanalyse in Python (2) Hotfix
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
Datenanalyse: Einfache Anwendung deskriptiver Statistiken und Schätzungsstatistiken auf CSV-Daten in Python
Überlappende reguläre Ausdrücke in Python und Java
Unterschied in der Authentizität zwischen Python und JavaScript
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Vermeiden Sie verschachtelte Schleifen in PHP und Python
Hauptkomponentenanalyse mit Livedoor News Corpus --Practice--
Unterschiede zwischen Ruby und Python im Umfang
AM-Modulation und Demodulation mit Python Part 2
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Warteschlangen- und Python-Implementierungsmodul "deque"