Aidemy 2020/10/29
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 dritte Beitrag der Vorverarbeitung für maschinelles Lernen. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Umgang mit fehlenden Werten ・ Umgang mit Ausreißern ・ Umgang mit unausgeglichenen Daten
-__ Fehlender Wert __ ist __ leere Daten __ dargestellt durch "NaN". -Wenn NaN in den Daten vorhanden ist, __ kann der Gesamtmittelwert oder die Standardabweichung nicht berechnet werden __. -Wenn alle __ alle __ Daten, die nur einen fehlenden Wert enthalten, gelöscht werden, werden die Daten verschwendet oder verzerrt.
Wie im vorherigen Abschnitt gezeigt, können Daten mit fehlenden Werten nur analysiert werden, wenn sie ordnungsgemäß verarbeitet wurden. Daher ist es notwendig, eine geeignete Vorbehandlung für fehlende Werte durchzuführen, aber das Verfahren unterscheidet sich in Abhängigkeit vom Mechanismus der Erzeugung fehlender Werte.
Es gibt die folgenden drei Arten von Mechanismen zur Wertschöpfung. 1 .__ MCAR: Wenn die Wahrscheinlichkeit eines Datenverlusts (NaN werden) für die Daten selbst irrelevant ist (zufällig auftretend) __ Beispiel: Einige Daten gingen aufgrund einer Fehlfunktion des Computers verloren. 2 .__ MAR: Wenn die Wahrscheinlichkeit eines Datenverlusts aus anderen Elementen als diesem Element abgeleitet werden kann __ ex) Wenn der Punkt "Geschlecht" im Fragebogen für Männer und Frauen weiblich ist, ist die Wahrscheinlichkeit eines Mangels an dem Punkt "Alter" hoch. 3 .__ NMAR: Wenn die Wahrscheinlichkeit eines Datenverlusts aus dem Punkt __ abgeleitet werden kann ex) In einem Fragebogen für Männer und Frauen ist die Wahrscheinlichkeit, dass der Punkt "Alter" fehlt, umso höher, je älter das tatsächliche Alter ist.
-Im Fall von MCAR ist es auch möglich, __ "listwise delete" __ auszuführen, um alle Daten einschließlich fehlender Werte zu löschen. Wenn die Anzahl der Daten zu klein wird, kann daher auch __ "Zuweisungsmethode" __ (später beschrieben) verwendet werden. -Für MAR verwenden Sie __ "Zuweisungsmethode" __. Das listweise Löschen ist unangemessen, da beispielsweise viele weibliche Daten gelöscht und die Daten voreingenommen sind.
-Es gibt ungefähr zwei Arten von Methoden zur Substitution fehlender Werte. Details werden später beschrieben.
・ Untersuchen Sie, wo sich NaN befindet, indem Sie die Daten visualisieren. -Wenn Sie leicht wissen möchten, wie viele NaNs sich in welcher Spalte befinden, können Sie __ "Data.isnull (). Sum ()" __ von Pandas verwenden. -Wenn Sie den Status des gesamten fehlenden Werts visualisieren möchten, verwenden Sie die __matrix-Funktion __ des __missingno-Pakets __.
・ Code![Screenshot 2020-10-29 15.04.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/80bcfbae-f632-584d- 74ff-9e37c2c9965b.png)
・ Ergebnis (weißer Teil fehlt Wert)![Screenshot 2020-10-29 15.05.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700 /948b7b71-7cf9-be7d-f645-e7eea9335423.png)
-Wenn fehlende Werte in der __Sonle-Substitutionsmethode __ ergänzt werden, gibt es je nach Zweck drei Arten von Methoden.
-__ Durchschnittswertsubstitutionsmethode : Ersetzen Sie den fehlenden Wert NaN durch den Durchschnittswert des Elements. Wenn der Durchschnittswert zunimmt, wird die Gesamtvarianz kleiner, sodass sie nicht verwendet werden kann, wenn die Varianz und der Fehler berücksichtigt werden sollten. - Probabilistische Regressionssubstitutionsmethode : Obwohl nicht im Detail behandelt, können Streuung und Fehler berücksichtigt werden. - Hot Deck-Methode __: Ergänzen Sie dies, indem Sie den Wert aus der Datenzeile (Empfänger) mit dem fehlenden Wert und der Datenzeile (Spender) empfangen, deren Daten nahe beieinander liegen. -Die Nähe der Daten wird mit einer Methode namens __ "Methode des nächsten Nachbarn" __ bestimmt.
-Die Hot-Deck-Methode wird wie folgt beschrieben und ausgeführt. knnimpute.knn_impute_few_observed(matrix, missing_mask, k)
・ KNN ist eine Methode, die beim "überwachten Lernen (Klassifizierung)" erlernt wurde, und eine Methode, die k Punkte in der Nähe bei der Klassifizierung eines bestimmten Datenpunkts berücksichtigt.
・ Code![Screenshot 2020-10-29 15.11.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/db15c25d-1ae3-c0b5- 6711-fbaf689c50f5.png)
-Im Fall der Einzelsubstitutionsmethode ist der komplementierte Wert nur ein vorhergesagter Wert, so dass es einen Nachteil gibt, dass das Analyseergebnis des Modells, das dieses verwendet, nicht immer genau ist. ・ Andererseits werden bei der Mehrfachsubstitutionsmethode Daten mehrmals ergänzt, um mehrere Datensätze zu erstellen, und die Analyseergebnisse werden in einen integriert, um das Endergebnis zu erzielen. Ist möglich__.
-Das in der Mehrfachzuweisungsmethode verwendete Modell kann unter Verwendung von Mäusen von Statistikmodellen wie folgt ausgedrückt werden. mice.MICE(formula, optimizer, imp_data)
-Das ergänzende Analyseergebnis kann mit der Methode __fit () __ für das auf diese Weise erstellte MICE-Modell erhalten werden. (Ausführung der Mehrfachzuweisungsmethode)
-Für dieses Analyseergebnis können Sie das Ergebnis mit der Methode __summary () __ überprüfen.
・ Code![Screenshot 2020-10-29 15.13.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/a40802e3-fe89-1c45- b1a3-c5bf17e2ea36.png)
-__ Ausreißer __ bezieht sich auf Daten __, die erheblich von anderen Daten __ entfernt sind. -Wenn Ausreißer gemischt sind, treten Probleme wie __ "Analyseergebnisse sind nicht genau" und "Modelllernen ist langsam" auf. -Daher ist es notwendig, Ausreißer in der Vorverarbeitungsphase zu erkennen und auszuschließen __.
・ Es ist leicht zu verstehen, ob es einen Ausreißer gibt.
-Wenn die Daten zweidimensional sind, kann auch __joinplot (x, y, data) __ verwendet werden. Da die Punkte wie im Streudiagramm dargestellt dargestellt sind, werden die Ausreißer visuell erfasst. -Sie können einen DataFrame an das Argument "data" übergeben.
・ Code (Geben Sie nur die y-Achse an, da Sie nur wissen müssen, wie weit die vertikale Achse entfernt ist.)
・ Ergebnis![Screenshot 2020-10-29 15.15.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/eed4d5ce-e5ff-4c74- 7105-230a2789e22b.png)
-Wenn festgestellt wird, dass es einen Ausreißer gibt, erkennt __ tatsächlich den Ausreißer __. -Für die Erkennung sind Kriterien wie __ "Welcher Wert sollte ein Ausreißer sein" __ erforderlich. Dieses Mal werden wir uns mit der Methode __ "LOF" __ von scicit-learn befassen, die erkennt, nachdem der Standard im Voraus festgelegt wurde. ・ Die Beurteilung des LOF-Abweichungswerts erfolgt wie folgt. (1) Betrachten Sie einen Punkt mit wenigen Datenpunkten in der Nähe von __ als Ausreißer. (2) Die Beurteilung von "nahe" erfolgt unter Verwendung von __k Nachbarschaftspunkten __. ③ Der Punkt, an dem diese Beurteilung (Datendichte) mit der Umgebung relativ gering ist, wird als Ausreißer beurteilt __.
-LOF kann mit __LocalOutlierFactor (n_neighbors = k) __ verwendet werden. -Für n_nachbarn geben Sie die Anzahl der benachbarten Punkte k an.
・ Code![Screenshot 2020-10-29 15.21.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/4423b970-0dfd-ecd5- da49-847dffe1f166.png)
-Result (Ausgabe von Ausreißern)![Screenshot 2020-10-29 15.22.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/ db1e7d72-ee73-cb5a-c9f0-d315fbbeaf1f.png)
-Es gibt eine Methode namens __ "Isolationswald" __ als Methode zum Erkennen von Ausreißern, die sich von LOF unterscheiden. -Im IsolationForest werden die Ausreißer erkannt, indem __ zufällig die Daten geteilt und der Wert auf die Tiefe gesetzt wird. -Seit IsolationForst hängt nicht von Entfernung oder Dichte ab, die Berechnung ist nicht kompliziert und __Speicher sparen __. Es hat auch die Funktion, dass es einfach ist, die Berechnung auch für große Datenmengen zu skalieren.
Das Klassifizierungsmodell wird von __IsolationForest () __ erstellt, das mithilfe der Methode __fit () __ trainiert und von pred () vorhergesagt wird. Wie bei LOF ist "-1" ein Ausreißer für diesen Rückgabewert. Erhalten Sie ihn also wie __data [Vorhersagen == -1] __.
·Code
・ Ergebnis![Screenshot 2020-10-29 15.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/24e06303-4aff-5fa1- df0a-dc90bc387055.png)
-Es gibt die folgenden drei Einstellmethoden. -__ Oversampling : Eine Methode zur Erhöhung des __ Gleichgewichts seltener Daten. - Unterabtastung : Eine Methode zum Ausgleich __ durch Reduzieren der __ Unterabtastung häufig verwendeter Daten. - SMOTE-ENN__: Erhöhen Sie den kleineren (SMOTE) und verringern Sie den größeren (ENN), um das Gleichgewicht zu halten.
-Code (Daten darüber, ob eine Person ein Auto gekauft hat)![Screenshot 2020-10-29 15.25.29.png](https: //qiita-image-store.s3.ap-northeast-1.amazonaws) .com / 0/698700 / b12aa6ff-a80c-949c-cdb3-85cc22a6289a.png)
-__ Oversampling__ ist eine Methode, um seltene Daten zu erhöhen und mit häufigeren Daten abzugleichen. -Es gibt verschiedene Möglichkeiten, um die Daten zu erhöhen, aber die einfachste ist die __ "Methode zum zufälligen Aufblasen vorhandener Daten" __. -Für das Auffüllen wird der unausgeglichene Lern-__RandomOverSampler (Verhältnis = 'Minderheit') __ verwendet, der zum Anpassen unausgeglichener Daten verwendet wird.
・ Code![Screenshot 2020-10-29 16.15.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/af63bf2f-e5e1-fd9e- ec9f-077bdc5c2fa2.png)
-__ Unterabtastung __ ist eine Methode zum Reduzieren und Ausgleichen häufig verwendeter Daten. -Sie können die Daten mit __RandomUnderSampler () __ reduzieren. In Bezug auf das Verhältnis, das zu diesem Zeitpunkt durch das Argument angegeben wird, wird das Verhältnis mit der höchsten Häufigkeit zu diesem Zeitpunkt als __ 'Mehrheit' __ festgelegt.
・ Code![Screenshot 2020-10-29 16.13.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/79204ef5-3ef9-8163- 8aac-390d1890a9fa.png)
SMOTE-ENN -SMOTE wird für die Überabtastung (Aufblasen von Daten) und ENN für die Unterabtastung (Löschen von Daten) verwendet.
・ Code![Screenshot 2020-10-29 16.15.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/34354d74-0869-5e88- d0cc-520309db02e7.png)
-__ Fehlender Wert __ sind leere Daten, die durch "NaN" dargestellt werden. -__ Außer Wert __ sind Daten, die sich erheblich von anderen Daten unterscheiden. -__ Unausgeglichene Daten__ sind Daten, bei denen ein bestimmter Wert extrem hoch oder niedrig ist. -Diese Daten beeinträchtigen das maschinelle Lernen und müssen vorverarbeitet werden.
-Der fehlende Wert wird ergänzt, indem NaN durch einen numerischen Wert durch __ "Zuweisungsmethode" __ ersetzt wird.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts