Aidemy 2020/11/10
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 zweite Beitrag in der Einführung zur Erkennung von Anomalien. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Abnormalitätserkennung mit der k-Near-Methode ・ Erkennung von Abnormalitäten durch 1-Klassen-SVM ・ Abnormalitätserkennung für Richtungsdaten
(Ich habe die k-Near-Methode schon einmal gelernt, aber dieses Mal werde ich sie gemäß der Anomalieerkennung wieder lernen.) -Die __k Nachbarschaftsmethode __ bedeutet "Berechnen Sie den Grad der Anomalie aus dem Verhältnis anomaler Daten zu __k Daten, die nahe an den zu unterscheidenden Daten liegen". Wie bei der Hotelmethode wird die Frage, ob sie abnormal ist oder nicht, davon bestimmt, ob sie den Schwellenwert __ überschreitet oder nicht. -Die k-Nachbarschaftsmethode, bei der k zu diesem Zeitpunkt 1 ist, wird __ "Methode des nächsten Nachbarn" __ genannt. k = 1 bedeutet __, dass nur auf die nächsten Daten verwiesen wird __. -In der vorherigen Hotelmethode gab es Fälle, in denen die Voraussetzungen "die Daten stammten aus einer einzigen Normalverteilung" und "die Daten enthielten fast keine Ausreißer" waren. Es gibt jedoch keine solche Einschränkung bei dieser __k Nachbarschaftsmethode __. ・ Die k-Near-Methode ist in der Abbildung sehr leicht zu verstehen. Wenn beurteilt wird, ob der grüne Punkt in der folgenden Abbildung normal oder abnormal ist, liegt er nahe am blauen Satz, bei dem es sich um einen Satz normaler Daten handelt. Diese Daten sind also __ "normal" __.
-Die Vorteile der k-Nachbarschaftsmethode sind __ "Keine Voraussetzungen für die Datenverteilung", "Kann verwendet werden, auch wenn normale Daten aus mehreren Sätzen bestehen" und "Einfache Formel für Anomalien" . .. ・ Andererseits sind die Nachteile __ "Da es keine Voraussetzung für die Datenverteilung gibt, kann der Schwellenwert nicht durch eine mathematische Formel berechnet werden." "Eine strikte Abstimmung des Parameters k erfordert eine komplizierte mathematische Formel." Das Klassifizieren neuer Daten nimmt viel Zeit in Anspruch. "
・ Der Grad der Anomalie der k-nahen Methode wird nach folgender Formel berechnet.
・ Über jede Variable ・ $ \ Pi_0 $ ist __ Prozentsatz der normalen Daten in allen Stichproben __, $ \ pi_1 $ ist __ Prozentsatz der abnormalen Daten in allen Stichproben __ · $ N ^ 0 (x) $ ist der Prozentsatz der normalen Daten in der Nähe von $ k $ in __ $ x $ __, $ N ^ 1 (x) $ ist die Anomalie in der Nähe von $ k $ in __ $ x $ Datenverhältnis __ ・ $ \ Ln $ ist das natürliche logarithmische $ e $ -basierte __ logarithmische __ ($ \ log_e $)
・ Berechnen Sie jeden dieser Werte. Unter der Annahme, dass die Datenbezeichnung "y" ist, wird $ \ pi_0 $ durch __ "y [y == 0] .size / y.size" __ berechnet. Das heißt, __ "Bezeichnung der normalen Daten / Bezeichnung aller Daten" __ ist $ \ pi_0 $. -Auch $ N ^ 0 (x) $ kann berechnet werden, indem zuerst die nahegelegene Bezeichnung "Nachbarn" wie unten gezeigt gefunden wird und dann __ "Nachbarn [Nachbarn == 0] .size / k" __ verwendet wird.
・ Berechnung der Nachbarn
np.log((N1*pi0)/(N0*pi1))
-Die Methode, N-1 aus N Daten zu lernen und die verbleibenden als Testdaten zu verwenden, um die Genauigkeit des Modells zu überprüfen, wird als __ "Bestätigungsmethode ohne Kreuzung" __ bezeichnet. Dieses Mal werden wir dies verwenden, um die Genauigkeit zu bewerten. -Die Methode zur Bestätigung einer Kreuzung ohne Knoten kann mit KNeighborsClassifier implementiert werden. ・ In Bezug auf den Code werden wie im vorherigen Abschnitt die Daten trainiert, um "Nachbarn" zu berechnen, und der Grad der Anomalie wird berechnet, aber __ "k erhöhen" und "die nächste Nachbarschaft ausschließen" _ Zwei Prozesse mit der Bezeichnung _ werden hinzugefügt. -Für "k erhöhen" setzen Sie "n_neighbors", das an KNeighborsClassifier () übergeben wurde, auf __ "k + 1" __. -Für "Die nächste Nachbarschaft ausschließen" sollte bei der Berechnung von "Nachbarn" __ [:, 1:] __ verwendet werden, um die erste Spalte des __ -Arrays __ auszuschließen.
·Code
Wie oben erwähnt, wird der __Threshold nicht berechnet, daher müssen Sie ihn selbst festlegen. Außerdem muss der Nachbarschaftspunkt k von Ihnen selbst festgelegt werden. Erstellen Sie daher eine Methode, um diese beiden optimalen Werte zu ermitteln. -Die Genauigkeit des Modells (F Wert) kann überprüft werden, um festzustellen, ob es der optimale Wert ist. Bereiten Sie k Kandidaten (param_k) und Schwellenwertkandidaten (param_ath) im Voraus in einer Liste vor, nehmen Sie sie mit einer __for-Schleife heraus, berechnen Sie den abnormalen Wert im vorherigen Abschnitt, vergleichen Sie ihn mit dem Schwellenwert und prüfen Sie, ob die Genauigkeit maximal ist Dies erfolgt nach der Aktualisierungsmethode. ・ Verwenden Sie zur Berechnung der Genauigkeit __ "Bestätigungsmethode für eine Kreuzung weniger" __ im vorherigen Abschnitt. Als Ergebnis des Vergleichs des Abnormalitätsgrades und des Schwellenwerts erstellt __ außerdem ein Array, in dem diejenigen, die als "abnormal" beurteilt werden, auf "1" und die anderen auf "0" gesetzt werden. Ein Array, das unter solchen Bedingungen 0 und 1 klassifiziert, kann mit __ "np.as Array (bedingter Ausdruck)" __ erstellt werden. -Die Genauigkeit (Punktzahl) kann berechnet werden, indem der F-Wert mit __ "f1_score (y, y_valid)" __ berechnet wird.
Im Folgenden werden k Kandidaten als "1 bis 5" und Schwellenkandidaten als "0 als Medianwert und 21 in Schritten von 0,1" implementiert. Der Medianwert des Schwellenwertkandidaten ist __0, aber es ist schwierig, den k-Kandidaten genau wie oben beschrieben zu bestimmen. Daher sind die Kandidaten dieses Mal wie oben aufgeführt.
・ Code![Screenshot 2020-11-05 11.33.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/e84371c0-4c72-8704- 82ba-cc982ca1fe60.png)
・ Code![Screenshot 2020-11-05 12.56.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/ff93cbbf-f366-54a1- d1b7-a6ca66a5904f.png)
・ Grafik (Rot ist abnormal, Blau ist normal, helle Farbe zeigt die Klassifizierung der Trainingsdaten an)
-__ 1 Klasse SVM__ ist eine Methode zum Erkennen von Ausreißern in __ "Daten ohne Beschriftung" __. Das heißt, __überwachtes Lernen __. -Die Grundidee der Ausreißererkennung wie die Hotelmethode lautet __ "Erstellen Sie eine Kugel, die fast alle Daten enthält, und verwenden Sie die Ausreißer als Ausreißer" __. Bei der Hotelmethode wurde dies mit __Maharanobis-Abstand __ durchgeführt, aber bei 1-Klassen-SVM wird der Ausreißerwert erreicht, indem "der __ Datenraum verzerrt wird, damit __ alle Daten in die Kugel gestellt werden können". Ist angeschlossen. -Wenn diese Kugel erstellt wird, sind die äußersten Daten auf der Kugel vorhanden, und die Kugel wird basierend darauf erstellt. Aus diesem Grund werden die Daten außerhalb davon __ "Unterstützungsvektordaten" __ genannt. In 1-Klassen-SVM werden normal und abnormal getrennt, indem Sie danach fragen.
-Der Fluss von 1-Klasse-SVM ist wie folgt. (1) Erstellen Sie einen SVM-Klassifikator und berechnen Sie __abnormality __ ② Stellen Sie die Abnormalitätsrate ein und bestimmen Sie __threshold __ ③ __ Beurteilung der Abnormalität __ anhand des Schwellenwerts und des abnormalen Werts
・ Code![Screenshot 2020-11-05 14.17.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/82932f52-f73d-95db- 672c-60abe9b7e5ac.png)
・ Als nächstes setzen Sie __threshold __. Bei 1-Klassen-SVM muss der Schwellenwert jedoch unter der Annahme festgelegt werden, dass __ "die Daten abnormale Daten mit einer bestimmten Rate enthalten" __. Im Folgenden wird dieses Verhältnis durch __ "a (%)" __ dargestellt. -Der Schwellenwert wird berechnet durch __ "st.scoreatpercentile ()" __. Die im vorherigen Abschnitt erstellte __abnormality __ wird an das erste Argument übergeben, und das __abnormal data-Verhältnis "a" __ wird an das zweite Argument übergeben. Infolgedessen wird der Schwellenwert so festgelegt, dass __normale Daten einen Prozentsatz der Gesamtzahl __ ausmachen.
・ Code![Screenshot 2020-11-05 15.08.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/aaf00f76-6b78-4f2a- 28be-20700317f681.png)
・ Grafik (blau sind abnormale Daten (10% der Gesamtzahl) .com / 0/698700 / 4228ca8b-d9e8-185c-9ea4-e78f516da00d.png)
-Um die Größe (Länge) der Daten auf 1 zu setzen, erhalten Sie sie durch __ "Teilen Sie die Daten durch die Länge der Daten selbst" __. Daher ist es zunächst erforderlich, die __ Datenlänge __ zu ermitteln. -Die Länge der Daten wird berechnet durch __ "np.linalg.norm (Daten, ord = 2, Achse = 1) [:, np.neue Achse]" __. Dies wurde auch durch Regularisierung des Deep Learning (Verarbeitung zur Verhinderung von Überlernen) erreicht. __ "ord" __ gibt die Anzahl der __ Dimensionen an (diesmal zwei Dimensionen), __ "Achse" __ gibt 1 an, dh __, um die Länge in Zeilenrichtung zu berechnen __ .. Der Teil __ [:, np.newaxis] __ wird angepasst, um die Achse bei der Standardisierung von __ an den Daten auszurichten.
・ Code![Screenshot 2020-11-05 16.10.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/cdbb90ea-2d7a-2be0- 17ae-1d767e6427fa.png)
・ Ergebnis (alle Längen sind 1)![Screenshot 2020-11-05 16.10.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com /0/698700/66dc9f45-1f73-5b91-7311-fbd0bca54d54.png)
·Code
-Es gibt einen Satz, dass der Grad der Anomalie __ "χ-Quadrat-Verteilung" __ folgt. Daher wird die Verteilung der Daten unter Verwendung des im vorherigen Abschnitt berechneten Abnormalitätsgrads erhalten und der Schwellenwert daraus berechnet. ・ Informationen zur Verwendung der χ-Quadrat-Verteilung finden Sie in Kapitel 1. Zur Überprüfung erfolgt die Implementierung mit __ "st.chi2.ppf ()" __. Übergeben Sie __ "1-False rate" __ als erstes Argument. Diese Rate falscher Meldungen wird von Ihnen selbst festgelegt.
·Code
・ Code![Screenshot 2020-11-05 17.59.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/3eb5d367-3875-ce4c- efe1-7cb3bf516a1f.png)
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts