[PYTHON] Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden

Erstausgabe: 2020/3/3
Verfasser: Soichi Takashige, Masahiro Ito, Hitachi, Ltd.

Einführung

In diesem Beitrag werden wir das Entwurfs-Know-how der Datenvorverarbeitung und das Ergebnis der Leistungsüberprüfung der numerischen Datenvorverarbeitung beim Entwurf eines Systems mit einem Modell für maschinelles Lernen vorstellen.

In der ersten Folge werden wir die Datenvorverarbeitung des maschinellen Lernsystems und die Gliederung seines Entwurfs vorstellen.

** Beitragsliste: **

  1. Informationen zur Datenvorverarbeitung des Systems mithilfe von maschinellem Lernen (dieser Beitrag)
  2. Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
  3. Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)

Überblick und Ablauf von KI-Projekten

Datenanalysen mit KI-Technologie wie maschinellem Lernen ziehen die Aufmerksamkeit auf sich, und die Anzahl der Projekte mit KI nimmt zu. In KI-Projekten analysieren wir Kundendaten, um Modelle für maschinelles Lernen zu erstellen, um Einblicke zu gewinnen und Prognosen zu automatisieren. In vielen Fällen werden AI-Projekte 1) PoC (Proof of Concept) unter der Leitung von Datenwissenschaftlern durchgeführt, die Experten für Datenanalyse sind, und die Nützlichkeit von Datenanalyse- und maschinellen Lernmodellen bestätigt, und 2) die Ergebnisse. Zusätzlich wird der Systemingenieur (im Folgenden als SE bezeichnet) das Produktionssystem herstellen, das in zwei Schritten ausgeführt wird. Zusätzlich zu dem dem Kunden vorgelegten Bericht enthalten die PoC-Ergebnisse des Datenwissenschaftlers Quellcode in einer Sprache wie Python, die SE entwirft und systematisiert.

Herausforderungen bei der Systematisierung

Eine der Herausforderungen bei der Systematisierung auf der Grundlage von PoC-Ergebnissen ist die Erhöhung der Datenmenge in der Produktionsumgebung. Da es sich bei PoC nur um eine Überprüfung handelt, ist die Datenmenge, die uns von Kunden anvertraut wird, häufig gering. Selbst wenn eine große Datenmenge vorhanden ist, werden die Daten häufig abgetastet und zur schnellen Überprüfung verwendet. Wie Sie sehen können, verwendet PoC normalerweise eine kleine Datenmenge, die auf einem einzelnen Desktop-Computer verarbeitet werden kann. Da andererseits das maschinelle Lernsystem basierend auf den Daten lernt, ist die Vorhersagegenauigkeit umso höher, je größer die Datenmenge ist. Daher wird bei der Herstellung eines Produktionssystems häufig eine große Datenmenge verwendet, um die Vorhersagegenauigkeit zu verbessern, und das maschinelle Lernsystem muss eine hohe Datenverarbeitungsleistung aufweisen.

Während Datenwissenschaftler mit Modellen für maschinelles Lernen umgehen, wird die Datenvorverarbeitung im Allgemeinen hauptsächlich von Ingenieuren wie SE entwickelt. Die Datenvorverarbeitung ist eine Technologie, die eng mit dem Modell des maschinellen Lernens verwandt ist, erfordert jedoch auch Kenntnisse als SE, wie z. B. Infrastrukturdesign, Dimensionierung und Fehlerbehandlung im Fehlerfall. Zu diesem Zeitpunkt ist es nicht effizient, die Vorverarbeitung auf der SE-Seite mit hohen Kosten und Zeit von Grund auf neu zu gestalten und zu implementieren. Daher ist ein Ansatz effektiv, der die Systematisierung durch Verwendung von Prototypen fördert, die von Datenwissenschaftlern in Python usw. entwickelt wurden. Derzeit gibt es jedoch nicht viele öffentliche Informationen über ein solches Design-Know-how. In diesem Beitrag werden wir das Entwurfsverfahren und die Punkte der Datenvorverarbeitung vorstellen, die auf den Erkenntnissen basieren, die aus den Ergebnissen der Leistungsüberprüfung für SEs gewonnen wurden, die die PoC-Phase abgeschlossen haben, und ein System entwerfen, das ein maschinelles Lernmodell enthält. Ich werde.

