[PYTHON] Vorverarbeitung beim maschinellen Lernen 3 Fehlende Wert- / Ausreißer- / Ungleichgewichtsdaten

Aidemy 2020/10/29

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 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

Umgang mit fehlenden Werten

Über fehlende Werte

-__ 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.

Mechanismus der fehlenden Wertschöpfung

Umgang mit fehlenden Werten

-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.

Substitutionsmethode

-Es gibt ungefähr zwei Arten von Methoden zur Substitution fehlender Werte. Details werden später beschrieben.

  1. __ Einzelzuweisungsmethode __: Eine Methode zum Ergänzen fehlender Werte, um ein vollständiges Dataset zu erstellen und daraus ein Modell zu erstellen.
  2. __ Mehrfachzuweisungsmethode __: Eine Methode zum Erstellen mehrerer vollständiger Datensätze, die fehlende Werte ergänzen, zum Erstellen eines Modells für jeden Datensatz und zum endgültigen Integrieren der Modelle in einen.

Visualisierung fehlender Werte

・ 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)

Einzelne Substitutionsmethode

-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.

Hot-Deck-Methode

-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)

Informationen zur Mehrfachzuweisungsmethode

-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)

Über Ausreißer

Probleme durch Ausreißer

-__ 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 __.

Visualisierung von Ausreißern

・ 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.) スクリーンショット 2020-10-29 15.14.57.png

・ 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)

Ausreißererkennung [LOF]

-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)

Ausreißererkennung [isolationForest]

-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 スクリーンショット 2020-10-29 15.23.45.png

・ 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)

Informationen zu Ungleichgewichtsdaten

Probleme durch unausgeglichene Daten

-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)

Überabtastung

-__ 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

-__ 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)

Zusammenfassung

-__ 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

Vorverarbeitung beim maschinellen Lernen 3 Fehlende Wert- / Ausreißer- / Ungleichgewichtsdaten
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Klassifikation und Regression beim maschinellen Lernen
Maschinelles Lernen in Delemas (Datenerfassung)
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Datenversorgungstricks mit deque beim maschinellen Lernen
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
Maschinelles Lernen Aufteilung der Trainingsdaten und Lernen / Vorhersage / Verifizierung
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Datenbereinigung Umgang mit fehlenden und Ausreißern
Abtastung in unausgeglichenen Daten
Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Aufteilen von Trainingsdaten für maschinelles Lernen in objektive Variablen und andere in Pandas
Datensatz für maschinelles Lernen
Maschinelles Lernen in Delemas (Praxis)
Musik und maschinelles Lernen Vorverarbeitung MFCC ~ Mel Frequenz Kepstram Koeffizient
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Wird in EDA für maschinelles Lernen verwendet
Maschinelles Lernen und mathematische Optimierung
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Python-Dummy-Datengenerierung (Adressausgabe)
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Datensatzgenerierung
Abtastung in unausgeglichenen Daten
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
Automatisieren Sie Routineaufgaben beim maschinellen Lernen
Hashing von Daten in R und Python
Organisation von Plattformen für maschinelles Lernen und tiefes Lernen
Random Seed Research im maschinellen Lernen
Grundlegendes maschinelles Lernverfahren: ② Daten vorbereiten
Sammeln von Daten zum maschinellen Lernen
Fügen Sie Ihre eigenen Bilddaten in Deep Learning ein und spielen Sie damit
[Maschinelles Lernen] OOB (Out-Of-Bag) und sein Verhältnis
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
"Kaggle Memorandum" Fehlende Werte suchen / löschen
Persönliche Notizen und Links zum maschinellen Lernen ① (Maschinelles Lernen)
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Zeichnen Sie Daten einfach in Shell und Python
Zusammenfassung der Klassifizierung und Implementierung von Algorithmen für maschinelles Lernen
Erstellen einer Umgebung für Python und maschinelles Lernen (macOS)
Trennung von Design und Daten in matplotlib
Füllen Sie fehlende Werte mit Scikit-learn impute aus
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
"OpenCV-Python Tutorials" und "Praktisches maschinelles Lernsystem"
Liste der wichtigsten Wahrscheinlichkeitsverteilungen, die beim maschinellen Lernen und in der Statistik verwendet werden, sowie Code in Python
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Maschinelles Lernen mit Docker (40) mit Anaconda (40) "Hands-On Data Science und Python Machine Learning" von Frank Kane