Data Blending
Смешивание данных объединяет данные из разных источников: сначала агрегирует каждый источник по общему полю, а затем сопоставляет их. Этот подход используется в BI-инструментах и смешанных обучающих наборах для машинного обучения.
Смешивание данных объединяет данные из двух или более отдельных источников в единое представление или датасет. Обычно каждый источник сначала агрегируют по общему полю для связи, например дате, магазину или региону, а затем сопоставляют. Термин пришёл из инструментов бизнес-аналитики, где смешивание позволяет показывать рядом месячный маркетинговый бюджет из одной системы и ежедневные продажи из другой, не загружая предварительно оба источника в одну базу данных. В машинном обучении смешиванием также называют объединение нескольких датасетов в один обучающий набор, например реальных изображений с синтетическими данными или открытого эталонного датасета с изображениями, полученными камерами компании.
Как работает смешивание данных#
В реализации Tableau первый источник, использованный в представлении, становится основным и определяет это представление. Каждый вторичный источник запрашивается отдельно, агрегируется по уровню полей связи и присоединяется к соответствующим строкам. Результат похож на левое соединение, но порядок действий отличается: при соединении сначала объединяются строки, а затем выполняется агрегация; при смешивании каждый источник сначала агрегируется, а затем объединяется с другими. Этот порядок важен, когда источники имеют разную детализацию, как показывает пример с ежедневной выручкой и ежемесячными расходами на рекламу в pandas:
import numpy as np
import pandas as pd
# Source 1: daily revenue from a store database
rng = np.random.default_rng(0)
orders = pd.DataFrame({"date": pd.date_range("2026-01-01", "2026-03-31")})
orders["revenue"] = rng.integers(200, 400, len(orders))
orders["month"] = orders["date"].dt.strftime("%Y-%m")
# Source 2: monthly ad spend from a marketing tool
ads = pd.DataFrame({"month": ["2026-01", "2026-02", "2026-03"], "ad_spend": [3000, 2000, 4000]})
# A row-level join copies each month's spend onto every daily row
joined = orders.merge(ads, on="month")
print(f"ad spend after a row-level join: {joined['ad_spend'].sum():,}")
# A blend aggregates to the linking field (month) first, then combines the sources
blended = orders.groupby("month", as_index=False)["revenue"].sum().merge(ads, on="month", how="left")
blended["revenue_per_ad_dollar"] = (blended["revenue"] / blended["ad_spend"]).round(2)
print(blended)При соединении на уровне строк расходы на рекламу составляют 273 000 вместо реальных 9 000, потому что бюджет каждого месяца повторяется во всех его ежедневных строках — от 28 до 31. При смешивании сохраняется одна строка на месяц, а выручка на каждый рекламный доллар составляет 3,17 в январе, 4,06 в феврале и 2,41 в марте.
Смешивание удобно для исследовательской аналитики данных и панелей визуализации данных, когда источники находятся в разных системах, а для ответа на вопрос нужно объединить их. Значения в поле связи должны точно совпадать: например, запись «Lt. Blue» из одного источника не будет связана с «Light Blue» из другого, пока названия не очистят или не добавят псевдонимы.
Смешивание обучающих датасетов#
Команды машинного обучения смешивают датасеты, чтобы охватить больше условий, чем может предоставить любой отдельный источник. Большие языковые модели обучаются на таких смесях. Выпущенный EleutherAI в 2020 году датасет The Pile объединяет 22 источника, от научных статей до кода, в англоязычный текстовый корпус объёмом 825 GiB; каждому источнику назначен собственный вес выборки. В компьютерном зрении объединение данных с камер из разных регионов и сезонов уменьшает переобучение под отдельную среду и помогает компенсировать смещение датасета.
Для смешивания обучающих данных нужна такая же согласованность, как и для смешивания данных в бизнес-аналитике. Названия классов нужно привести к одной таксономии: например, «car», «automobile» и «vehicle» должны стать одним классом либо остаться отдельными классами намеренно. Форматы и правила разметки данных должны совпадать: один источник может размечать ограничивающей рамкой видимую часть закрытого человека, а другой — весь его контур. Очистка данных удаляет изображения, встречающиеся более чем в одном источнике. Команды выбирают тестовые данные из области развёртывания, чтобы метрики отражали целевую среду, а не самый простой источник в смеси.
Ultralytics YOLO смешивает источники во время обучения с помощью YAML-файла датасета: поле train принимает список каталогов с изображениями или файл .txt со списком путей к изображениям. Поэтому один запуск обучения может использовать и реальный, и синтетический датасет, а val перечисляет только реальные изображения.
Смешивание данных и смежные понятия#
- Соединение данных: объединяет записи построчно по совпадающим ключам в одном запросе до агрегации. Если источники имеют разную детализацию, значения дублируются.
- Интеграция данных: объединяет источники в хранилище данных или озеро данных с общей схемой на постоянной основе, обычно с помощью конвейеров извлечения, преобразования и загрузки (ETL).
- Смешивание в ансамблевом обучении: объединяет предсказания нескольких моделей с помощью метамодели, обученной на отложенной выборке. Именно такой подход использовали победители конкурса Netflix Prize; он не связан с объединением источников данных.










