BigGorillaのコンポーネントの一部を例として紹介します。
データ収集とデータ抽出:
リレーショナルデータベース管理システムからテーブルX(id, name, loc)を取得し、ニュース記事のセットからテーブルY(id, cname, address, rev)を抽出したとします。
テーブルXは会社の名前および場所に関する情報を含み、テーブルYはそれぞれの会社について住所と四半期の収益(単位:十億ドル)の情報を含みます。
データクリーニング:
GEのrevenue 351 (テーブルYの最後の行)は異常値であると判断しました。詳しく調べた結果、抽出エラーによって35.1であるべきものが351になっていたことがわかりました。したがってこの値を手入力で35.1に変更しました。
* 一般的には、このほかにも多くのタイプのクリーニング処理があります。
スキーママッチング:
次にテーブルXとYのスキーマのマッチングを行います。マッチname⬌cnameとloc⬌addressを取得します。直観的に判断すると、テーブルXの属性nameはテーブルYのcname と同じであり、テーブルXの属性locはテーブルYのaddressと同じです。
スキーママージング:
テーブルXとYの間のマッチング、name⬌cnameおよびloc⬌addressをもとに、データサイエンティストは2つのスキーマX(id, name, loc)およびY(id, cname, address, rev)を1つのスキーマZ(name, loc, rev)に統合することを選択するかもしれません。マージ処理ではid属性は省略されます。これはデータサイエンティストの意識的な選択です。
データマッチング:
次に、テーブルXとYのタプルのマッチングを行います。マッチングプロセスでは以下の関連付けを行います: x1 ≃ y2 and x2 ≃ y1直観的には最初のマッチx1 ≃ y2はタプル x1およびy2が同じ現実世界のエンティティ(この例では同じ会社、Apple Inc.)を参照していることを示します。同様に、タプルx2およびy1は同じ会社IBM Corpを参照しています。これらのマッチはテーブルMに格納されます。
データマージング:
ここで同じエンティティを参照するタプルをマージすることを決定します。たとえば、x2 = (IBM, NY)とy1=(IBM Corp., CA, 25)をマッチングname⬌cnameおよびloc⬌addressに従ってスキーマZ(name, loc, rev)に適合する1つのタプルにマージする場合、name 属性の矛盾する値 “IBM” と “IBM Corp.” をどのように扱い、loc属性の矛盾する値”NY”と”CA”をどのように扱うかを決定しなければなりません。
nameについては、長い方の文字列を優先する(この例では”IBM Corp.”)ようなヒューリスティクを作成するとよいでしょう。なぜなら、長い文字列の方がより正確で、多くの情報を含むことが多いからです。locについては、常に最初のテーブルから選択する(この例では”NY”)ようなルールを作成するとよいでしょう。なぜならテーブルXは高品質の洗練されたリレーショナルデータベースだからです。
もちろんデータをマージする方法はほかにもあります。一般的に、データサイエンティストはドメインおよびリソースに関する知識をもとにしてヒューリスティクを作成します。
スキーママッピング:
テーブルXおよびYに格納されているデータをテーブルZに変換するプログラムをスキーママッピングと呼びます。ここではスキーママッピングはXおよびYからのタプルをZにマイグレートする方法についての理解をもとに開発されています。プログラムとしてテーブルXおよびYからのタプルをもとにテーブルZにデータを入力するSQLクエリを使うこともできます。それはテーブルMを使ってマッチを判定し、関数merge_name(.)を使って前に説明した長い方の文字列を選択するヒューリスティックを適用します。
議論のポイント
上記の例はデータ統合の主要なステップを説明するために単純化されています。実際には各ステップを実行する順序が異なったり、一部のステップが繰り返されたりすることもあります。たとえば、テーブルZが取得された後、データが再びクリーニングされ、他のデータセットとマッチングおよびマージングされることがあります。また、テーブルYの最後のタプルに関する情報を廃棄する代わりに、データサイエンティストはSQLクエリで外部結合を実行することによって最後のタプルを残しておくことを選択できます。
一般的に、スキーママッチング/マージング、データマッチング/マージングなど多くのステップは例で示すほど些細なことではありません。したがってスキーママッピングと希望するスキーママッピングに到達するためのプロセスは上記で示したほど些細な問題ではありません。データサイエンティストがデータを取得するのを容易にするために、各ステップでデータサイエンティストを支援する半自動ツールが重要です。
上記の例はデータサイエンスパイプラインの”データ取得”の側面を取り上げています。種々のソースからのデータが1つのデータベースに統合された後、データサイエンティストは分類、クラスタ化、異常検出、相関関係の発見、OLAPスタイルの探索などの技法を使ってデータの分析を実行することができます。