Übersicht über die Datenvorverarbeitung im maschinellen Lernsystem

Datenvorverarbeitung im maschinellen Lernsystem

In einem System, das maschinelles Lernen verwendet, ist es denkbar, eine Datenvorverarbeitung hauptsächlich in den drei Phasen Lernen, Inferenz und Wiederlernen durchzuführen. Abbildung 1 gibt einen Überblick. 前処理システム概要
Abbildung 1 Übersicht über das maschinelle Lernnutzungssystem

  1. Datenvorverarbeitung während des Lernens

In verschiedenen Formaten gespeicherte Datensätze werden in eine Datenstruktur konvertiert, die zum Trainieren eines bestimmten Modells geeignet ist, und Daten werden normalisiert und aggregiert, um die Genauigkeit zu verbessern. Bei der Vorverarbeitung zum Zeitpunkt des Lernens gibt es viele Fälle, in denen alle Daten gleichzeitig verarbeitet werden, und der Verarbeitungsaufwand ist im Vergleich zum Zeitpunkt der Inferenz tendenziell sehr groß.

Inference verwendet ein Modell, um Trends für Daten zu klassifizieren und vorherzusagen, die im Bereich des tatsächlichen Betriebs gesammelt wurden. Inferenz kann Latenzanforderungen wie Sekunden auferlegen. In diesem Fall unterliegt die Vorverarbeitung auch Latenzanforderungen. Die Datenvorverarbeitung zum Zeitpunkt der Inferenz ist eine Verarbeitung, die eine Konvertierung durchführt, so dass sie dieselben Merkmale wie zum Zeitpunkt des Lernens aufweist, jedoch nur für die abzuleitenden Daten durchgeführt wird, und die Verarbeitung kann vereinfacht werden. Da das Modell bei jeder Verwendung des Modells ausgeführt werden muss, wird es im Produktionssystem häufig kontinuierlich aufgerufen.

  1. Datenvorverarbeitung während der Umschulung

Wenn Daten, die zum Lernen verwendet werden können, basierend auf den tatsächlichen Daten am Betriebsort akkumuliert werden, kann das Modell unter Verwendung dieser Daten aktualisiert werden. In einem solchen Fall wird dieselbe Verarbeitung wie bei der Datenvorverarbeitung zum Zeitpunkt des Lernens durchgeführt.

Herausforderungen und Lösungen beim Entwerfen der Datenvorverarbeitung

Da PoC von Datenwissenschaftlern häufig mit einer kleinen Datenmenge durchgeführt wird, wird die Vorverarbeitung während des PoC häufig in Python implementiert. Wenn Sie dagegen versuchen, die Vorverarbeitung in Python während der Systematisierung zu implementieren, treten die in Tabelle 1 aufgeführten Probleme auf. Tabelle 1 zeigt auch eine Lösung für dieses Problem.

Tabelle 1 Probleme und Lösungen des Datenvorverarbeitungssystems

# Aufgabe Lösungsplan
Die Vorverarbeitung dauert aufgrund der großen Datenmenge, auf die abgezielt werden soll, sehr lange Nutzung der Big-Data-VerarbeitungsinfrastrukturEntwickelt und implementiert, sodass die in Python usw. geschriebene Vorverarbeitung parallel ausgeführt und auf einer Verarbeitungsplattform wie Spark verteilt werden kann, wenn die Datenmenge groß ist.
Wenn die Big-Data-Verarbeitungsplattform in (1) verwendet wird, ist eine Neuimplementierung der Vorverarbeitung erforderlich und erfordert viel Personal Implementierung vor der Verarbeitung im Hinblick auf die Systematisierung ab der PoC-PhaseBei PoC werden wir eine Implementierungsmethode für die Python-Verarbeitung übernehmen und implementieren, die bei der Konvertierung in Spark ohne größere Änderungen funktioniert.

Systemdesignprozess, der maschinelles Lernen nutzt

