[PYTHON] À propos du prétraitement des données des systèmes utilisant l'apprentissage automatique

Première édition: 2020/3/3
Auteur: Soichi Takashige, Masahiro Ito, Hitachi, Ltd.

introduction

Dans cet article, nous présenterons le savoir-faire de conception du prétraitement des données et le résultat de la vérification des performances du prétraitement des données numériques lors de la conception d'un système intégrant un modèle d'apprentissage automatique.

Dans le premier volet, nous présenterons le prétraitement des données du système d'apprentissage automatique et les grandes lignes de sa conception.

** Liste des messages: **

  1. À propos du prétraitement des données du système à l'aide de l'apprentissage automatique (cet article)
  2. Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (Partie 1)
  3. Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (Partie 2)

Aperçu et déroulement des projets d'IA

L'analyse des données à l'aide de la technologie de l'IA telle que l'apprentissage automatique attire l'attention et le nombre de projets utilisant l'IA augmente. Dans les projets d'IA, nous analysons les données des clients pour créer des modèles d'apprentissage automatique afin d'obtenir des informations et d'automatiser les prévisions. Dans de nombreux cas, les projets d'IA sont 1) menés PoC (Proof of Concept) dirigés par des data scientists experts en analyse de données, et ont confirmé l'utilité des modèles d'analyse de données et d'apprentissage automatique, et 2) les résultats. De plus, l'ingénieur système (ci-après dénommé SE) réalisera le système de production, qui se déroule en deux étapes. En plus du rapport soumis au client, les livrables PoC par le data scientist ont un code source écrit dans un langage tel que Python, que SE conçoit et systématise.

Défis de la systématisation

L'un des défis de la systématisation basée sur les livrables PoC est l'augmentation de la quantité de données dans l'environnement de production. Étant donné que PoC n'est qu'une vérification, la quantité de données qui nous est confiée par les clients est souvent faible, et même s'il y a une grande quantité de données, nous échantillonnons et utilisons souvent les données pour une vérification rapide. Comme vous pouvez le voir, PoC utilise généralement une petite quantité de données qui peuvent être traitées sur une seule machine de bureau. D'autre part, puisque le système d'apprentissage automatique apprend sur la base des données, plus la quantité de données est grande, plus la précision de la prédiction est élevée. Par conséquent, lors de la création d'un système de production, une grande quantité de données est souvent utilisée pour améliorer la précision de la prédiction, et un système d'apprentissage automatique doit avoir des performances de traitement de données élevées.

En outre, alors que les scientifiques des données gèrent des modèles d'apprentissage automatique, le prétraitement des données est généralement conçu principalement par des ingénieurs tels que SE. Le prétraitement des données est une technologie étroitement liée au modèle d'apprentissage automatique, mais il nécessite également des connaissances en tant que SE, telles que la conception de l'infrastructure, le dimensionnement et la gestion des pannes en cas de panne. À ce moment-là, il n'est pas efficace de repenser et de réimplémenter le prétraitement à partir de zéro du côté SE à un coût et en temps élevés. Par conséquent, une approche qui favorise la systématisation en utilisant des prototypes développés par des scientifiques des données en Python, etc. est efficace. Cependant, il n'y a actuellement pas beaucoup d'informations publiques sur ce savoir-faire en matière de conception. Dans cet article, nous présenterons la procédure de conception et les points de prétraitement des données basés sur les connaissances obtenues à partir des résultats de la vérification des performances pour les SE qui ont terminé l'étape PoC et qui conçoivent un système qui intègre un modèle d'apprentissage automatique. Je vais.

Vue d'ensemble du prétraitement des données dans le système d'apprentissage automatique

Prétraitement des données dans le système d'apprentissage automatique

Dans un système qui utilise l'apprentissage automatique, il est concevable d'effectuer un prétraitement des données principalement dans les trois phases d'apprentissage, d'inférence et de réapprentissage. La figure 1 donne un aperçu. 前処理システム概要
Figure 1 Vue d'ensemble du système d'utilisation de l'apprentissage automatique

  1. Prétraitement des données pendant l'apprentissage

Les ensembles de données stockés dans divers formats sont convertis en une structure de données adaptée à l'apprentissage d'un certain modèle, et les données sont normalisées et agrégées pour améliorer la précision. Dans le prétraitement pendant l'apprentissage, toutes les données sont souvent traitées en même temps et la quantité de traitement a tendance à être très importante par rapport à l'inférence.

  1. Prétraitement des données lors de l'inférence

L'inférence utilise un modèle pour effectuer des classifications et des prédictions de tendance sur les données collectées dans le champ d'opération réelle. L'inférence peut imposer des exigences de latence, telles que des secondes, auquel cas le prétraitement sera également soumis à des exigences de latence. Le prétraitement des données au moment de l'inférence est un traitement qui effectue une conversion de sorte qu'il ait les mêmes caractéristiques qu'au moment de l'apprentissage, mais il est effectué uniquement sur les données à déduire, et le traitement peut être simplifié. D'autre part, comme il est nécessaire d'exécuter le traitement à chaque fois que le modèle est utilisé, il est fréquemment appelé en continu dans le système de production.

  1. Prétraitement des données pendant le recyclage

