[PYTHON] (Apprentissage automatique) J'ai appris l'analyse des composants principaux, qui est une méthode utile pour réduire un grand nombre de fonctionnalités + j'ai pensé à l'étendre à l'industrie manufacturière (en particulier la maintenance des équipements de machines)

introduction

Cette fois, je vais résumer une méthode appelée analyse en composantes principales. Cette analyse en composantes principales est une méthode d'analyse des données. Il est utilisé parce que c'est un moyen utile pour gérer le Big Data de nos jours. C'est aussi la base du ** concept d'auto-encodeur ** dans les réseaux de neurones comme le GAN. Voici la motivation pour moi d'étudier.

Les matériaux auxquels il est fait référence cette fois sont ici. ** Surtout dans le livre PRML, la description était polie, il était donc facile de suivre l'expansion de la formule et la compréhension a progressé. ** J'avais l'impression de comprendre la raison d'être un chef-d'œuvre.

  1. Sous reconnaissance de formes et apprentissage automatique (communément appelé PRML)

  2. Principal Component Analysis http://cda.psych.uiuc.edu/statistical_learning_course/Jolliffe%20I.%20Principal%20Component%20Analysis%20(2ed.,%20Springer,%202002)(518s)MVsa.pdf

  3. Ingénierie des fonctionnalités pour l'apprentissage automatique - Les principes et la pratique avec Python (O'Reilly)

Qu'est-ce que l'analyse en composantes principales?

L'analyse en composantes principales (communément appelée ACP) consiste à remplacer un grand nombre de variables ** par un petit nombre de nouvelles variables. ** Comme autre nom, il semble s'appeler conversion de Karhunen-Loeve.

Pour le dire un peu plus dans les manuels, il s'agit d'une projection orthogonale de points de données sur un espace linéaire de faible dimension appelé sous-espace principal. Et le but est de définir la distribution de ces données projetées à maximiser. Il peut également être défini comme minimisant la valeur attendue de la fonction de coût de projection, qui est définie par la moyenne des distances au carré entre les points de données et les points projetés. Ces deux idées sont équivalentes.

  1. Optimiser la distribution des données projetées (Hotelling, 1933)
  2. Minimiser la valeur attendue de la fonction de coût de projection (= minimiser la somme des carrés des résidus) (Pearson, 1901)

L'idée est brièvement présentée ci-dessous.

image.png

La maximisation de la dispersion de 1. est l'idée qui vient du désir d'exprimer dans une nouvelle dimension sans altérer la variation exprimée dans les données d'observation d'origine. Pour minimiser la valeur attendue de la fonction de coût en 2., il s'agit de trouver une dimension qui exprime l'erreur aussi petite que possible. Bien que 1 et 2 soient des expressions différentes, ils sont par conséquent synonymes.

Formulation en maximisant la dispersion

Considérons un ensemble de données observées dans la dimension $ D $ {$ \ bf x_n $} $ (n = 1,2, .... N) $. Le but de ce temps est de projeter les données dans l'espace de dimension $ M $ (<$ D ) tout en maximisant la dispersion des points de données projetés. Tout d'abord, considérons la projection sur un espace à une dimension ( D = 1 $).

Projection dans un espace unidimensionnel

La direction de cet espace unidimensionnel est représentée par un vecteur dimensionnel $ D $ $ \ bf u_1 $ (voir la figure ci-dessous).

Supposons maintenant que le vecteur $ \ bf u_1 $ soit le vecteur unitaire ($ \ bf {u_1 ^ T u_1} = 1 $). ** Ceci est une procédure prise pour l'importance de la direction définie et la facilité de calcul, pas la taille de $ u_1 $ elle-même. ** ** Ensuite, chaque point de données {$ \ bf x_n $} est projeté sur la valeur scalaire $ \ bf u_1 ^ Tx_n $. Maintenant, pour maximiser la distribution, soit $ \ bar {x_n} $ la valeur moyenne et continuez ci-dessous. La distribution des données projetées est

