[PYTHON] Apprendre sans enseignant 3 Analyse des principales composantes

Aidemy 2020/10/29

introduction

Bonjour, c'est Yope! Bien que ce soit un système littéraire croustillant, j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le troisième poste de l'apprentissage non supervisé. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ À propos de l'analyse des composants principaux ・ À propos de l'analyse des composants principaux du noyau

Analyse des composants principaux

À propos de l'analyse des composants principaux

-__ L'analyse en composantes principales __ est l'une des méthodes pour représenter les données d'origine à partir des plus petites données , c'est-à-dire pour résumer (compresser) les données. ・ Lors de l'analyse des composantes principales, __ "axe qui peut expliquer efficacement toutes les données (premier axe de la composante principale)" __ et __ "axes qui peuvent expliquer efficacement les données qui ne peuvent pas être expliquées par elles-mêmes (deuxième axe principal) Axe du composant) ” est créé. -En utilisant uniquement le premier composant principal de ces __, les données supplémentaires peuvent être supprimées et les données peuvent être compressées. -Si vous utilisez l'analyse des composants principaux, vous pouvez également réduire __ dimensions, de sorte que vous pouvez déposer les données en deux ou trois dimensions et les visualiser, ou les utiliser pour l'analyse de régression.

Flux d'analyse des composants principaux (vue d'ensemble)

① Les données X sont standardisées. (2) Calculez la __ matrice de corrélation __ entre les caractéristiques. (3) Trouvez la __ valeur unique et le vecteur propre __ de la matrice de corrélation. (4) Sélectionnez k (k = nombre de dimensions à compresser) dans celui avec la plus grande valeur propre, et sélectionnez le vecteur propre correspondant. ⑤ Créez la matrice de conversion feature W à partir des k vecteurs propres sélectionnés. (6) Calculer le produit des données X et de la matrice W, et obtenir les données X 'converties en k-dimensions. (Fin)

Analyse des composants principaux ① Standardisation

-La normalisation consiste à convertir chaque caractéristique de __ données de sorte que la moyenne soit de 0 et la variance de 1. -En normalisant, les données avec différentes unités et normes peuvent être traitées de la même manière.

-La normalisation est effectuée comme suit. (Différence entre les données et la moyenne) ÷ écart type X = (X - X.mean(axis=0))/X.std(axis=0)

Analyse en composantes principales ② Matrice de corrélation

-__ La matrice de corrélation__ est une matrice dans laquelle k × k coefficients de corrélation entre chaque donnée d'entité sont collectés. __ Le coefficient de corrélation __ représente la force de la relation linéaire entre __2 données, et plus il est proche de 1, plus la tendance de a à être une fonction linéaire positive est forte, c'est-à-dire __ corrélation positive On peut dire que _ est fort, et plus il est proche de -1, plus la tendance d'une fonction du premier ordre à être négative est forte, c'est-à-dire plus forte est la __ corrélation négative __. ・ Lorsque le coefficient de corrélation est proche de 0, cela indique qu'il n'y a pas beaucoup de tendance linéaire.

-Le calcul de la matrice de corrélation R est effectué comme suit. R = np.corrcoef(X.T)

-Les données transférées X.T sont passées à np.corrcoef (), qui exécute la matrice de corrélation, car si elle est passée en tant que X, la matrice de corrélation des données elles-mêmes (lignes) sera calculée. Est. Cette fois, je veux calculer la matrice de corrélation de __ "données caractéristiques (colonnes)", donc dans un tel cas, il faut la transposer.

Analyse en composantes principales ③ Valeur unique et vecteur unique

-La matrice de corrélation R obtenue en (2) est décomposée en __ valeur unique __ et __ vecteur unique __ lorsque __ décomposition en valeur propre __ est effectuée. Chacun de ces deux est décomposé par le même nombre de dimensions que la matrice. -Le vecteur propre indique que l'information est concentrée dans cette direction dans la __matrix R, et la valeur propre indique le degré de concentration __.

-La décomposition des valeurs propres peut être obtenue comme suit. Les valeurs propres sont stockées dans la variable eigvals, et les vecteurs propres sont stockés dans eigvecs dans l'ordre croissant. eigvals, eigvecs = np.linalg.eigh(R)

Analyse des composants principaux ④ ⑤ ⑥ Conversion de fonctionnalités

-Ici, nous allons examiner la procédure de conversion de la dimension des données en une dimension k arbitraire. -Convertir en utilisant k des plus grandes valeurs propres décomposées en ③ (④). Plus précisément, la matrice de conversion feature W est créée en concaténant les vecteurs propres correspondant à chacune de ces k valeurs propres (⑤). Enfin, en multipliant ce W par les données X, les données X 'converties en k dimension peuvent être obtenues (⑥).

-La méthode de création de la matrice de conversion W est la suivante. (Si vous souhaitez convertir en 2D) W = np.c[eigvecs[:,-1],eigvecs[:,-2]]_

-Le produit de X et W étant un "produit matriciel", il est calculé par __X.dot (W) __.

Effectuez facilement une analyse des composants principaux (1) à (6)

-L'analyse des composants principaux peut être effectuée par les étapes (1) à (6) ci-dessus, mais l'analyse des composants principaux peut être facilement effectuée en utilisant la classe scikit-learn appelée PCA.

・ Code![Capture d'écran 2020-10-29 12.26.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/9a9707d8-31fa-a2f8- 47b6-2ffde6aee689.png)

・ Code 2 (combinez 3 types de données sur le vin en 2 dimensions)![Screenshot 2020-10-29 12.29.05.png](https: //qiita-image-store.s3.ap-northeast-1. amazonaws.com/0/698700/4363f1c6-abbd-6a19-dd3f-25f58873b41c.png)

・ Résultat![Capture d'écran 2020-10-29 12.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/8baa658a-b482-d492- 1ebe-960dcf6b42da.png)

Analyse en composantes principales comme prétraitement pour l'analyse de régression

-Avant d'effectuer une analyse de régression à l'aide de LogisticRegression (), il est possible de créer un modèle plus polyvalent en effectuant une analyse des composants principaux et en compressant les données.

-Dans ce qui suit, la standardisation et l'analyse des composants principaux seront effectuées pour X_train et X_test, qui sont des données divisées. Utilisez la classe "StandardScaler" pour la normalisation et la classe PCA pour l'analyse des composants principaux. De plus, les données d'entraînement et les données de test sont traitées selon une norme commune. -Comme il est nécessaire de former les données de train, utilisez "fit_transform ()" et utilisez "transform ()" comme c'est le cas pour les données de test.

・ Code![Capture d'écran 2020-10-29 12.36.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/041bc221-3f6e-1675- 3ab2-5ee84508ee6e.png)

Analyse des composants principaux du noyau

Qu'est-ce que l'analyse des composants principaux du noyau?

・ L'apprentissage automatique tel que l'analyse de régression est basé sur la séparation linéaire, donc la séparation linéaire n'est pas possible. Les données ne peuvent pas être gérées, mais ces données peuvent être gérées à l'aide de __Kernel Principal Principle Analysis (Kernel PCA) __, qui convertit les données de séparation non linéaires en données linéarisables. .. -Dans le noyau PCA, les données N (nombre de données) x M (fonctionnalité) données sont recréées dans N x M'data K avec une nouvelle fonctionnalité M '. Cela s'appelle __Kernel Trick __ et K s'appelle __Kernel Matrix __. -Cette matrice de noyau K permet l'analyse des composants principaux.

À propos des astuces du noyau

-Pour effectuer une astuce du noyau, vous devez d'abord calculer la matrice du noyau K. Si les données d'origine sont N (nombre de données) x M (caractéristique), K est N x N. -La matrice du noyau est une matrice de la fonction __kernel __ qui calcule la "similarité pour chaque paire de données". -Il existe plusieurs types de cette fonction du noyau, mais cette fois nous allons regarder Gaussian kernel, qui est la fonction de base radiale (noyau). -Une des fonctions du noyau Le noyau gaussien peut être calculé comme suit.

#Calculer la distance euclidienne carrée entre les données
M = np.sum((X - X[:,np.newaxis])**2, axis=2)
#Calculer la matrice du noyau en utilisant M
K = np.exp(-gamma*M)

Analyse des composants principaux des données piégées par le noyau

-Comme mentionné ci-dessus, la matrice de noyau K obtenue en exécutant l'astuce du noyau peut effectuer une analyse en composantes principales. -En effectuant une analyse en composantes principales, il est possible de convertir les données X, qui étaient initialement non linéairement séparables, en données linéairement séparables X '.

・ Code![Capture d'écran 2020-10-29 12.38.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/06e6a936-b50b-98c2- d9e0-5c5c80514f44.png)

・ Résultat![Capture d'écran 2020-10-29 12.38.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/6d86ceb5-21ac-a9a8- aa8d-29176b572726.png)

Analyse facile des composants principaux du noyau

-Vous pouvez facilement effectuer une analyse des composants principaux du noyau en utilisant la classe scikit-learn appelée KernelPCA. -Pour les arguments, n_components indique le nombre de dimensions après compression, le noyau indique la fonction de base radiale (noyau) et gamma indique la valeur de "γ" utilisée pour calculer la matrice du noyau.

from sklearn.decomposition import KernelPCA
#Créer une instance KernelPCA et analyser les principaux composants
kpca = KernelPCA(n_components=2, kernel="rbf", gamma=15)
X_kpca = kpca.fit_transform(X)

Sommaire

-En compressant les données (__ réduction de dimension __) par __ analyse des composants principaux __, il est possible de dessiner sur un plan et d'améliorer la précision de l'analyse de régression. -L'analyse des composants principaux peut être facilement effectuée en appelant la classe __PCA __. -En convertissant les données à l'aide de la fonction de base radiale (noyau), il est possible d'effectuer une analyse en composantes principales sur des données qui ne peuvent pas être séparées linéairement. En conséquence, __ les données linéairement séparables deviennent linéairement séparables __ et l'apprentissage automatique devient possible. Cela s'appelle __ analyse des composants principaux du noyau __. -L'analyse des composants principaux du noyau peut être facilement effectuée en appelant la classe __KernelPCA __.

Cette fois, c'est fini. Merci d'avoir lu jusqu'au bout.

Recommended Posts

Apprendre sans enseignant 3 Analyse des principales composantes
Python: apprentissage non supervisé: analyse principale
Ceci et cela de l'analyse en composantes principales
<Cours> Machine learning Chapitre 4: Analyse des principaux composants
Analyse en composantes principales (Analyse en composantes principales: ACP)
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Reconnaissance faciale à l'aide de l'analyse des composants principaux
Analyse des composants principaux avec Spark ML
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Analyse des composants principaux avec le corpus d'actualités Livedoor - Pratique--
Apprendre sans enseignant 1 Principes de base
Analyse des composants principaux avec Livedoor News Corpus --Préparation--
Compression dimensionnelle par auto-encodeur et analyse des composants principaux
J'ai essayé d'analyser les principaux composants avec les données du Titanic!
PRML Chapitre 12 Mise en œuvre de l'analyse principale bayésienne Python
Python: apprentissage non supervisé: principes de base
Apprentissage non supervisé 2 clustering non hiérarchique
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
Filtrage coordonné avec analyse des composants principaux et clustering K-means
Clustering et analyse en composantes principales par méthode K-means (débutant)
Défiez l'analyse des composants principaux des données textuelles avec Python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2
Analyse des composants principaux à l'aide de python de nim avec nimpy
Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
Mise en œuvre d'une analyse de composants indépendante
Notes d'apprentissage sur l'analyse des données Python
Visualisez la matrice de corrélation par l'analyse des composants principaux avec Python
Analyse pratique des composants principaux avec PyCaret [Normalisation + visualisation (tracé)] Mémo
Python: apprentissage non supervisé: clustering non hiérarchique
[GWAS] Tracez les résultats de l'analyse en composantes principales (ACP) par PLINK
Traitement du langage 100 knock-85 (SVD tronqué): Compression dimensionnelle par analyse en composantes principales
Algorithme d'apprentissage automatique (analyse de régression unique)
Apprentissage automatique: analyse discriminante linéaire supervisée