*

Prediction API入門(中編)

公開日: : 最終更新日:2015/03/31 投稿者: GCP

Prediction API入門実行編

みなさん、こんにちは。

前編では、Google Prediction APIの概要のみのご紹介でしたが、今回はいよいよ、実際の例をもとに解説をしていきたいと思います。ここで扱う予測の例は、公式ドキュメントのGetting Startedのものですが、本記事では、Prediction API v1.6に用意されている全てのメソッドについて、APIs Explorer*を用いて実行し、ひと通り解説を行います。

なお、「Prediciton API入門」は、前・後編の予定でしたが、前・中・後編の3つに分けることになりました。後編では、Javaによるサンプルプログラムをご紹介する予定です。

*APIs Explorerの基本的な使い方については、こちらの記事をご覧ください。

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

Prediction API入門(前編)

Prediction API入門(後編)

 

事前準備

学習データの用意

今回扱う例では、与えられたテキストが”英語”, “フランス語”, “スペイン語”のどれであるかの予測すを行います。前編で記したように、予測モデルを作成するために、学習データが必要です。下記リンクから学習データをダウンロードしてください。

language_id.txt

 ファイルの中身を見てみると、学習データは、1カラム目にラベル(”English”, “French”, “Spanish”のいずれか)、2カラム目に英語、フランス語、スペイン語のいずれかのテキストが書かれたCSV形式のテキストファイルとなっています。このようなデータを用いて、学習を行い、テキストを渡したときに、そのテキストがどの言語であるかを予測することになります(下図)。

language_prediction

GCPプロジェクトの設定

まずは、APIを使用するためのGCPプロジェクトの準備を行います。Developer’s Consoleでプロジェクトを作成し、以下の設定を行ってください。

  • APIを有効にする

左のメニューから「APIs & auth」>「APIs」を選択し、Prediction APIとGoogle Cloud Storageをオンにしてください。

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

「Storage」>「Cloud Storage」>「Storage browser」を選択し、バケットを作成してください。作成したら、そのバケットの直下にlanguage_id.txtをアップロードしてください。

各メソッドの実行

準備ができたら、実際にPrediction APIを使ってみましょう。ここでは、APIs Explorerを用いて、各メソッドを実行する手順とその結果を記し、解説をしていきます。

insert

insertメソッドでモデルの作成を行います。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.insertを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力:「GCPプロジェクトの設定」で作成したプロジェクト名
  4. Request bodyを入力: idは任意の値、storageDataLocationは”バケット名/language_id.txt”
  5. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.insert

Responseが”200 OK”となっていれば、学習が開始されています。ただし、学習が完了していないと、予測は行えません。学習が完了しているかは、getメソッドで確認する必要があります。

get

getメソッドで、作成したモデルの状態を確認します。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.getを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. idを入力: insertメソッドで指定したidと同じ
  5. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.get

上の例では、trainingStatusが”DONE”になっているので、学習が完了して、予測を行える状態になっていることが確認できます。学習がまだ完了していない場合は、trainingStatusの値が”RUNNING”と表示されます。その他に、modelInfo内のプロパティを見ると、numberInstancesから406件の学習データが入力されたこと、modelTypeが”classification”となっていることから、分類を行うモデルが作成されたこと、numberLabelsから、3カテゴリの分類を行うモデルであること、classifictionAccuracyから予測精度が98%と見積もられていることがわかります。

analyze

analzyeメソッドで、モデルの分析を行います。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.analyzeを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. idを入力: insertメソッドで指定したidと同じ
  5. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.analyze

dataDescriptionの中には、学習データの分析結果が記述されています。outputFeatureを見ると、学習データのうち、ラベルがEnglishであるものが157件、Frenchであるものが149件、”Spanish”であるものが100件であったことがわかります。featuresからは最初(0番目)の特徴量は、textタイプでデータが406件あったことが読み取れます。また、今回は特徴量は1列のみでしたが、複数あった場合は、indexが0, 1, 2, …となり、それぞれの分析が表示されます。また、データのタイプによって表示される情報が異なります。(例えば、numericの場合、平均値や分散が表示されます。)

 modelDescriptionは作成されたモデルに対する分析で、混同行列(confusion matrix)の情報が表示されています。混同行列は、予測モデルの評価によく使われるもので、上の例で言うと、正解が”English”であるものを”English”と予測した数、”French”と予測した数、”Spanish”と予測した数、同様に、正解が”French”および”Spanish”だったものについての数が記述されています。つまり、以下のような行列になっています。

confusoin_matrix

これらの数値がどのように計算されているかは、ドキュメントにあまり詳しく書かれていません。FAQには交差検証(cross-validation)によって、エラーを見積もっているとだけ書かれています。上の表のでは、全てのセルの合計値が学習データの約1割なので、おそらく、データを10分割して、データの9割を学習データとし、残りの1割を未知データとして予測させるということを何回かやって平均値を算出しているのではないかと思います。

predict

predictメソッドで、予測を行います。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.predictを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. idを入力: insertメソッドで指定したidと同じ
  5. Request bodyを入力:

{

“input” : {

“csvInstance”: [

“I’ll be back”

]

}

}

  1. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.predict

上の例では、”I’ll be back”というテキストが何語であるかを予測しています。outputLabelが”English”になっているため、”English”であるという予測結果が得られたことがわかります。outputMultiには、それぞれのカテゴリである確率が見積もられています。確率なので、全てのカテゴリの値の総和は1になり、また、ouputLabelはこの確率が最大のものとなります。今回は、”English”が1になっているので、予測結果はかなり確からしいと言えます。

list

listメソッドでprojectに紐付いたモデルの一覧を取得します。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.listを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.list

update

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.listを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. idを入力: insertメソッドで指定したidと同じ
  5. Request bodyを入力:

{

“output”: “English”,

“csvInstance” : [

“This is a pen”

]

}

  1. Executeをクリック

trainedmodels.update

Responseに“200 OK”と表示されれば成功です。これを実行すると、再度、学習が始まります。getメソッドで状態を確認して、trainingStatusが”DONE”になれば、モデルが更新され、予測に反映されます。

delete

deleteメソッドで、作成したモデルを削除します。

  1. APIs EXplorerのPrediction APIの画面からprediction.trainedmodels.listを選択
  2. Authorize requests using OAuth 2.0をON
  3. projectを入力: 「GCPプロジェクトの設定」で作成したプロジェクト名
  4. idを入力: insertメソッドで指定したidと同じ
  5. Executeをクリック

Responseに以下のように表示されます。

trainedmodels.delete

成功すると、”204 No Content”と表示されます。実際に削除されたかどうかは、listメソッドでモデル一覧を表示することで確認できます。

まとめ

以上、Google Prediction APIのひと通りの使い方を紹介してきました。データさえ用意すれば、簡単に予測を実行できることがお分かりいただけたかと思います。

もう一度、おさらいすると、Google Prediciton APIは教師付き機械学習アルゴリズムを用いた予測機能を提供してくれます。Prediction API v1.6では、analyze, delete, get, insert, list, predict, updateというメソッドが用意されており、getメソッドで得られる正答率、analyzeメソッドで得られる混合行列を見ることで、作成されたモデルの予測精度について考察することもできます。

この記事を読んで興味がわいた方は、公開されているデータやお手持ちのデータを使って、試してみてはいかがでしょうか。

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

Prediction API入門(前編)

Prediction API入門(後編)

この記事を書いた人

hida
雑食エンジニア/にわかSF者

関連記事

2016/11/07 GCE vs AWS vs Azure ベンチマーク

2016/11/07 GCE vs EC2 vs Azureベンチマーク 本シリー

記事を読む

[GoogleAPI千本ノック] Google Cloud DNS API を試してみた

こんにちは。 GoogleのAPIを隔週で片っ端から紹介する、GoogleAPI千本ノック 第三

記事を読む

APIs Explorer使ってみた

GoogleのAPI達 皆さん、APIs Explorer使ってますか? GoogleはGm

記事を読む

GCEはどこまでディスクを拡張できるのか?手順は?

GCEではディスク容量を自由に設定することができますが、どこまで容量が増やすことができるのか

記事を読む

PaaS最前線!たったの15分でできるGAE/GO入門!

はじめに 2015年7月ついにGoogle App EngineのGO言語正式サポートが決定しまし

記事を読む

初心者のためのGCPプロジェクト始め方入門

GAE、GCE、BigQuery等のサービスを開始する場合、ユーザには共通でおこなわないといけない手

記事を読む

2015/01/15 GCE vs AWS ベンチマーク

2015/01/15 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

2015/04/10 GCE vs AWSベンチマーク

2015/04/10 GCE vs AWS ベンチマーク 本シリーズでは定期的にGCEとEC2のベ

記事を読む

GCPで東京リージョンにて使えるサービス&使えないサービス一覧

GCPの東京リージョンが遂に発表!! 遂に東京GCPリージョンが発表されましたね。これまでGC

記事を読む

15分でできる!GCE上でGO言語を動作させるための手順

GCP上でGO言語を動かす場合、一番最初に思い浮かぶのはGAE/GOだと思いますが、中にはGCE上で

記事を読む

PAGE TOP ↑