Aidemy 2020/11/10
Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais 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 premier article de l'introduction à la détection. Ravi de vous rencontrer.
Quoi apprendre cette fois ・ À propos de la détection d'anomalies ・ À propos de la méthode hôtelière et de la distance Maharanobis ・ À propos de la méthode simple de Bayes
-__ Détection d'anomalies ___ est, comme son nom l'indique, __ des données anormales sont capturées __. Plus précisément, il est largement utilisé pour détecter des anomalies chez des patients dans le domaine médical et pour détecter des défaillances du système. ・ Dans cette unité, nous visons à __ "Comprendre la théorie de la détection d'anomalies" __ et __ "Implémentation d'un système simple de détection d'anomalies" __.
・ Regardons les modèles d '«anomalies» à détecter.
-Le premier est __ "valeur aberrante" __. Bien que cela soit apparu à plusieurs reprises dans le passé, les valeurs aberrantes sont __ "des valeurs très éloignées des autres ensembles" __. Il est facile de comprendre s'il est illustré.
・ Figure![Capture d'écran 2020-11-02 17.27.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/2755124d-bcd2-2987- 4a35-ccbd77acea87.png)
-Le problème de la détection des valeurs aberrantes est appelé __ "détection des valeurs aberrantes" __. Les détails seront traités au chapitre 2.
-Le second est __ "point de changement" __. Le point de changement est __ "les choses dont les valeurs se comportent différemment" __. Comme le montre la figure ci-dessous, si la valeur __ augmente brusquement à partir d'un certain point, ce point est le point de changement.
・ Figure
-Le problème de détection d'un point de changement est appelé __ "détection de changement (point)" __ ou __ "détection de pièce anormale" __. Les détails seront traités au chapitre 3.
-__ "Anormalité" __ est une indication quantitative de la façon dont la valeur __ est anormale. Fondamentalement, on peut dire que plus le degré d'anomalie est élevé, plus la valeur est anormale. -Aussi, le point __ qui est la frontière entre __ anormal et normal est appelé __ "seuil" __. -Tout ce qui doit être fait dans la détection d'anomalie ultérieure est le flux de __ "définition du degré d'anomalie → détermination du seuil" __. Lors de la détermination de ce seuil, __ "quelle probabilité est considérée comme anormale" __ est souvent définie, et cette probabilité est appelée __ "taux d'erreur de déclaration" __.
・ __ "(Nombre d'échantillons qui sont réellement normaux) / (Nombre d'échantillons qui sont réellement normaux)" __ "Taux de réponse correct (précision d'échantillonnage normale) ) »__, et ce qui est représenté par « taux normal 1 » est __ taux de faux rapport __. En d'autres termes, le taux de fausses alarmes est __ "le rapport entre ceux qui sont réellement normaux et ceux qui ont été jugés anormaux" __. -Ces valeurs sont également utilisées pour l'évaluation de l'exactitude du détecteur.
・ Code pour calculer le taux de fausses alarmes
-__ La méthode hôtelière__ est l'une des méthodes de détection des valeurs aberrantes __. Comme mentionné ci-dessus, le degré d'anomalie et le seuil sont définis. -Les données à traiter ne sont effectivement appliquées que lorsque les conditions de __ "généré à partir d'une seule distribution normale" et "presque aucune valeur anormale" __ sont satisfaites.
・ Le flux de la méthode hôtelière est le suivant. ① Définissez vous-même le taux de faux rapport .__ __ et calculez le __ seuil __ en fonction de celui-ci. ② Calculez la __ valeur moyenne __ et la __ matrice de variation __ des valeurs que l'on peut qualifier de normales. ③. Calculez la __ anomalie __ des données de test, et si elle dépasse le __ seuil, jugez-la comme anormale __.
・ Ce qui précède est le flux, mais __ les données sont considérées comme presque normales __. En outre, on peut dire que la méthode hôtelière est __ l'apprentissage sans enseignant __.
・ Dans le flux de la méthode hôtelière ③, le degré d'anomalie est calculé, mais l'indice utilisé à ce moment est __ "Maharanobis distance" __. Cette distance est __ "distance entre une certaine donnée et la moyenne de l'ensemble des données" __. -Lors du calcul de la distance normale, __ "Distance euclidienne" __ est utilisé, mais pour le degré d'anomalie __ "La valeur change fortement en fonction de la taille de la dispersion (échelle)" "La corrélation entre les variables ne peut pas être reflétée" _ __ Ne peut pas être utilisé à cause de _. -D'autre part, la distance de Maharanobis permet de considérer la variance __ en __normalisant __ avec la __ matrice de covariance inverse __. Plus précisément, la dispersion est considérée en renforçant l'influence de la petite dispersion et en affaiblissant l'influence de la grande dispersion. -En outre, vous pouvez corriger la corrélation entre chaque quantité de caractéristiques par normalisation __.
-Le code est le suivant (les détails seront décrits plus loin pour faire la même chose en ②).
・ À partir de là, nous mettrons en œuvre la méthode hôtelière. __ La détection des valeurs aberrantes par la méthode hôtelière __ est appelée __ "méthode du carré en T" __. ・ Dans un premier temps, __le seuil est calculé __, mais il est nécessaire de définir le __ "taux d'erreurs de déclaration" requis pour le calcul. Si le taux de fausses alarmes est réglé à un niveau élevé, davantage d'anomalies peuvent être détectées, et s'il est réglé à un niveau bas, plus de données normales peuvent être laissées. De cette façon, il y a un compromis entre l'élimination de __ données anormales et la conservation de données normales __, il est donc important de définir la valeur en fonction du cas. En général, des valeurs telles que 0,05 et 0,01 sont utilisées.
-Lorsque des informations incorrectes sont définies et que la quantité de données est suffisante, le seuil est défini à l'aide de la méthode __ "χ (chi) square test" __. -En particulier, lorsque le taux de fausses alarmes est réglé à 0,05, ce test teste comme __ "C'est anormal car c'est une valeur rare qui se produit à moins de 0,05% dans des conditions normales" __.
-L'implémentation se fait avec __ "st.chi2.ppf ()" __. Passez __ "1-False rate" __ comme premier argument et __ numéro de dimension (nombre de variables) __ comme deuxième argument.
・ Code (l'anomalie a est calculée par la distance Maharanobis, mais omise cette fois)
・ Afin de calculer __outlier __ en ③, il est nécessaire d'obtenir la distance Maharanobis mentionnée ci-dessus, donc __ "valeur moyenne" __ et __ "matrice de covariance" nécessaires pour ce calcul. Demander __. ・ La moyenne est calculée par __np.mean (données, axe = 0) __. (Calculé pour chaque colonne avec axe = 0) -La matrice de co-distribution des données est calculée par __np.cov (data.T) __.
・ Code![Capture d'écran 2020-11-02 21.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/42a59e29-060e-420e- f9bf-a79bd4ffdcdf.png)
-Enfin, mettez __data __ (x), mean __ (moyenne) et __ matrice de covariance inverse __ ( np.linalg.pinv (cov) __) dans __distance.mahalanobis () __ Il peut être calculé en le passant. ・ Comparez ce résultat avec le __seuil calculé en ① pour détecter les anomalies.
・ Code![Capture d'écran 2020-11-02 22.07.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/4fec9fec-1ca8-52cb- 0fa2-01002f1a9729.png)
・ Exécutez les étapes ① à ③ ci-dessus. Le code est comme suit.
・ Résultat (le rouge est en panne (anormal), le bleu est normal)
-Les méthodes de détection d'anomalies dont la méthode hôtelière présentent l'inconvénient de __ "Lorsque le nombre de variables augmente (le nombre de dimensions augmente), la quantité de calcul augmente et cela devient trop compliqué" __. Pour résoudre ce problème, __ "Méthode de Bayes simple" __, qui est une méthode __ qui transforme le problème de plusieurs variables en un problème d'une variable (une dimension). -L'idée de base de la méthode simple de Bayes est __ "Comme il n'y a pas de corrélation entre les variables, la probabilité que plusieurs événements se produisent est exprimée par le produit de chaque probabilité" __. Par exemple, dans le problème de lancer des pièces deux fois, la probabilité que la table apparaisse les deux fois est exprimée par "1/2 * 1/2". En appliquant cela, la probabilité de savoir si les données sont anormales ou normales peut être obtenue par le produit de la probabilité d'anomalie (pondérée) de chaque variable. -C'est-à-dire que, dans la méthode simple de Bayes, une anomalie peut être calculée par le produit interne des données et du poids (en définissant la dimension sur 1). De plus, le __threshold n'est pas calculé comme la méthode __hotelling, mais est calculé en __optimizing à l'aide des données de vérification. -La condition d'utilisation de la méthode Bayes simple est __ "La variable de données doit être un entier de 0 ou plus" __. ・ Le flux est le suivant. ① Calculez le poids à partir des données d'entraînement par la méthode Bayes __ ② Optimiser le __seuil à partir des données d'évaluation __ ③ Calculez le degré d'anomalie et comparez-le au seuil
-Pour le flux ci-dessus, au chapitre 2 et plus tard, nous examinerons le problème que la méthode simple de Bayes est utilisée __ "Détection de valeurs anormales dans les documents" __.
-Non limité à la détection d'anomalies, dans le traitement des données, il y a une idée que __ "Lorsque l'on considère les données comme un vecteur, si le produit interne avec un vecteur approprié est pris, une valeur numérique représentant les caractéristiques des données peut être obtenue" __ .. Le "vecteur approprié" à ce moment est appelé __ "vecteur de poids" __. -Même avec la méthode simple de Bayes, lors de la recherche d'une valeur aberrante dans (3), on peut dire que la valeur aberrante peut être facilement trouvée en connaissant le vecteur de poids, puis en prenant le produit interne du vecteur de poids. Par conséquent, __① calcule ce vecteur de poids __.
・ En ce qui concerne la "détection de valeurs anormales des documents" effectuée cette fois, en considérant quelque chose comme le jugement de spam du courrier, une analyse morphologique du courrier (document) est effectuée, le nombre d'apparitions de données pouvant être utilisées pour l'identification comme la nomenclature est étudié, et cela et le spam Passez l'étiquette indiquant s'il faut ou non créer le poids. (C'est __ l'apprentissage enseigné __) -Après cela, le document nouvellement passé est analysé morphologiquement de la même manière, et la valeur anormale est calculée en multipliant le nombre d'occurrences et le poids créé.
-De plus, les données de détection des valeurs anormales dans un document indiquent la fréquence d'apparition comme __ "expression d'ensachage de mots" __. Plus précisément, consultez le code ci-dessous. Cela signifie que «hoge» et «foo» ne sont pas apparus, et «bar», «po» et «do» sont apparus respectivement 3, 4 et 1 fois.
-__ Calcul du poids __ est __ "np" lorsque le poids des données normales (X0) est "w0" et le poids des données anormales (X1) est "w1" dans les données d'entraînement "X_train". Il peut être obtenu par ".log (w1 / w0)" __. -Par conséquent, il est nécessaire de trouver respectivement __w0 et w1. __ "(Nombre total d'apparitions de chaque mot dans toutes les données normales) ÷ (Nombre total de mots d'apparence dans toutes les données normales)" __, mais en prenant le logarithme dans np.log, le poids ne doit pas être 0 , __ Ajoutez "alpha = 1" __. Cela s'appelle __ "monter" __. -Le nombre total d'occurrences de chaque mot est calculé par __ "np.sum (X0, axis = 0)" __ (pour les données normales). Le nombre total de mots est calculé par __ "np.sum (X0)" __.
・ Code![Capture d'écran 2020-11-03 15.00.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/aaae2407-1169-6915- 8c1d-5e475662ef9e.png)
・ Résultat (seulement une partie)![Capture d'écran 2020-11-03 15.01.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/d12ccefe -4b34-d290-260d-60cc82c2744f.png)
・ Le calcul du poids de ① a été effectué à l'aide des données d'apprentissage (X_train), mais l'optimisation du seuil est réalisée à l'aide des données d'évaluation __ "X_valid" __. -Optimiser le seuil avec __ "metrics.roc_curve ()" __. L'étiquette des données d'évaluation __ "y_valid" __ peut être passée au premier argument, et le degré d'anomalie des données d'évaluation __ peut être passé au deuxième argument. -Le degré d'anomalie des données d'évaluation sera décrit dans la section suivante, mais il peut être calculé par __ "np.dot ()" __ car le produit intérieur des données et le poids peuvent être pris comme décrit ci-dessus. -De plus, "metrics.roc_curve ()" renvoie trois variables, __ "faux taux positif", "vrai taux positif" et "seuil candidat" __, donc les variables __ "fpr" "tpr" "thr_arr" _ Stocker dans _. -Pour ces trois variables, le seuil peut être calculé en définissant __ "thr_arr [(tpr-fpr) .argmax ()]" __.
・ Code![Capture d'écran 2020-11-03 16.14.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/83c470ec-7235-3cd6- a7f0-97573bd33d21.png)
-Enfin, comme mentionné dans la section précédente, le degré d'anomalie est calculé par __ "np.dot ()" __ et comparé au seuil. (Code omis)
-Les modèles anormaux incluent __ "valeurs aberrantes" et "points de changement" . Détecter ceci est une __ détection d'anomalie. -Une des méthodes pour détecter les valeurs aberrantes est __ "méthode hotelling" __. Dans la méthode hôtelière, le __seuil __, qui est la limite entre «anormal ou normal», est d'abord déterminé, puis le degré d'anomalie est calculé à partir de la __moyenne des données et de la matrice de covariance (inverse) __. En comparant ce seuil au degré d'anomalie, on détermine s'il est anormal ou normal. -De plus, comme cette méthode ne peut pas être utilisée lorsque les données sont multidimensionnelles, la détection d'anomalies est rendue possible en les traitant comme des données unidimensionnelles en utilisant __ "méthode simple Bayes" __. -Dans la méthode simple de Bayes, le degré d'anomalie est calculé en calculant le vecteur __weight __, et en calculant le produit interne de ces données et __, et en déterminant la valeur seuil et en comparant les deux, il est anormal. Déterminez si c'est normal ou normal.
Cette fois, c'est fini. Merci d'avoir lu jusqu'à la fin.
Recommended Posts