\begin{align}
&\frac{1}{n} \sum_{n=1}^{n} ||\mathbf{u_1}^T \mathbf{x_i} - \mathbf{u_1}^T \bar{\mathbf{x}}||^2 \\
= &\frac{1}{n} \sum_{n=1}^{n} ||\mathbf{u_1}^T (\mathbf{x_i} - \bar{\mathbf{x}})||^2 (Équation 1)\\
= &\frac{1}{n} \sum_{n=1}^{n} \bigl( \mathbf{u_1}^T (\mathbf{x_i} - \bar{\mathbf{x}}) \bigr) \bigl( (\mathbf{x_i} - \bar{\mathbf{x}})^T \mathbf{u_1} \bigr) \\
= &\mathbf{u_1}^T \bigl( \frac{1}{n} \sum_{n=1}^{n} (\mathbf{x_i} - \bar{\mathbf{x}}) (\mathbf{x_i} - \bar{\mathbf{x}})^T \bigr) \mathbf{u_1} \\
= &\mathbf{u_1}^T \mathbf{S} \mathbf{u_1} \\
\end{align}

Donné dans. Où $ S $ est une matrice de codistribution de données et est défini comme:

\frac{1}{n} \sum_{n=1}^{n} (\mathbf{x_i} - \bar{\mathbf{x}}) (\mathbf{x_i} - \bar{\mathbf{x}})^T = \mathbf{S}

Maintenant, la dispersion projetée\bf {u_1^T S u_1}À\bf u_1に対して最大化することÀ考えます。ここで先ほどの前提に関係しますが、||u_1||→∞となることÀ避ける必要があります。従って、\bf {u_1^T u_1}=1À前提À置く必要があるのです。 En considérant cette maximisation de la dispersion, nous appliquons la méthode du multiplicateur indéterminé de Lagrange. Dans cette méthode de multiplicateur indéterminé de Lagrange, en termes simples, il y a une fonction pour laquelle il est difficile de trouver la valeur maximale. Comme il est difficile de trouver directement la valeur maximale, définissez une nouvelle fonction qui correspond à la fonction que vous souhaitez rechercher et aux contraintes. Le but est de concevoir de telle sorte que la valeur minimale de la nouvelle fonction devienne la valeur maximale de la fonction d'origine. Par conséquent, la valeur maximale de la fonction d'origine peut être connue en trouvant la valeur minimale de la nouvelle fonction.

Maintenant, lorsque la méthode du multiplicateur indéterminé de Lagrange est réellement appliquée à la formule ci-dessus, $ \ lambda_1 $ est défini comme multiplicateur de Lagrange.

L(\mathbf{u_1}, \lambda_1) = \frac{1}{2} \mathbf{u_1}^T \mathbf{S} \mathbf{u_1} - \lambda_1 (\mathbf{u_1}^T \mathbf{u_1} - 1) 

Peut être exprimé comme. Pour trouver la valeur minimale de cette fonction, vous pouvez la trouver en la différenciant partiellement avec $ \ bf u_1 $ et en la définissant comme $ 0 $.

\frac{\partial L}{\partial \mathbf{u_1}} = \mathbf{S} \mathbf{u_1} - \lambda_1 \mathbf{u_1} = 0 \\
\mathbf{S} \mathbf{u_1} = \lambda_1 \mathbf{u_1} \ (Équation 1)\\ 

Peut être transformé avec. $ \ bf u_1 $ est

||\bf S -\lambda_1 I|| =0

Il peut être obtenu en résolvant l'équation matricielle de.

De plus, pour l'équation 1 ci-dessus, en multipliant $ \ bf u_1 ^ T $ à partir de la gauche et en appliquant $ \ bf {u_1 ^ T u_1} = 1 $, la variance sera

\mathbf{u_1}^T \mathbf{S} \mathbf{u_1}  = \lambda_1

