Data Blending
データブレンディングでは、別々のソースのデータを共通のフィールドに集約してから照合します。BIツールや、複数のデータを混合したML学習セットで用いられます。
データブレンディングとは、2つ以上の別々のソースからのデータを1つのビューまたはデータセットにまとめることです。通常は、日付、店舗、地域などの共通の結合フィールドに各ソースを集約してから照合します。この用語はビジネスインテリジェンスツールに由来します。そこでは、両方のデータを1つのデータベースに読み込まずに、一方のシステムの月次マーケティング予算を、別のシステムの日次売上の横に並べることができます。機械学習では、実画像と合成データ、または公開されたベンチマークデータセットと企業独自のカメラ画像など、複数のデータセットを1つの学習セットに混ぜることもデータブレンディングと呼びます。
データブレンディングの仕組み#
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)行単位で結合すると、各月の予算が日次の行28~31件すべてに繰り返されるため、実際は9,000の広告費が273,000と報告されます。ブレンドでは月ごとに1行が維持され、広告費1ドル当たりの収益は1月が3.17、2月が4.06、3月が2.41となります。
ブレンディングは、ソースが異なるシステムにあり、1つの問いに答えるために組み合わせが必要となる、探索的なデータ分析やデータ可視化用ダッシュボードに適しています。結合フィールドの値は完全に一致する必要があります。そのため、一方のソースの「Lt. Blue」は、名前を正規化するか別名を設定しない限り、もう一方のソースの「Light Blue」と結合されません。
学習データセットのブレンディング#
機械学習チームは、単一のソースでは網羅できない条件に対応するため、データセットをブレンドします。大規模言語モデルは、このような混合データで学習します。EleutherAIが2020年に公開したThe Pileは、学術論文からコードまで22のソースをブレンドし、各ソースに独自のサンプリング重みを設定した825 GiBの英語テキストコーパスです。コンピュータービジョンでは、多様なカメラ、地域、季節のデータセットをブレンドすることで、特定の環境への過学習を減らし、データセットバイアスに対処します。
学習データのブレンドにも、BIブレンドと同じ調整が必要です。クラス名を1つの分類体系に対応付け、「car」「automobile」「vehicle」を単一のクラスにまとめるか、意図的に別々のクラスとして扱う必要があります。データアノテーションの形式と規則も一致させなければなりません。あるソースでは遮蔽された人物の見えている部分にバウンディングボックスを付ける一方、別のソースでは全身の輪郭を囲む場合があるためです。データクリーニングでは、複数のソースに含まれる重複画像を除去します。チームはテストデータをデプロイ先のドメインから取得し、混合データの中で最も簡単なソースではなく、対象環境を反映した指標を得ます。
Ultralytics YOLOでは、トレーニング時にデータセットYAMLを使ってソースをブレンドできます。trainフィールドには画像ディレクトリのリストを指定でき、画像パスを記した.txtファイルも指定できます。そのため、1回のトレーニングで実データセットと合成データセットの両方を使いながら、valには実画像だけを記載できます。
データブレンディングと関連用語の違い#
- データ結合:1つのクエリ内で、集約前に一致するキーを使ってレコードを行ごとに結合します。ソースの粒度が異なると値が重複します。
- データ統合:通常は抽出、変換、読み込み(ETL)パイプラインを通じて、共通スキーマを持つデータウェアハウスまたはデータレイクにソースを恒久的に統合します。
- アンサンブル学習におけるブレンディング:ホールドアウトセットで学習したメタモデルを通じて複数モデルの予測を組み合わせる手法です。Netflix Prizeの優勝エントリーで使われました。データソースの統合とは関係ありません。










