[PYTHON] Einführung in die Anomalieerkennung 1 Grundlagen

Aidemy 2020/11/10

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag der Einführung in die Erkennung. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ Informationen zur Erkennung von Anomalien ・ Über die Hotelmethode und die Maharanobis-Entfernung ・ Über die einfache Bayes-Methode

Informationen zur Erkennung von Anomalien

Was ist Anomalieerkennung?

-__ Abnormalitätserkennung ___ ist, wie der Name schon sagt, __abnormale Daten werden erfasst __. Insbesondere wird es häufig zur Erkennung von Anomalien bei Patienten im medizinischen Bereich und zur Erkennung von Systemfehlern verwendet. ・ In dieser Einheit wollen wir __ "Die Theorie der Anomalieerkennung verstehen" __ und __ "Implementierung eines einfachen Anomalieerkennungssystems" __.

Anormales Muster

・ Schauen wir uns die Muster von "Anomalien" an, die erkannt werden sollten.

Ausreißer

-Der erste ist __ "Ausreißerwert" __. Obwohl es in der Vergangenheit mehrmals aufgetreten ist, sind Ausreißer __ "Werte, die weit von anderen Mengen entfernt sind" __. Es ist leicht zu verstehen, wenn es illustriert ist.

・ Abbildung![Screenshot 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)

-Das Problem der Erkennung von Ausreißern wird als __ "Ausreißererkennung" __ bezeichnet. Details werden in Kapitel 2 behandelt.

Wechselpunkt

-Die zweite ist __ "Änderungspunkt" __. Der Änderungspunkt ist __ "Dinge, deren Werte sich anders verhalten" __. Wie in der folgenden Abbildung gezeigt, ist dieser Punkt der Änderungspunkt, wenn der __ -Wert von einem bestimmten Punkt aus stark ansteigt.

· Zahl スクリーンショット 2020-11-02 17.31.12.png

-Das Problem der Erkennung eines Änderungspunkts wird als __ "Änderungs- (Punkt-) Erkennung" __ oder __ "Erkennung abnormaler Teile" __ bezeichnet. Details werden in Kapitel 3 behandelt.

Anzeigen zur Erkennung von Anomalien

-__ "Abnormalität" __ ist ein quantitativer Hinweis darauf, wie abnormal der __- Wert ist. Grundsätzlich kann gesagt werden, dass der Wert umso abnormaler ist, je höher der Grad der Abnormalität ist. -Auch der Punkt __, der die Grenze zwischen __abnormal und normal darstellt, wird __ "Schwelle" __ genannt.

・ __ "(Anzahl der tatsächlich normalen Proben) / (Anzahl der tatsächlich normalen Proben)" __ "Richtige Antwortrate (normale Probengenauigkeit) ) ”__, und was durch “ 1-Normalrate ” dargestellt wird, ist __ falsche Berichtsrate __. Mit anderen Worten, die Fehlalarmrate ist __ "das Verhältnis von denen, die tatsächlich normal sind und denen, die als abnormal eingestuft wurden" __. -Diese Werte werden auch für die __genauigkeitsbewertung des Detektors verwendet.

・ Code zur Berechnung der Fehlalarmrate スクリーンショット 2020-11-02 18.29.37.png

Hotelmethode

Was ist die Hotelmethode?

-__ Hotelmethode __ ist eine der Methoden zur Erkennung von Ausreißern __. Wie oben erwähnt, sind der Grad der Anomalie und der Schwellenwert definiert. -Die zu verarbeitenden Daten werden nur dann effektiv angewendet, wenn die Bedingungen von __ "aus einer einzelnen Normalverteilung erzeugt" und "fast keine abnormalen Werte" __ erfüllt sind.

・ Der Ablauf der Hotelmethode ist wie folgt. ① Stellen Sie die .__ Falschberichtsrate __ selbst ein und berechnen Sie den __Threshold __ entsprechend. ② Berechnen Sie den Durchschnittswert __ und die Kovariationsmatrix __ der Werte, die als normal bezeichnet werden können. ③ Berechnen Sie die __Annormalität __ der Testdaten und beurteilen Sie sie als abnormal __, wenn sie den __Schwellenwert überschreitet.

・ Das Obige ist der Fluss, aber __ Daten werden als fast normal __ angesehen. Es kann auch gesagt werden, dass die Hotelmethode __ lehrerloses Lernen __ ist.

Maharanobis Entfernung