Peut être demandé.

Par conséquent, nous pouvons voir que la variance est maximisée lorsque $ \ bf u_1 ^ T $ est sélectionné comme vecteur propre appartenant à la valeur propre maximale $ \ lambda_1 $. Ce vecteur propre est appelé le ** premier composant principal **.

Comment analyser les principaux composants de la mise en œuvre

Considérons maintenant l'analyse des composants principaux lors de la projection dans une dimension ci-dessus. En général, considérez la projection dans un espace à M dimensions. À ce stade, en fait, il peut être facilement obtenu par ** décomposition en valeurs singulières ** de la matrice de l'ensemble de données d'origine {$ \ bf x_n $} $ (n = 1,2, .... N) $. Devenir. La décomposition de singularité est une opération sur une matrice, et le contour et la méthode de mise en œuvre sont décrits ci-dessous.

J'ai essayé de comprendre la normalisation spectrale et la décomposition de valeurs singulières qui contribuent à la stabilité du GAN. https://qiita.com/Fumio-eisan/items/54d138df12737c0984b2

Trouver la minimisation de la somme des carrés des résidus

Ensuite, considérons l'analyse en composantes principales du point de vue de la minimisation de la somme des carrés des résidus, ce qui est une autre idée.

image.png

La somme des carrés est $ x_n- \ bf \ tilde {x_n} $ dans la figure ci-dessus. $ \ bf \ tilde {x_n} $ est exprimé en utilisant $ \ bf {x_n} $ et $ \ bf u_1 $. Lorsque vous mettez $ \ bf \ tilde {x_n} = t \ bf u_1 $

\bf u_1^T (\bf x_n -t \bf u_1) =0

Lorsque vous résolvez

\bf u^T \bf x_n -t\bf u_1^T \bf u_1 =0

t = \bf u_1^T \bf  {x_n}
(\bf u_1^T \bf u =À cause de 1)

Peut être résolu. Par conséquent, $ (\ bf u_1 ^ T \ bf {x_n}) \ bf u_1 $ est une projection normale. En d'autres termes, le $ \ bf x_n- \ bf \ tilde {x_n} $ que vous vouliez d'abord trouver devient $ \ bf x_n - (\ bf u_1 ^ T \ bf {x_n}) \ bf u_1 $. Considérant $ \ bf u_1 $ qui minimise la somme des carrés de cette longueur,

\sum_{n=1}^{N} ||\bf x_n-(\bf u_1^T \bf  {x_n})\bf u_1||^2 \\

Peut être formulé.

Si vous résolvez ceci

||\bf x_n-(\bf u_1^T \bf  {x_n})\bf u_1||^2 = \bf x_n^T \bf x_n - (\bf u_1^T \bf  {x_n})^2

Ce sera. Ce problème de minimisation est dû au fait que $ \ bf x_n ^ T \ bf x_n $ est constant même si $ \ bf u_1 $ change.

\sum_{n=1}^{N} -(\bf u_1^T \bf  {x_n})^2

C'est synonyme de résolution. Cela montre la même chose que l'équation 1 pour résoudre le problème de maximisation. Auparavant, nous avons décidé de la différence par rapport à la valeur moyenne, mais dans ce cas, on peut dire que c'est synonyme de l'interpréter comme une soustraction de la valeur moyenne à l'avance.

En d'autres termes, on peut dire que le problème de valeur maximale évoqué plus haut n'est qu'un problème de minimisation car il a un moins cette fois. La suite est la même que lors de la recherche de la valeur maximale.

Impressions diverses: Considérant le développement de l'analyse en composantes principales pour l'industrie manufacturière

