Google BigQuery上で機械学習を動かす

Google BigQuery上で機械学習を動かす

1.Google BigQuery上で機械学習を動かすまとめ

・ビッグデータを高速に操作できるクラウドサービスGoogle BigQuery上で機械学習が実行可能に
・SQLを扱った人なら比較的容易に使いこなす事ができそうな使い勝手
・将来的にBigQuery MLには予測以外にも様々な機能が追加される予定

2.Google BigQuery上の機械学習とは?

以下、ai.googleblog.comの「Machine Learning in Google BigQuery」の意訳です。

Google BigQueryを使用すると、大規模なデータセットをインタラクティブに分析できるため、企業が有意義な洞察を共有し、顧客分析に基づいてソリューションを開発することが容易になります。しかし、BigQueryを使用しているビジネスの多くは、機械学習を使用してデータの理解を深めていません。これは、SQLに精通したデータ・アナリストは、機械学習技術を適用するために必要な伝統的なデータサイエンスのバックグラウンドを持っていない可能性があるからです。

今日、データサイエンティストとデータアナリストが大規模な構造化または半構造化データセットで機械学習モデルを構築および展開できるBigQuery内の機能であるBigQuery MLを発表します。 BigQuery MLは、ユーザーが人気のある機械学習を利用して売上を予測たりし、データを保存しているソースで顧客分類を作成するなどの予測や分析を実行できるようにするシンプルなSQL言語の拡張セットです。 BigQuery MLはスマートにデフォルトを自動設定し、データ変換を処理するため、シームレスで使いやすい操作感から優れた結果が得る事ができます。

モデルの作成

予測の作成

予測の出力


BigQuery MLバックエンドを設計するとき、Googleの開発チームはジレンマに直面しました。 BigQueryサーバーから機械学習アルゴリズムを実行する専用サーバーに大量のデータを転送するには時間がかかり、セキュリティとプライバシーの面でオーバーヘッドが発生してしまうのです。しかし、機械学習アルゴリズムの重要な最適化手法である勾配降下のコアコンポーネントは、共通のSQL演算を使用して実装できる事がわかり、既存のBigQuery SQL処理エンジンをBigQuery ML用に再利用することができました。

BigQueryエンジンは、大量のデータセットをランダムに抽出用途ではなく、ランダムなデータセットを効率的にスキャンするように設計されているため、確率的勾配降下(Stochastic gradient descent)ではなく、基本的な手法(バッチ勾配降下法:Batch gradient descent)に基づいて勾配降下法を実装しています。今日の大規模機械学習システムでは確率的勾配降下が最も使われていますが、バッチ勾配降下法は多数の実用的利点を有しています。

例えば、確率的勾配降下に基づいて実装されたデータベース内の機械学習システムは、1つずつ順番に処理されるため、データが最適な順番にソートされていない場合は性能が悪化します。しかし、BigQueryのデータは、通常のSQLクエリのパフォーマンスを最適化するためにディスク上に分割されることが多く、確率的な機械学習アルゴリズムをサポートするためにデータを継続的に分割すると計算コストが高くなってしまいます。対照的に、バッチ勾配降下法は、ディスク上のデータの順序付けおよびパーティショニングに影響を受けず、この問題を完全に回避します。また、バッチ法は、古典的最適化の線形探索法と組み合わせることができ、より安定し、多くのチューニングを必要としない学習アルゴリズムを実現できます。確率的方法を用いた線形探索法は非常に手間がかかります。私たちの実装には、正規化と前提条件のサポートも含まれています。詳細については、Googleが発表した論文をご覧ください。

BigQuery MLが多くの予測分析タスクに役立つことを期待しています。試してみるには、BigQueryコンソールにアクセスし、ユーザーガイドに従ってください。モデルの作成は次のように簡単です。

CREATE MODEL dataset.model_name
OPTIONS(model_type=’linear_reg’, input_label_cols=[‘input_label’])
AS SELECT * FROM input_table;

将来、勾配降下の実装をBigQueryインフラストラクチャとさらに統合して、パフォーマンスの向上を実現する予定です。また、BigQueryの力を活用して、大規模な問題に対して簡単かつ効率的に実装できる他の機械学習アルゴリズムについても検討します。

3.Google BigQuery上で機械学習を動かす感想

面白そうですが、BigQueryの課金形態だとある程度モデルを先に構築しておいて、大量データを元に定期的に動かすとか、そんな感じの使い方になるのでしょうか。BigQuery上で試行錯誤を実施するとお高くなってしまいそうな気もします。

4.Google BigQuery上で機械学習を動かす関連リンク

1)ai.googleblog.com
Machine Learning in Google BigQuery

2)dl.acm.org
SQML: large-scale in-database machine learning with pure SQL