・ Im Ablauf der Hotelmethode ③ wird der Grad der Anomalie berechnet, der zu diesem Zeitpunkt verwendete Index ist jedoch __ "Maharanobis-Entfernung" __. Dieser Abstand ist __ "Abstand zwischen bestimmten Daten und dem Durchschnitt der gesamten Daten" __. -Wenn der normale Abstand berechnet wird, wird __ "Euklidischer Abstand" __ verwendet, jedoch für den Grad der Anomalie __ "Der Wert ändert sich stark in Abhängigkeit von der Größe der Dispersion (Skala)" "Die Korrelation zwischen Variablen kann nicht reflektiert werden" _ __ Kann wegen _ nicht verwendet werden. Andererseits ermöglicht der Maharanobis-Abstand die Berücksichtigung der __ Varianz durch __Normalisierung __ mit der __inversen Kovarianzmatrix __. Insbesondere wird die Dispersion berücksichtigt, indem der Einfluss der kleinen Dispersion verstärkt und der Einfluss der großen Dispersion geschwächt wird. -Auch können Sie die Korrelation zwischen jeder Merkmalsgröße durch Normalisierung __ korrigieren.

-Der Code lautet wie folgt (Details werden später beschrieben, um dasselbe in ② zu tun).

スクリーンショット 2020-11-02 21.01.39.png

① Stellen Sie die Fehlalarmrate selbst ein und berechnen Sie den Schwellenwert entsprechend.

・ Von hier aus werden wir die Hotelmethode tatsächlich implementieren. __ Die Erkennung von Ausreißern durch die Hotelmethode __ wird als __ "T-Quadrat-Methode" __ bezeichnet. ・ Zuerst wird __der Schwellenwert berechnet __, aber Sie müssen die __ "Falschberichtsrate" einstellen, die für die Berechnung erforderlich ist. Wenn die Fehlalarmrate hoch eingestellt ist, können mehr Anomalien erkannt werden, und wenn sie niedrig eingestellt ist, können mehr normale Daten übrig bleiben. Auf diese Weise gibt es einen Kompromiss zwischen dem Eliminieren von __normalen Daten und dem Verlassen von normalen Daten __, daher ist es wichtig, den Wert entsprechend dem Fall festzulegen. Im Allgemeinen werden Werte wie 0,05 und 0,01 verwendet.

-Wenn falsche Informationen eingestellt werden und die Datenmenge ausreicht, wird der Schwellenwert mit der Methode __ "χ (Chi) Quadrat Test" __ eingestellt.

-Die Implementierung erfolgt mit __ "st.chi2.ppf ()" __. Übergeben Sie __ "1-False rate" __ im ersten Argument und __ Dimensionsnummer (Anzahl der Variablen) __ im zweiten Argument.

・ Code (Abnormalität a wird anhand der Maharanobis-Entfernung berechnet, diesmal jedoch weggelassen) スクリーンショット 2020-11-02 21.35.27.png

② Berechnen Sie den Durchschnittswert und die Kovarianzmatrix der Normalwerte

・ Um __outlier __ in ③ zu berechnen, ist es erforderlich, den oben genannten Maharanobis-Abstand zu erhalten, also __ "Durchschnittswert" __ und __ "Kovarianzmatrix" für diese Berechnung erforderlich. Nachfragen __. ・ Der Durchschnitt wird mit __np.mean (Daten, Achse = 0) __ berechnet. (Berechnet für jede Spalte mit Achse = 0) -Die Co-Verteilungsmatrix der Daten wird durch __np.cov (data.T) __ berechnet.

・ Code![Screenshot 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)

③ Berechnen Sie den Grad der Abnormalität der Testdaten und beurteilen Sie, dass sie abnormal sind, wenn sie den Schwellenwert überschreiten.

-Finally setzen Sie __data __ (x), __mean __ (Mittelwert) und inverse Kovarianzmatrix __ ( np.linalg.pinv (cov) __) in __distance.mahalanobis () __ Es kann durch Übergeben berechnet werden. ・ Vergleichen Sie dieses Ergebnis mit dem in ① berechneten __Threshold, um Anomalien zu erkennen.

・ Code![Screenshot 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)

Praxis der Hotelmethode

・ Führen Sie die obigen Schritte ① bis ③ aus. Der Code lautet wie folgt.

スクリーンショット 2020-11-02 23.20.46.png

・ Ergebnis (Rot ist nicht in Ordnung (abnormal), Blau ist normal) スクリーンショット 2020-11-02 23.21.25.png

Einfache Bayes-Methode

Was ist die einfache Bayes-Methode?

