非エンジニアが『Google Prediction API』をスプレッドシートで使ってみた

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

近年、ビッグデータの活用にあたり人工知能の分野がアツいですねー。

与えられた検索ワードに対して適切な結果を返したり、ユーザーの行動履歴から年齢や性別などの属性を推測し、適切な広告を表示させたり、次のアクションを提案したり、様々なところで人工知能が活躍しています。

今回は御大Googleさんで使われている人工知能API 「Google Prediction  API」をサクッと体験してみますね。

まず機械学習ってなんぞ?

機械学習ってこんな感じ

Prediction とは“予測”を意味する英語で、「Google Prediction API」を使うと、機械学習による様々な予測を手軽に実現することができるんです。

じゃ、機械学習ってなんぞってことになりますが、機械学習とは、人工知能における研究分野の1つで、人間が自然に行っている学習能力と同様の機能をシステムで実現する技術になります。

例えば、スパムメールを判別するシステムを考えてみましょう。

これを機械学習を使わないで実装しようとすると、“ある特定の単語が本文に3回以上含まれていたらスパムと判断する”というようなルールをいくつも用意して判別することになっちゃいます。

この方法で、汎用性と高い判定精度を実現するのは現実的ではありませんし、スパムメールの傾向が変わったら、また条件を見直し、プログラムを修正する必要があって結構大変。

機械学習を使うと、実際にスパムメールであるとわかっているメールのデータ群(学習データ)を入力 ⇒ スパムかどうかを『考えて判別する』システムに育っていく。みたいなイメージで大体OKです。

判定精度についても学習データの増加に伴って自動で向上し、スパムメールの傾向が変わった時も、判定条件を見直してくれるんです。

Google Prediction API をもう少し詳しく

Googleの提供するPrediction APIが提供する機能は、機械学習の中でも「教師あり学習」と呼ばれるアルゴリズムになります。

「教師あり学習」では・・・

  • まず、答えのわかっているデータを例題(教師からの助言)とみなして学習を行い、モデルを作成
  • そのモデルを用いて、未知のデータに対する予測を実行

    と、こんな動きをします。

    例えば、前述のスパムメールの判別も、「教師あり学習」の例です。

    この場合、実際のスパムメールとそうでないメールを適量用意し、1つ1つのメールを、“スパムかどうかを表すラベル”とメールの本文をセットにして学習を行いモデルを作成します。

    予測を行うときは、メールの本文を入力値として、モデルと照らし合わせて予測結果(スパムであるかどうか)を返します。

    教師あり機械学習 SPAM判定の例

    次は実際にGoogleスプレッドシートを使ってPrediction APIを試してみます。

    GoogleスプレッドシートからPrediction APIを利用する

    実際に利用するときはディベロッパー登録したり、Prediction API やGoogle Cloud Storage の設定をしないといけないのですが、なんとGoogleスプレッドシートから利用できるアドオンが提供されています。

    ありがとうスプレッドシート、ありがとうGoogle先生。

    で、今回はこのアドオンを利用してPrediction APIを利用してみますね。

    1.アドオンのサイトから「Smart Autofill」アドオンをインストール

     >>「Smart Autofill」アドオンインストール

    「Smart Autofill」アドオン

    2.サンプルデータのダウンロード

     >>サンプルデータテキスト

    3.サンプルデータをシートにインポート(コピペでもOK)

    4.スマートオートフィルをスタート

    スマートオートフィルをスタート

    5.集計する範囲を選択してnext

    集計する範囲を選択してnext

    6.予測結果を入れる列を指定してstart

    予測結果を入れる列を指定してstart

    7.3分まったらハイ出来上がり

    3分まったらハイ出来上がり

    どうでしょう?

    サンプルデータのPriceの部分の穴がPrediction API の予測によって埋まりましたよね。なんかサラッとしてますが、今Googleの人工知能APIを使ったんですよ。

    これを応用すると例えば・・・

  • 商品に対するご意見をポジティブ/ネガティブで分類したり
  • 商品の購入にいたった人の属性を割り振ったり
  • 同様に商品を買ってくれそうな人の属性を予測したり
  • なども、割とシンプルに実装可能になっていきます。

    『あれ?意外とカンタンなんだな』なんて思った方、ぜひ実際の現場で活用してみてください。

    なんか作ってみたらコメントやメッセージお待ちしてますー。