今を知りたい! ビッグデータの基礎知識

はじめに

データを用いたシステム開発が増えてきています。最近であれば人工知能技術の盛り上がりなどもあり、慣れないデータ処理に苦心している人も多いのではないでしょうか。

ここ数年の技術の発展により、データ処理の環境は大きく変わりつつあります。本記事では「ビッグデータの今」をテーマに、前半は使われている場面を具体的に知るためにビッグデータの活用事例を紹介します。後半では、ビッグデータ技術の旬の話題として「データ処理の自動化」に注目し、⁠ワークフロー」「データフロー」を中心に関係する技術をピックアップします。

ビッグデータの活用例―キャンペーンの効果測定

ビジネスにおける目的の一つが売上アップです。そのためにマーケティングの施策を打つとしましょう。例えば、ネットに広告を出したり、あるいは期間限定のキャンペーンを実施したりします。その結果、どれだけ効果があったのか知りたいと思うでしょう。

ここでは例として、あるキャンペーンのためにWebサイトを立ち上げたとします。そのWebサイトを経由した売上がキャンペーンの効果となります。このような効果測定のためには、Webサイトのアクセスログからユーザの動きを追跡します。例えば、WebページにJavaScriptのタグを埋め込んで、クッキーを使って個々のユーザを識別します。

Webサイトのアクセス解析だけなら既存の製品が多数あるので、自分でデータを分析する必要はありません。しかし、やりたいことが増えるにつれて、既存の製品だけでは十分な情報が得られず、より高度な仕組みが必要となってきます。

DMP―アクセスログとユーザ情報を結び付ける

マーケティングのデータを分析するために、顧客の性別や年齢といった属性データがよく用いられます。クッキーだけではそのような情報は得られないため、自社が持つ顧客データベースや、あるいは第三者サービスから提供されるユーザ情報を、アクセスログと組み合わせて分析します。このようにユーザに関する複数のデータを結び付ける仕組みを「DMP」⁠Data Management Platform)と呼びます図1⁠。

図1 DMP
<strong>図1</strong> DMP

DMPの情報を使ってユーザをセグメントに分け、そこから更に次の施策を打ちます。例えば、⁠Webサイトを訪問したが、購買には至らなかった、30代、女性」などといった条件に当てはまるユーザを絞り込み、そのセグメントに対してネット広告を配信するなどです。

デジタルマーケティングの世界では、既にこうしたデータ処理の自動化が進んでおり、実際の広告配信やメール配信に活用されています。

機械学習―モデルを作って将来を予測する

デジタルマーケティングに限らず、これと同じようなデータ処理は、どのような分野にでも応用が考えられます。例えば、センサー機器から集めたデータに対して、⁠ここ一週間で、温度が上昇している、ビニールハウス」などといったセグメントを作り、異常がないか担当者にチェックしてもらうこともできるでしょう。

このとき問題となるのは、⁠どのようにセグメントを作ればよいか」が定かではないことです。温度の上昇がただちに異常を意味するとは限りません。何が異常かを決めるには、過去の経験に基づく判断が必要です。

ここでは「機械学習」を活用して、セグメントの作成を自動化することを考えましょう。例えば、実際に何か異常が発生したときに、その前後で起きていたことはデータを見ればわかります。⁠データ」「異常」との関係性を一つの「モデル」として定義することさえできれば、次にまた同じようなデータが送られてきたときに、異常の発生を予測できるかもしれません。

どのデータが「異常」に繋がっているかは簡単にはわからないので、可能性のあるデータは全て列挙します。例えば、温度の絶対値が重要かもしれないし、あるいは急激な温度変化が関係しているかもしれません。そのような学習に必要なデータ(多くは数値データ)を集めて整理するところでも、ビッグデータの技術は用いられます。

データ処理の自動化―ワークフローとデータフロー