-Abnormalitätserkennungsmethoden einschließlich der Hotelmethode haben den Nachteil von __ "Wenn die Anzahl der Variablen zunimmt (die Anzahl der Dimensionen nimmt zu), nimmt der Rechenaufwand zu und es wird zu kompliziert" __. Um dies zu lösen, wird __ "Simple Bayes Method" __ verwendet, eine __ Methode, die das Problem mehrerer Variablen zu einem Problem einer Variablen (einer Dimension) macht. -Die Grundidee der einfachen Bayes-Methode lautet __ "Da keine Korrelation zwischen Variablen besteht, wird die Wahrscheinlichkeit, dass mehrere Ereignisse auftreten, durch das Produkt jeder Wahrscheinlichkeit ausgedrückt" __. Beispielsweise wird beim Problem des zweimaligen Werfens von Münzen die Wahrscheinlichkeit, dass die Tabelle beide Male angezeigt wird, als "1/2 * 1/2" ausgedrückt. Durch Anwenden dieser kann die Wahrscheinlichkeit, ob die Daten abnormal oder normal sind, durch das Produkt der Wahrscheinlichkeit (gewichtet) jeder Variablen erhalten werden, die abnormal ist. -Das heißt, bei der einfachen Bayes-Methode kann __Annormalität durch das innere Produkt aus Daten und Gewicht berechnet werden (während die Dimension auf 1 gesetzt wird). Außerdem wird der __Threshold nicht wie die __hotelling-Methode berechnet, sondern durch __optimieren unter Verwendung der Verifizierungsdaten. -Die Bedingung, dass die einfache Bayes-Methode verwendet werden kann, ist __ "Die Datenvariable muss eine Ganzzahl von 0 oder mehr sein" __. ・ Der Durchfluss ist wie folgt. ① Berechnen Sie das Gewicht aus den Trainingsdaten nach der Bayes-Methode __ ② Optimieren Sie den Schwellenwert aus den Bewertungsdaten __ ③ Berechnen Sie den Grad der Abnormalität und vergleichen Sie ihn mit dem Schwellenwert

-Für den obigen Ablauf werden wir uns in Kapitel 2 und höher mit dem Problem befassen, dass die einfache Bayes-Methode verwendet wird __ "Erkennung abnormaler Werte in Dokumenten" __.

Vorkenntnisse in der einfachen Bayes-Methode

-Nicht auf die Erkennung von Anomalien beschränkt, gibt es bei der Datenverarbeitung die Idee, dass __ "Wenn Daten als Vektor betrachtet werden, wenn das innere Produkt mit einem geeigneten Vektor genommen wird, ein numerischer Wert erhalten werden kann, der die Eigenschaften der Daten darstellt" __ .. Der zu diesem Zeitpunkt "geeignete Vektor" heißt __ "Gewichtsvektor" __.

・ In Bezug auf die diesmal durchgeführte "Erkennung abnormaler Werte von Dokumenten" wird unter Berücksichtigung von Spam-Bewertungen von E-Mails eine morphologische Analyse von E-Mails (Dokumenten) durchgeführt, die Anzahl der Datenerscheinungen, die zur Identifizierung verwendet werden können, wie z. B. die Nomenklatur, und dies und Spam Übergeben Sie das Etikett, ob das Gewicht erstellt werden soll oder nicht. (Das ist __ lehrreiches Lernen __)

スクリーンショット 2020-11-03 14.19.17.png

① Berechnen Sie das Gewicht aus den Trainingsdaten nach der Bayes-Methode

-__ Die Gewichtsberechnung __ ist __ "np", wenn das Gewicht der normalen Daten (X0) "w0" und das Gewicht der abnormalen Daten (X1) in den Trainingsdaten "X_train" "w1" ist. Es kann durch ".log (w1 / w0)" __ erhalten werden. -Daher ist es notwendig, __w0 bzw. w1 zu finden. __ "(Gesamtzahl der Erscheinungen jedes Wortes in allen normalen Daten) ÷ (Gesamtzahl der Erscheinungswörter in allen normalen Daten)" __, aber wenn der Logarithmus in np.log verwendet wird, sollte das Gewicht nicht 0 sein , __ Addiere "alpha = 1" __. Dies nennt man __ "Einsteigen" __. -Die Gesamtzahl der Vorkommen jedes Wortes wird mit __ "np.sum (X0, Achse = 0)" __ (für normale Daten) berechnet. Die Gesamtzahl der Wörter wird mit __ "np.sum (X0)" __ berechnet.

・ Code![Screenshot 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)

・ Ergebnis (nur Teil)![Screenshot 2020-11-03 15.01.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/d12ccefe -4b34-d290-260d-60cc82c2744e.png)