Entwerfen Sie ein System, das maschinelles Lernen verwendet (siehe Abbildung 2). Wie zu Beginn dieses Beitrags erwähnt, ist es üblich, PoC durchzuführen, um die Nützlichkeit des maschinellen Lernens zu bestätigen und die Logik zu systematisieren, deren Nützlichkeit dort bestätigt wurde.

プロセス Abbildung 2 Überblick über den Entwurfsprozess eines Systems, das maschinelles Lernen verwendet

Wie in Abb. 1 gezeigt, gibt es zwei Hauptsysteme, die maschinelles Lernen verwenden: Lernsysteme und Inferenzsysteme. Von nun an werden wir uns mit Lernsystemen befassen. Im Allgemeinen wird das Inferenzsystem mit dem Lernsystem verglichen.

Es gibt eine Tendenz.

Vorbehandlungsdesign während des Lernens

Tabelle 2 zeigt die Entwurfselemente beim Entwerfen und Implementieren der Datenvorverarbeitung des Lernsystems. Hier werden nur die Teile angezeigt, die für maschinelles Lernen charakteristisch sind.

Tabelle 2 Liste der Designelemente für Lernsysteme

# Designartikel Einzelheiten
1 Prüfung der Systemanforderungen
  • Anforderungen an den Durchsatz
  • Gesamtlaufzeitanforderungen
  • Verfügbarkeit/Anforderungen für die Wiederherstellungsverarbeitung
  • Schätzung der Gesamtzahl der Vorbehandlungstypen
2 Datenentwurf
  • Datenplatzierungsdesign
  • Intermediate Data Placement Design
3 Ressourcenschätzung nach tatsächlicher Maschine
  • Analyse von PoC-Code in kleinen Datensätzen
  • Überprüfen Sie die Anzahl der Daten
  • Datengröße pro Datensatz
  • Schätzung des Grads der Datenarmut
  • Schätzung der Gesamtdatengröße
  • Trainingsdatengröße und Zwischendatenschätzung zum Speichern
4 Implementierung
  • Auswahl der Ausführungsplattform(Python,Spark und andere)
  • Schätzung der Anzahl der Knoten
  • Bestimmen der Datenverarbeitungsmethode
  • Python、Sparkでの処理共通化を意識したImplementierung
  • Spark-Unterstützung für Python-Code
5 Verfügbarkeitsdesign
  • Bezeichnung der Switchback- und Re-Execution-Methode bei fehlgeschlagener Verarbeitung
6 Betriebsdesign
  • Design der Datenvorverarbeitungsaktualisierung mit Modellaktualisierung
  • Nachbearbeitung der Datenverlaufsverwaltung, Löschdesign

Ressourcenschätzung

Im Lernsystem ist der wichtigste Punkt, ob die Modellentwicklung unter Verwendung der Zieldaten innerhalb des von den Systemanforderungen geforderten Zeitraums abgeschlossen werden kann. In der PoC-Phase werden die Zieldaten häufig nur für einen Teil des Zeitraums (Geräte, Formulare usw.) verarbeitet, in der nachfolgenden Systematisierung werden jedoch der gesamte Zeitraum und alle Arten von Daten verarbeitet. Dies kann zu einer großen Datenmenge führen. Für die Vorverarbeitung ist es wichtig, die für das Systematisierungsdesign erforderlichen Ressourcen (Anzahl der CPUs, Speichermenge) zu schätzen, damit die Verarbeitung innerhalb einer akzeptablen Verarbeitungszeit für große Datenmengen abgeschlossen werden kann.

Wenn Sie die für die Vorverarbeitung erforderlichen Ressourcen ermitteln möchten, überprüfen Sie zunächst die Größe und Verarbeitungszeit der Eingabe- / Ausgabedaten anhand eines kleinen Datensatzes für jeden Prozess in der Vorverarbeitung. Überprüfen Sie auch die Prozesse (Prozesse mit einer großen Anzahl von Wiederholungen), von denen erwartet werden kann, dass sie die Verarbeitungslogik optimieren, die in der zweiten und den folgenden Sitzungen beschrieben wird.