ビッグデータを活用する一つの方法として、⁠システムの自動化」について考えましょう。前述の例であれば、⁠DMPのセグメントを使ってメールを配信する」⁠センサー機器のデータを機械学習してモデルを作る」などといったデータ処理の自動化です。

データウェアハウスを使ったデータの集計だけでは、このような複雑なデータ処理を実現することはできません。ビッグデータを活用する自動化の技術として、ここでは「ワークフロー」「データフロー」の考え方を説明します。

ワークフロー―タスクの実行を管理する

複雑なデータ処理は、多数の小さなタスクを組み合わせることで実現されます。メールを送りたいのであれば、まず最初に各所から集めてきたデータをストレージに格納し、それをバッチ処理で集計してメールアドレスのリストを作ります。そしてメール配送サービスのAPIを呼び出すことでメールが送られます図2⁠。

図2 ワークフロー
<strong>図2</strong> ワークフロー

このような一連のタスクを実行する仕組みを「ワークフロー」と呼びます。ここ数年で、ビッグデータのワークフローに最適化されたオープンソースの「ワークフロー管理ツール」がいくつも開発され、そのノウハウが広く知らるようになってきました。

ワークフローのタスクは多くのシステムに接続するため、しばしば予期せぬエラーが発生します。したがって、どのようなエラーが起きてもタスクを再実行できるような「エラーに強いワークフロー」の実装が求められます。ワークフロー管理ツールは、タスクの実行結果をデータベース等に記録することで、ワークフローの管理を容易にしてくれます。

オープンソースのデータフロー管理ツールには、表1のようなものがあります。

表1 オープンソースのワークフロー管理ツール
名称開発元
AirflowAirbnb
AzkabanLinkedIn
DigdagTreasure Data
LuigiSpotify
OozieThe Apache Software Foundation

データフロー―データ処理をプログラミングする

機械学習のような複雑なデータ処理では、プログラミング言語を用いることが多くなります。機械学習では、利用するアルゴリズムに合わせて最初にデータを整形しなければならず、データの「前処理」が非常に多くなります。あちこちから集めたデータを加工し、それを一つの「学習用データ」として結合し、そして「機械学習」のライブラリを呼び出すことになります図3⁠。

図3 データフロー
<strong>図3</strong> データフロー

「Apache Spark」のような分散処理のフレームワークを用いると、複雑なデータ処理を一つのプログラムとして記述できます。本記事ではこのような分散データ処理のプログラムを「データフロー」と呼びます。

データフローのフレームワークでは、データ処理を「DAG」(Directed Acyclic Graph / 有向非巡回グラフ)と呼ばれる構造で表現します。図3の例であれば、データフローは「前処理」⁠学習用データ」⁠機械学習」の三つのノードからなるDAGとして表現され、その中をデータが流れるようにして実行されます。

前述のワークフローとは違って、データフローではメモリ上で次々とデータが受け渡されます。中間データを途中でファイルやテーブルに保存する必要がなくなるため、より効率のいいデータ処理を実現しています。

このようなデータ処理のフレームワークは、そのまま「ストリーム処理」にも応用されています。つまり、センサー機器などから送られてくるデータをただちに集計することで、異常検知のようなアルゴリズムをリアルタイムに実行することが可能となります。

データフローのフレームワークには、表2のようなものがあります。

表2 データフローのためのフレームワーク
名称開発元
Google Cloud DataflowGoogle
Apache SparkThe Apache Software Foundation
Apache FlinkThe Apache Software Foundation

おわりに

従来から用いられてきた「データウェアハウス」の技術に加えて、⁠ワークフロー」「データフロー」のような仕組みを組み合わせることで、ビッグデータを活用したシステムの自動化はますます発展を続けています。

西田圭介(にしだけいすけ)

1976年兵庫生まれ。トレジャーデータ(株)に所属。著書に「Googleを支える技術 ……巨大システムの内側の世界」(技術評論社、2008)がある。