② Optimieren Sie den Schwellenwert aus den Bewertungsdaten

・ Die Gewichtsberechnung von ① wurde anhand der Trainingsdaten (X_train) durchgeführt, die Optimierung des Schwellenwerts erfolgt jedoch anhand der Bewertungsdaten __ "X_valid" . -Optimieren Sie den Schwellenwert mit __ "metrics.roc_curve () ". Die Bezeichnung der Bewertungsdaten __ "y_valid" __ kann an das erste Argument übergeben werden, und der Grad der Abnormalität der Bewertungsdaten __ kann an das zweite Argument übergeben werden.

・ Code![Screenshot 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)

③ Berechnen Sie den Grad der Abnormalität und vergleichen Sie ihn mit dem Schwellenwert

-Finally, wie im vorherigen Abschnitt erwähnt, wird der Grad der Abnormalität durch __ "np.dot ()" __ berechnet und mit dem Schwellenwert verglichen. (Code weggelassen)

Zusammenfassung

-Anormale Muster umfassen __ "Ausreißer" und "Änderungspunkte" __. Dies zu erkennen ist Abnormalitätserkennung. -Eine der Methoden zum Erkennen von Ausreißern ist __ "Hotelling-Methode" __. Bei der Hotelmethode wird zuerst der __Threshold __ bestimmt, der die Grenze zwischen "abnormal oder normal" darstellt, und dann wird der Grad der Anomalie aus dem __Mittelwert der Daten und der (inversen) Kovarianzmatrix __ berechnet. Durch Vergleichen dieser Schwelle mit dem Grad der Abnormalität wird festgestellt, ob sie abnormal oder normal ist.

Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Einführung in die Anomalieerkennung 1 Grundlagen
Einführung in die Anomalieerkennung 2 Ausreißererkennung
Einführung in die Anomalieerkennung 3 Änderungspunkterkennung
Eine leichte Einführung in die Objekterkennung
Einführung in die Erkennung von Anomalien und Zusammenfassung der Methoden
Einführung in MQTT (Einführung)
Einführung in Scrapy (3)
Erste Schritte mit Supervisor
Einführung in Tkinter 1: Einführung
Einführung in PyQt
Einführung in Scrapy (2)
[Linux] Einführung in Linux
Einführung in Scrapy (4)
Einführung in discord.py (2)
[Einführung in Data Scientist] Grundlagen von Python ♬
[Cx_Oracle Primer] (Teil 3) Grundlagen zum Durchsuchen von Tabellen
Einführung in Lightning Pytorch
Erste Schritte mit Web Scraping
Einführung in nichtparametrische Felder
Einführung in EV3 / MicroPython
Einführung in die Python-Sprache
Einführung in die TensorFlow-Bilderkennung
Einführung in OpenCV (Python) - (2)
Einführung in PyQt4 Teil 1
Einführung in die Abhängigkeitsinjektion
Einführung in Private Chainer
PyTorch Super Einführung PyTorch-Grundlagen
Einführung in das maschinelle Lernen
[Einführung in cx_Oracle] (Teil 11) Grundlagen der PL / SQL-Ausführung
AOJ Einführung in die Programmierung Thema Nr. 1, Thema Nr. 2, Thema Nr. 3, Thema Nr. 4
Einführung in das elektronische Papiermodul
Einführung in die Monte-Carlo-Methode
[Lernmemorandum] Einführung in vim
Einführung in PyTorch (1) Automatische Differenzierung
opencv-python Einführung in die Bildverarbeitung
Einführung in Python Django (2) Win
Einführung in das Schreiben von Cython [Notizen]
Einführung in Private TensorFlow
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
Eine Einführung in das maschinelle Lernen
[Einführung in cx_Oracle] Übersicht über cx_Oracle
XPath-Grundlagen (2) - So schreiben Sie XPath
Eine super Einführung in Linux
AOJ Einführung in die Programmierung Thema Nr. 7, Thema Nr. 8
Einführung in RDB mit sqlalchemy Ⅰ
[Einführung in Systre] Fibonacci Retracement ♬
Einführung in die nichtlineare Optimierung (I)
Einführung in die serielle Kommunikation [Python]
Grundlegender Ablauf der Erkennung von Anomalien
AOJ Einführung in die Programmierung Thema Nr. 5, Thema Nr. 6
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
Einführung in Deep Learning ~ Lernregeln ~
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
Eine Einführung in die Python-Programmierung
[Einführung in cx_Oracle] (8.) Version cx_Oracle 8.0
Einführung in discord.py (3) Verwenden von Stimme