Systèmes de ML de production: quand transformer les données ?
Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Les données brutes doivent être transformées. Quand devez-vous transformer les données ? De manière générale, vous pouvez effectuer l'ingénierie des caractéristiques pendant l'une des deux périodes suivantes:
Avant d'entraîner le modèle.
Pendant l'entraînement du modèle.
Transformer les données avant l'entraînement
Cette approche comporte deux étapes:
Écrivez du code ou utilisez des outils spécialisés pour transformer les données brutes.
Stockez les données transformées dans un emplacement où le modèle peut les ingérer, par exemple sur un disque.
Avantages
Le système ne transforme les données brutes qu'une seule fois.
Le système peut analyser l'ensemble de données complet pour déterminer la meilleure stratégie de transformation.
L'écart d'entraînement-diffusion est plus dangereux lorsque votre système effectue une inférence dynamique (en ligne). Dans un système qui utilise l'inférence dynamique, le logiciel qui transforme l'ensemble de données brut diffère généralement du logiciel qui diffuse les prédictions, ce qui peut entraîner un décalage entraînement/diffusion. En revanche, les systèmes qui utilisent l'inférence statique (hors connexion) peuvent parfois utiliser le même logiciel.
Transformer les données pendant l'entraînement
Dans cette approche, la transformation fait partie du code du modèle. Le modèle ingère les données brutes et les transforme.
Avantages
Vous pouvez toujours utiliser les mêmes fichiers de données brutes si vous modifiez les transformations.
Vous êtes assuré d'obtenir les mêmes transformations au moment de l'entraînement et de la prédiction.
Inconvénients
Les transformations complexes peuvent augmenter la latence du modèle.
Les transformations ont lieu pour chaque lot.
La transformation des données par lot peut s'avérer délicate. Par exemple, supposons que vous souhaitiez utiliser la normalisation du score Z pour transformer des données numériques brutes. La normalisation du score Z nécessite la moyenne et l'écart type de la caractéristique. Toutefois, les transformations par lot signifient que vous n'aurez accès qu'à un seul lot de données, et non à l'ensemble de données complet. Par conséquent, si les lots sont très variables, un score Z de, disons, -2,5 dans un lot n'aura pas la même signification que -2,5 dans un autre lot. Pour contourner le problème, votre système peut précalculer la moyenne et l'écart-type sur l'ensemble de données, puis les utiliser comme constantes dans le modèle.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[[["\u003cp\u003eFeature engineering can be performed before or during model training, each with its own advantages and disadvantages.\u003c/p\u003e\n"],["\u003cp\u003eTransforming data before training allows for a one-time transformation of the entire dataset but requires careful recreation of transformations during prediction to avoid training-serving skew.\u003c/p\u003e\n"],["\u003cp\u003eTransforming data during training ensures consistency between training and prediction but can increase model latency and complicate batch processing.\u003c/p\u003e\n"],["\u003cp\u003eWhen transforming data during training, considerations such as Z-score normalization across batches with varying distributions need to be addressed.\u003c/p\u003e\n"]]],[],null,["Raw data must be feature engineered (transformed). When should you transform\ndata? Broadly speaking, you can perform feature engineering during either of\nthe following two periods:\n\n- *Before* training the model.\n- *While* training the model.\n\nTransforming data before training\n\nIn this approach, you follow two steps:\n\n1. Write code or use specialized tools to transform the raw data.\n2. Store the transformed data somewhere that the model can ingest, such as on disk.\n\nAdvantages\n\n- The system transforms raw data only once.\n- The system can analyze the entire dataset to determine the best transformation strategy.\n\nDisadvantages\n\n- You must recreate the transformations at prediction time. Beware of [**training-serving skew**](/machine-learning/glossary#training-serving-skew)!\n\nTraining-serving skew is more dangerous when your system performs dynamic\n(online) inference.\nOn a system that uses dynamic inference, the software that transforms\nthe raw dataset usually differs from the software that serves predictions,\nwhich can cause training-serving skew.\nIn contrast, systems that use static (offline) inference can sometimes\nuse the same software.\n\nTransforming data while training\n\nIn this approach, the transformation is part of the model code. The model\ningests raw data and transforms it.\n\nAdvantages\n\n- You can still use the same raw data files if you change the transformations.\n- You're ensured the same transformations at training and prediction time.\n\nDisadvantages\n\n- Complicated transforms can increase model latency.\n- Transformations occur for each and every batch.\n\nTransforming the data per batch can be tricky. For example, suppose you want to\nuse [**Z-score normalization**](/machine-learning/glossary#z-score-normalization)\nto transform raw numerical data. Z-score normalization requires the mean and\nstandard deviation of the feature.\nHowever, transformations per batch mean you'll only have access to\n*one batch of data*, not the full dataset. So, if the batches are highly\nvariant, a Z-score of, say, -2.5 in one batch won't have the same meaning\nas -2.5 in another batch.\nAs a workaround, your system can precompute the mean and standard deviation\nacross the entire dataset and then use them as constants in the model.\n| **Key terms:**\n|\n| - [Training-serving skew](/machine-learning/glossary#training-serving-skew)\n- [Z-score normalization](/machine-learning/glossary#z-score-normalization) \n[Help Center](https://support.google.com/machinelearningeducation)"]]