Si des données pouvant être utilisées pour l'apprentissage sont accumulées à partir des données réelles sur le site d'exploitation, elles peuvent être utilisées pour mettre à jour le modèle. Dans un tel cas, le même traitement que le prétraitement des données au moment de l'apprentissage sera effectué.

Défis et solutions dans la conception du prétraitement des données

Étant donné que le PoC par les scientifiques des données est souvent effectué avec une petite quantité de données, le prétraitement est souvent mis en œuvre en Python pendant le PoC. D'un autre côté, si vous essayez d'implémenter le prétraitement en Python pendant la systématisation, les problèmes indiqués dans le tableau 1 ci-dessous se produiront. Le tableau 1 montre également une solution à ce problème.

Tableau 1 Problèmes et solutions du système de prétraitement des données

# Tâche Plan de solution
Le prétraitement prend beaucoup de temps en raison de l'énorme quantité de données à cibler Utilisation d'une infrastructure de traitement de Big DataConçu et mis en œuvre pour que le prétraitement écrit en Python, etc. puisse être exécuté en parallèle et distribué sur une plate-forme de traitement telle que Spark lorsque la quantité de données est importante.
Si la plate-forme de traitement du Big Data est utilisée dans (1), une réimplémentation du prétraitement est nécessaire et cela demande beaucoup de main-d'œuvre. Mise en œuvre du pré-traitement en vue de la systématisation dès la phase PoCChez PoC, nous adopterons et implémenterons une méthode d'implémentation de traitement Python qui fonctionnera sans changements majeurs lors de la conversion vers Spark.

Processus de conception de système utilisant l'apprentissage automatique

Concevez un système qui utilise l'apprentissage automatique, comme illustré à la figure 2. Comme évoqué au début de cet article, il est courant de réaliser des PoC pour confirmer l'utilité du machine learning et systématiser la logique dont l'utilité y a été confirmée.

プロセス Figure 2 Aperçu du processus de conception d'un système qui utilise l'apprentissage automatique

Comme le montre la figure 1, il existe deux grands systèmes qui utilisent l'apprentissage automatique: les systèmes d'apprentissage et les systèmes d'inférence. À partir de maintenant, nous traiterons des systèmes d'apprentissage. En général, le système d'inférence est comparé au système d'apprentissage.

Il y a une tendance.

Conception du prétraitement pendant l'apprentissage

Le tableau 2 montre les éléments de conception lors de la conception et de la mise en œuvre du prétraitement des données du système d'apprentissage. Seules les parties caractéristiques de l'apprentissage automatique sont présentées ici.

Tableau 2 Liste des éléments de conception du système d'apprentissage

# Articles de conception Détails
1 Examen des exigences du système
  • Exigences pour le débit
  • Exigences de durée totale d'exécution
  • disponibilité/Conditions requises pour le traitement de la récupération
  • Estimation du nombre total de types de prétraitement
2 Conception des données
  • Conception du placement des données
  • Conception de placement de données intermédiaire
3 Estimation des ressources par machine réelle
  • Analyse de code PoC sur de petits ensembles de données
  • Vérifiez le nombre de données
  • Taille des données par enregistrement
  • Estimer le degré de rareté des données
  • Estimation de la taille totale des données
  • Taille des données d'entraînement et estimation des données intermédiaires à enregistrer
4 la mise en oeuvre
  • Sélection de la plateforme d'exécution(Python,Spark et autres)
  • Estimer le nombre de nœuds
  • Estimation de la quantité de mémoire par nœud
  • Déterminer la méthode de traitement des données
  • Python、Sparkでの処理共通化を意識したla mise en oeuvre
  • Prise en charge de Spark pour le code Python
5 Conception de la disponibilité
  • Désignation de la méthode de commutation et de ré-exécution en cas d'échec du traitement
6 Conception opérationnelle
  • Conception de la mise à jour du prétraitement des données avec mise à jour du modèle
  • Gestion de l'historique des données post-traitement, conception de la suppression

Estimation des ressources

Dans un système d'apprentissage, le point le plus important est de savoir si le développement du modèle utilisant les données cibles peut être achevé dans le délai requis par les exigences du système. Dans la phase PoC, les données cibles ne sont souvent traitées que pendant une partie de la période (appareils, formulaires, etc.), mais dans la systématisation ultérieure, toute la période et tous les types de données sont traités. Cela peut entraîner une énorme quantité de données. Pour le prétraitement, il est important d'estimer les ressources (nombre de processeurs, quantité de mémoire) nécessaires pour la conception de la systématisation afin que le traitement puisse être terminé dans un temps de traitement acceptable pour les données volumineuses.

