Производственные системы ML: когда трансформировать данные?
Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Необработанные данные должны быть спроектированы (преобразованы). Когда следует преобразовывать данные? Грубо говоря, вы можете выполнять разработку функций в течение любого из следующих двух периодов:
Перед обучением модели.
Пока тренируем модель.
Преобразование данных перед обучением
В этом подходе вы выполняете два шага:
Напишите код или используйте специализированные инструментыдля преобразования необработанных данных.
Сохраните преобразованные данные где-нибудь, чтобы модель могла их принять, например на диске.
Преимущества
Система преобразует необработанные данные только один раз.
Система может анализировать весь набор данных, чтобы определить лучшую стратегию преобразования.
Перекос в обслуживании обучения более опасен, когда ваша система выполняет динамический (онлайн) вывод. В системе, использующей динамический вывод, программное обеспечение, преобразующее необработанный набор данных, обычно отличается от программного обеспечения, предоставляющего прогнозы, что может привести к перекосу в обслуживании обучения. Напротив, системы, использующие статический (автономный) вывод, иногда могут использовать одно и то же программное обеспечение.
Преобразование данных во время обучения
В этом подходе преобразование является частью кода модели. Модель принимает необработанные данные и преобразует их.
Преимущества
Вы по-прежнему можете использовать те же файлы необработанных данных, если измените преобразования.
Вам гарантированы одинаковые преобразования во время обучения и прогнозирования.
Недостатки
Сложные преобразования могут увеличить задержку модели.
Преобразования происходят для каждой партии.
Преобразование данных для каждого пакета может оказаться сложной задачей. Например, предположим, что вы хотите использовать нормализацию Z-показателя для преобразования необработанных числовых данных. Нормализация Z-показателя требует среднего и стандартного отклонения признака. Однако преобразования в каждом пакете означают, что у вас будет доступ только к одному пакету данных , а не ко всему набору данных. Таким образом, если партии сильно различаются, Z-показатель, скажем, -2,5 в одной партии не будет иметь того же значения, что -2,5 в другой партии. В качестве обходного пути ваша система может предварительно вычислить среднее и стандартное отклонение для всего набора данных, а затем использовать их в качестве констант в модели.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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)"]]