Je travaille comme ingénieur de production dans l'industrie manufacturière. Parmi eux, ** la panne soudaine des machines et des équipements ** est l'une des causes de perte de production (= perte d'opportunité). Cela se produit car l'appareil ** arrête son fonctionnement normal ** à des moments inattendus.

Dans le cas d'un équipement important dont l'activité de production est arrêtée en raison de problèmes, nous le réparons essentiellement régulièrement sur la base de l'idée de maintenance en fonction du temps (au moins dans mon secteur (matériel)). ).

Cette période est souvent placée ** plus tôt (= en avance sur le calendrier) que l'heure de remplacement recommandée par le fabricant pour les pièces à réparer (= pièces de sécurité importantes). ** En d'autres termes, même si c'est déjà du bon côté, des problèmes peuvent survenir sans attendre l'heure. Quant à la raison pour laquelle cela se produit, la cause est différente selon les cas, donc je ne peux pas le dire sans condition, mais on peut dire que le type de produit fabriqué change et le travailleur qui l'exploite change.

Envisagez l'application de l'analyse en composantes principales à ce problème. Vous trouverez ci-dessous une image de manga du problème à la solution.

image.png

Avec le récent passage à l'IoT, il est devenu plus facile de ** connecter des capteurs et d'acquérir des données ** aux appareils. De plus, les données d'exploitation liées à la production sont également faciles à utiliser (= données faciles à obtenir).

Dans ce contexte, il est possible de prédire les pannes d'équipement à partir d'une grande quantité de données. Pour faire cette prédiction, il est difficile de déterminer ** les facteurs de référence et les seuils. ** ** Je pense que l '** analyse en composantes principales ** peut être appliquée au processus de réduction de nombreux facteurs à quelques facteurs. Par exemple, il est envisageable d'utiliser un nouvel index qui relie plusieurs facteurs tels que la fréquence de l'appareil x le temps d'utilisation total. ** (Il peut être appliqué en tant que logiciel systématisé, mais je ne sais pas, alors j'apprécierais que quelqu'un puisse m'apprendre.) **

** Cependant **, le point ici doit être considéré si elle est appropriée à partir de la soi-disant connaissance du domaine, qui est la connaissance de l'appareil et de la production.

Par exemple, dans le cas d'un moteur installé dans ce laminoir, si la fréquence est à l'origine de 0 à 0 Hz, il s'agit d'une vibration normale. Ou, quand il devient △ hz ou plus, il est presque temps de le remplacer. La connaissance et l'expérience valideront les facteurs décidés ici. Après tout, je pense que les connaissances et l'expérience des travailleurs qui ont visité le site des dizaines ou des centaines de fois sont toujours importantes.

Un autre point. (** Cela peut être limité à l'industrie des matériaux **) Le défi dans l'application de cette idée est le matériel tel que la nécessité de connecter un capteur à l'appareil et s'il existe un capteur capable d'obtenir des données raisonnables. Je sens que les défis du côté sont encore grands. Dans certains cas, l'instrument lui-même n'est pas suffisamment installé dans l'usine même, ou même s'il est installé, la configuration du système n'est pas conçue pour collecter des données. Par conséquent, il s'arrête là où il n'y a aucun moyen d'obtenir les données de l'objet que vous souhaitez analyser.

De nos jours, je pense que la réalité est que seule l'idée de l'apprentissage automatique est en avance et que le côté matériel n'est pas lié. .. Par conséquent, ** C'est un travail boueux mais important pour les ingénieurs en équipement, le personnel informatique et les consultants informatiques du fabricant. ** **

en conclusion

La méthode d'analyse des composantes principales est résumée. Bien que l'opération mathématique soit simple, j'ai senti qu'elle avait un large éventail d'applications. Personnellement, j'aimerais en savoir plus sur les scènes utilisées pour le traitement d'image.

Recommended Posts

(Apprentissage automatique) J'ai appris l'analyse des composants principaux, qui est une méthode utile pour réduire un grand nombre de fonctionnalités + j'ai pensé à l'étendre à l'industrie manufacturière (en particulier la maintenance des équipements de machines)
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Procédure d'apprentissage automatique de base: ③ Comparez et examinez la méthode de sélection de la quantité de caractéristiques