Lorsque vous recherchez les ressources requises pour le prétraitement, vérifiez d'abord la taille des données d'entrée / sortie et le temps de traitement à l'aide d'un petit ensemble de données pour chaque processus du prétraitement. Vérifiez également les processus (processus avec un grand nombre de répétitions) susceptibles d'être efficaces pour optimiser la logique de traitement, qui seront décrits dans la deuxième session et les suivantes.

En ce qui concerne le nombre de CPU parmi les ressources, le temps de traitement du système de production est estimé à partir de la taille des données d'entrée du système de production en fonction de la taille des données d'entrée et du temps de traitement lors de l'utilisation d'un petit ensemble de données (à ce stade, le temps de traitement est des données). Il doit être proportionnel à la taille). En divisant ce temps par le temps de traitement spécifié dans la configuration système requise, vous pouvez estimer le nombre approximatif de processeurs dont vous aurez besoin.

En ce qui concerne la quantité de mémoire, la taille des données de chaque processus dans le système de production est estimée en fonction de la taille des données d'entrée de chaque processus lors de l'utilisation d'un ensemble de données à petite échelle, et la taille totale est estimée.

Sélection de l'infrastructure de traitement des données

Comme base pour exécuter le prétraitement des données du système de prétraitement de production, il est possible de décider de créer un environnement pour exécuter du code PoC écrit en Python tel qu'il est en Python ou de l'exécuter sur une plateforme de traitement distribuée telle que Spark. Est requis. Fondamentalement, à la suite de l'estimation des ressources requises, c'est une politique de prétraiter avec Spark si la mémoire semble insuffisante, et avec Python tel quel s'il n'y a pas de problème avec la quantité de mémoire.

en conclusion

Dans cet article, nous avons présenté un aperçu du prétraitement des données et de sa conception pour les systèmes utilisant l'apprentissage automatique. La prochaine fois, je présenterai le savoir-faire d'amélioration des performances du prétraitement des données numériques à l'aide de Python et le résultat de la vérification des performances sur la machine réelle.

La seconde: Vérification des performances du prétraitement par apprentissage automatique de données numériques (1)

Recommended Posts

À propos du prétraitement des données des systèmes utilisant l'apprentissage automatique
Prétraitement dans l'apprentissage automatique 2 Acquisition de données
Prétraitement dans l'apprentissage automatique 4 Conversion de données
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 2)
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 1)
Python: prétraitement en machine learning: acquisition de données
Python: prétraitement dans l'apprentissage automatique: conversion de données
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
Liste des liens que les débutants en apprentissage automatique apprennent
À propos du contenu de développement de l'apprentissage automatique (exemple)
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Nettoyage des données 3 Utilisation d'OpenCV et prétraitement des données d'image
Histoire de l'analyse de données par apprentissage automatique
Apprentissage automatique sur le surapprentissage
Pré-traitement des données préfectorales
Analyse des données de pratique Python Résumé de l'apprentissage que j'ai atteint environ 10 avec 100 coups
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
À propos de la matrice mixte d'apprentissage automatique
Importance des ensembles de données d'apprentissage automatique
À propos de la gestion des données d'Anvil-App-Server
Enquête sur l'utilisation du machine learning dans les services réels
Utilisation d'icrawler plus simple pour la collecte de données d'apprentissage automatique
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
Prétraitement dans l'apprentissage automatique 3 Données de valeur manquante / aberrante / de déséquilibre
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
[Apprentissage automatique] Vérifiez les performances du classificateur à l'aide de données de caractères manuscrites
À propos de Boxplot et Violinplot qui visualisent la variation des données indépendantes
Apprentissage automatique ③ Résumé de l'arbre de décision
À propos de la méthode d'apprentissage avec les données originales de CenterNet (Objects as Points)
Apprentissage automatique dans Delemas (acquisition de données)
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: présentation
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Procédure d'apprentissage automatique de base: ② Préparer les données
Comment collecter des données d'apprentissage automatique
[Mise à jour Ver1.3.1] J'ai créé une bibliothèque de prétraitement de données DataLiner pour l'apprentissage automatique
Comment utiliser l'apprentissage automatique pour le travail? 02_Aperçu du projet de développement AI
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Utiliser le groupe d'API d'apprentissage automatique A3RT de Python
Une histoire sur l'apprentissage automatique avec Kyasuket
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
Notes personnelles et liens sur l'apprentissage automatique ① (Machine learning)
[Python] Première analyse de données / apprentissage automatique (Kaggle)
[Apprentissage automatique] Liste des packages fréquemment utilisés
À propos du traitement d'expansion des données pour l'apprentissage en profondeur
Version gratuite de DataRobot! ?? Introduction à «PyCaret», une bibliothèque qui automatise l'apprentissage automatique
Une histoire sur l'obtention d'un taux de récupération des courses de chevaux de plus de 100% grâce à l'apprentissage automatique
Apprentissage automatique
Mise en place d'un modèle de prédiction des taux de change (taux dollar-yen) par machine learning
Prédire les travaux de courte durée de Weekly Shonen Jump par apprentissage automatique (Partie 1: Analyse des données)
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
Classification des images de guitare par apprentissage automatique Partie 1