In Bezug auf die Anzahl der CPUs unter den Ressourcen wird die Verarbeitungszeit des Produktionssystems aus der Eingabedatengröße des Produktionssystems basierend auf der Eingabedatengröße und der Verarbeitungszeit bei Verwendung eines kleinen Datensatzes geschätzt (zu diesem Zeitpunkt ist die Verarbeitungszeit Daten). Sie muss proportional zur Größe sein. Indem Sie diese Zeit durch die in den Systemanforderungen angegebene Verarbeitungszeit dividieren, können Sie die ungefähre Anzahl der benötigten CPUs schätzen.

In Bezug auf die Speichermenge wird die Datengröße jedes Prozesses im Produktionssystem basierend auf der Eingabedatengröße jedes Prozesses bei Verwendung eines kleinen Datensatzes geschätzt und die Gesamtgröße geschätzt.

Auswahl der Datenverarbeitungsinfrastruktur

Als Grundlage für die Ausführung der Datenvorverarbeitung des Produktionsvorverarbeitungssystems kann entschieden werden, ob eine Umgebung zum Ausführen von in Python geschriebenem PoC-Code wie in Python oder auf einer verteilten Verarbeitungsplattform wie Spark erstellt werden soll. Wird benötigt. Grundsätzlich ist es aufgrund der Schätzung der erforderlichen Ressourcen eine Richtlinie, mit Spark vorzuverarbeiten, wenn der Speicher nicht ausreicht, und mit Python, wenn es kein Problem mit der Speichermenge gibt.

abschließend

In diesem Beitrag haben wir einen Überblick über die Datenvorverarbeitung und deren Design für Systeme gegeben, die maschinelles Lernen verwenden. Beim nächsten Mal werde ich das Know-how zur Leistungsverbesserung der Vorverarbeitung numerischer Daten mit Python und das Ergebnis der Leistungsüberprüfung auf dem tatsächlichen Computer vorstellen.

Die zweite: Leistungsüberprüfung der Vorverarbeitung durch maschinelles Lernen numerischer Daten (1)

Recommended Posts

Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
Liste der Links, die Anfänger des maschinellen Lernens lernen
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Datenbereinigung 3 Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Maschinelles Lernen Über Overlearning
Vorverarbeitung von Präfekturdaten
Python-Übungsdatenanalyse Zusammenfassung des Lernens, dass ich ungefähr 10 mit 100 Schlägen getroffen habe
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Über maschinelles Lernen gemischte Matrix
Bedeutung von Datensätzen für maschinelles Lernen
Über die Datenverwaltung von Amboss-App-Server
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Vorverarbeitung beim maschinellen Lernen 3 Fehlende Wert- / Ausreißer- / Ungleichgewichtsdaten
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
Über Boxplot und Violinplot, die die Variation unabhängiger Daten visualisieren
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Informationen zur Lernmethode mit Originaldaten von CenterNet (Objekte als Punkte)
Maschinelles Lernen in Delemas (Datenerfassung)
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Grundlegendes maschinelles Lernverfahren: ② Daten vorbereiten
Sammeln von Daten zum maschinellen Lernen
[Ver1.3.1 Update] Ich habe DataLiner erstellt, eine Datenvorverarbeitungsbibliothek für maschinelles Lernen.
Wie nutzt man maschinelles Lernen für die Arbeit? 02_AI Entwicklungsprojektübersicht
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Eine Geschichte über maschinelles Lernen mit Kyasuket
2020 Empfohlen 20 Auswahlmöglichkeiten für einführende Bücher zum maschinellen Lernen
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
Persönliche Notizen und Links zum maschinellen Lernen ① (Maschinelles Lernen)
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
[Maschinelles Lernen] Liste der häufig verwendeten Pakete
Informationen zur Datenerweiterungsverarbeitung für tiefes Lernen
Kostenlose Version von DataRobot! ?? Einführung in "PyCaret", eine Bibliothek, die maschinelles Lernen automatisiert
Eine Geschichte über das Erreichen einer Wiederherstellungsrate von Pferderennen von über 100% durch maschinelles Lernen
Maschinelles Lernen
Implementierung eines Modells, das Wechselkurse (Dollar-Yen-Kurs) durch maschinelles Lernen vorhersagt
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 1: Datenanalyse)
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1