Prediction API入門(前編)

  • このエントリーをはてなブックマークに追加

ご注意

この記事は 2014年10月30日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

データサイエンスとGoogle Prediction API

みなさん、こんにちは。

ここ最近、ビッグデータという言葉が流行したり、「データ・サイエンティストは21世紀で最もセクシーな職業だ」と称されるなど、データを分析して、役に立つ情報を引き出す、データサイエンスという学問が注目を浴びています。

WEBの世界では、与えられた検索ワードに対して適切な結果を返したり、ユーザの行動履歴から年齢や性別などの属性を推定し、適切な広告を表示させたり、スパムメールを判別したり、様々なところでデータサイエンスの手法が応用されています。この業界の最先端であるGoogleは当然、データサイエンスを応用した優れた技術を有しており、さらにすごいことには、その一部をAPIとしてユーザに公開しています。今回紹介するGoogle Prediction APIはその一つです。

データサイエンスは統計学・機械学習・パターン認識・データベースなどの様々な分野と関わりがありますが、Google Prediction APIは、機械学習による予測機能を提供するAPIです。本記事では、前・中・後編に分けて、前編では機械学習とGoogle Prediction APIの概要について説明し、中・後編では実際に利用する方法を説明します。

中編・前編の記事はこちら

Prediction API入門(前編)
Prediction API入門(中編)
Prediction API入門(後編)

機械学習とは

Google Prediction APIの説明に入る前に、機械学習について簡単に説明します。機械学習とは、人工知能における研究分野の1つで、「与えられたデータから学習し、知識やルールを自動で獲得するシステム」と言えるでしょう。

例えば、与えられたメールがスパムであるかを判別するシステムを考えてみましょう。これを機械学習を用いないで実装しようとした場合、”ある単語がN個以上含まれていたらスパムと判断する”というようなルールを、プログラム上に静的に書いて判別しなければいけません。この方法で、汎用性と高い判定精度を実現するのは現実的ではありませんし、スパムメールの傾向が変わったら、また、人間がデータを分析し直し、プログラムを書き換えなければなりません。

機械学習を用いると、実際にスパムである/スパムでないとわかっているメールのデータ群(学習データ)を入力として、そのデータを正しく判別できるようなルールを、システムが動的に獲得し、スパム判別システムを構築することができます。判定精度は学習データの量と質、問題の複雑さにもよりますが、多くの場合、数十から数百件の学習データで十分な精度が得られると言われています。また、データの傾向が変わった時も、新しいデータで学習しなおせば問題ありません。

Google Prediction API

概要

predictionとは”予測”を意味する英語で、Google Prediction APIを用いると、機械学習による様々な予測を手軽に実現することができます。Prediction APIが提供する機能は、機械学習の中でも教師付き学習と呼ばれる種類のものです。教師付き学習では、まず、答えのわかっているデータ・セットを使って学習を行い、モデルを作成します。そして、そのモデルを用いて、未知のデータに対する予測を行います。

例えば、上述のスパムメールの判別も、教師付き学習の例です。この場合、実際のスパムメールとそうでないメールを適当な量だけ用意し、1つ1つのメールを、”スパムかどうかを表すラベル”と”メールの本文”のペアとして表現し、それらのセットを用いて学習を行います。予測を行うときは、メールの本文を入力値として、予測結果(スパムであるかどうか)を出力します。

spam_detection

上記の例は、分類を行う(カテゴリを予測する)例ですが、Prediction APIを使って、数値を予測することもできます。

学習データの構造

学習に用いるデータの構造は、テーブル構造として考えられます。1行は1つ1つのデータに対応します(上述のメールでは、1行が1通のメールです)。列のうちの1つは答えとなる値(上述の例では、スパムであるかどうかのラベル)で、それ以外の列は特徴量(上述の例では、メール本文)です。列数は2列以上であれば、どれだけあってもいいですが、全ての行で列数が揃っている必要があります。ただし、値を空にすることはできます。また、特徴量は値によって、text, categorical, numericの3種類に区別されます。

実際に、Prediction APIを使って学習を行う場合、Google Cloud Storage(GCS)上のCSVファイルを学習データとする方法や、APIへのリクエストに学習データを含める方法などがあります。CSVファイルを学習データに用いる場合は、1列目に答えとなる値、2列目以降を特徴量とします。CSVを用いる方法が、最も馴染みやすいかと思いますので、本記事で紹介する例でも、CSVファイルを学習データとします。

利用できるメソッド

Prediction API v1.6では自分のプロジェクトに紐付いているモデル(trained model)を操作する、下記のメソッドが提供されています。また、公開されているモデル(hosted model)に対して、predictメソッドを使って予測を実行することができます。

analyze

学習によって構築されたモデルや使用された学習データの分析を行います。

delete

既存のモデルを削除します。

get

既存のモデルの状態を取得します。

insert

学習データからモデルを構築します。

list

既存のモデルの一覧を取得します。

predict

既存のモデルを利用して予測を行います。

update

既存のモデルに新しい学習データを追加します。

Google Prediction APIの利用方法

今回は、Prediction APIを使って、実際に予測を行うまでの流れを簡単に説明します。

1.学習データの用意

CSV形式の学習データを用意します。フォーマットは前述の通り、1カラム目にラベル、2カラム目以降が特徴量です。ヘッダ行は付けてはいけません。また、ファイルサイズの上限は2.5GBです。

2.GCPプロジェクトの作成

APIを使用するためのGCPプロジェクトの準備を行います。Developer’s Consoleでプロジェクトを作成し、以下の設定を行う必要があります。

  • Prediction APIを有効にする
  • Cloud Storageに学習データをアップロードする

3.予測モデルの作成

insertメソッドを使って、学習データからモデルを生成します。リクエストパラメータには、GCPプロジェクトのID、学習データのパス、作成するモデルのIDが必要です。

4.予測の実行

predictメソッドを使って、予測を行います。リクエストパラメータには、GCPプロジェクトのID、予測に使うモデルのID、予測したいデータが必要です。

まとめ

以上、Google Prediction APIの概要について、紹介してきました。おさらいになりますが、Google Prediciton APIは教師付き機械学習アルゴリズムを用いた予測機能を提供してくれます。①学習データを用意、②GCPプロジェクトの設定、③予測モデルの作成、④予測の実行という手順を経ることで、手軽に機械学習による予測を実現することができます。

中・後編では、より具体的なAPIの解説やAPI Client Libraryを使ったサンプルプログラムを紹介しています。

中編・前編の記事はこちら

Prediction API入門(前編)
Prediction API入門(中編)
Prediction API入門(後編)
  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら