648 blog

kyamanekoです。IT、思想、哲学、心理学などの記事を書いています。

Amazon Machine LearningとJavascriptによるデータマイニング実践

Amazon Machine LearningとJavascriptSDKによるデータマイニング

前回、Amazon Machin LearningとCSVデータだけで実践できる、ディープラーニングによる未来予測について解説した。
人工知能によるデータマイニングを試す、なにかの参考になったと思う。

www.kyamaneko.com

今回はその続きとして、AWS SDK for Javascriptを使い、Webブラウザから機械学習モデルを利用する方法を解説したい

今回の実習を行うことで、『独自のWebアプリケーションで見込み顧客を新規登録したときに、リアルタイムに成約率を予測する』という機能を実装できる。

 

目次

作業の流れ

  1. 機械学習モデルを作る
  2. リアルタイム予測のテストをする
  3. エンドポイントを作る
  4. API接続権限を作る
  5. アプリケーションを作る

1. 機械学習モデルを作る

Amazon MLでプログラミング不要の機械学習&簡単データ解析 - 648 blog

上記の手順に従って、ML modelを作成しておく。

準備が終わったら、以下の手順へ進む。

2. リアルタイム予測のテストをする

外部からAPI接続するには、事前にAPIエンドポイント(接続先URL)を作成する必要がある。

また、エンドポイントを作る前に、まずはリアルタイム予測のテストを行う。

そこで、「Amazon Machine Learning▼」のメニューから、[ML models]を開き、学習の完了したモデルの詳細画面を開く。

その後、画面の下部にある『Try real-time predictions』ボタンを押す。

f:id:kyamaneko:20161218201021p:plain

 

リアルタイム予測の実行画面にくるため、ここでテストを行う。

Nameの変数名『id』『age』『sex』については、のちほど、アプリケーションからの接続時に指定する、パラメータ名になる。

ここでは、ageに40(40歳)を、sexに1(女性)を指定して、『Create prediction』をクリックする。

すると、右側にAPIの実行結果が表示される。

その中の、『predictedScores』に100をかけた値が、『成約率』となる。

f:id:kyamaneko:20161218201602p:plain

3. エンドポイントを作る

APIの出力値を確認できたら、画面下部の『Create endpoint』をクリックする。

金額や利用条件についての確認画面が表示される。確認できたら、『Create』をクリックする。

エンドポイントを公開し続ける間、一時間あたり$0.001、1アクセスあたり$0.0001が発生するようだ。

f:id:kyamaneko:20161218201948p:plain

 

ML modelの詳細画面に遷移する。
しばらくすると、『Endpoint Url』が表示される。
あとでアプリケーションで使用するため、メモしておく。

f:id:kyamaneko:20161218202045p:plain

4. API接続権限を作る

画面上部のアカウント名部分を展開し、『セキュリティ認証情報』をクリックする。

f:id:kyamaneko:20161218202510p:plain

 

下記のような表示が出たら、『IAMユーザーの使用開始』をクリックする。

f:id:kyamaneko:20161218202612p:plain

 

『ユーザーを追加』をクリックする。

f:id:kyamaneko:20161218202700p:plain

 

『ユーザー名』を任意で指定し、『プログラムによるアクセス』にチェックを入れ、『次のステップ:アクセス権限』をクリックする。

f:id:kyamaneko:20161218202803p:plain

 

『ユーザーをグループに追加』が選択されている。
まだグループを作成していない場合は、Machine Learning用のグループを作成するため、『グループの作成』をクリックする。

f:id:kyamaneko:20161218203007p:plain

 

『グループ名』を任意で指定し、「AmazonMachineLearningRealTimePredictionOnlyAccess」をフィルター検索する。
「AmazonMachineLearningRealTimePredictionOnlyAccess」にチェックして、『グループの作成』をクリックする。

f:id:kyamaneko:20161218203036p:plain

 

『次のステップ:確認』→『ユーザーの作成』と進むと、最後に認証情報が表示される。

この画面で、『アクセスキーID』と『シークレットアクセスキー』が表示されるので、これをメモしておく。

f:id:kyamaneko:20161218203446p:plain

5. アプリケーションを作る

Javascriptを利用し、Webブラウザで機械学習モデルを利用したリアルタイム予測をできるようにする。

まずは、以下のzipファイルをダウンロードして、展開する。

ダウンロード:aml.html.zip

中には、以下のようなサンプルのHTMLファイルが入っている。

[aml.html]
<!DOCTYPE html> <html> <head> <title>AMLテスト</title> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.6.10.min.js"></script> <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> </head> <body> <h1>AMLテスト</h1> <input type="button" value="実行" onclick="prediction()"> <script> function prediction(){ // 接続情報 var ENDPOINT = "https://machinelearning.us-east-1.amazonaws.com"; var REGION = "us-east-1"; var ACCESS_KEY_ID = "xxxxxxxxxxxxxx"; var SECRET_ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // ML model詳細画面で確認できる『ID』 var ML_MODEL_ID = "ml-xxxxxxxxx"; // ML model詳細画面で確認できる『Endpoint Url』 var PREDICT_ENDPOINT = "https://realtime.machinelearning.us-east-1.amazonaws.com"; // 評価する変数 var PARAM_ID = "0"; // idを必要に応じて指定 var PARAM_AGE = "43"; // 年齢を指定 var PARAM_SEX = "1"; // 0-男性,1-女性を指定 // 評価の実処理 var machinelearning = new AWS.MachineLearning({ apiVersion: '2014-12-12', endpoint: ENDPOINT, region: REGION, accessKeyId: ACCESS_KEY_ID, secretAccessKey: SECRET_ACCESS_KEY }); var params = { MLModelId: ML_MODEL_ID, /* required */ PredictEndpoint: PREDICT_ENDPOINT, /* required */ Record: { 'id' : PARAM_ID, 'age' : PARAM_AGE, 'sex' : PARAM_SEX } }; machinelearning.predict(params, function(err, data) { if (err) { console.log(err, err.stack); // an error occurred } else { console.log(data); // successful response alert("成約率 "+Math.round(data.Prediction.predictedScores[0]*100)+"%"); } }); } </script> </body> </html>

Amazonが配布しているAWS SDK for JavascriptをCDNより読み込み、リアルタイム予測を実行するスクリプトが埋め込まれている。

Webブラウザで上記HTMLを表示し、『実行』を押すと、『成約率00%』というポップアップが表示されるようになっている。

(このスクリプトを実行することで、1アクセスあたり$0.0001が発生する。認証情報を埋め込んだHTMLファイルの取り扱いには要注意)

f:id:kyamaneko:20161218210546p:plain

 

なお、各変数には以下を設定してもらいたい。

ENDPOINT / REGION

Regions and Endpoints - Amazon Machine Learning

上記ページを元に、EndpointとRegionを選んで指定する。

ACCESS_KEY_ID / SECRET_ACCESS_KEY

前の手順で取得した認証情報を指定する。

ML_MODEL_ID

『ml-xxxxxxxx』の形式の、モデルIDを指定する。

PREDICT_ENDPOINT

https://realtime.machinelearning.xxxx.amazonaws.com』の形式の、モデルEndpoint Urlを指定する。

PARAM_ID / PARAM_AGE / PARAM_SEX

アプリケーションで発生した値を指定する。今回はハードコーディングにしておく。

(PARAM_IDについては、ダミー値=0でもよい)

 

なお、AWS SDKについては、『PHP』『.Net』『Java』『Python』『Ruby』『その他スマートデバイス』など、多くの種類が用意されている。

AWS のツール | AWS

その他参考ドキュメント

ブラウザ内の AWS SDK for JavaScript

アクセスキー ID と秘密アクセスキーの取得 - Amazon Simple Queue Service

開始方法 - Amazon Machine Learning | AWS

Class: AWS.MachineLearning — AWS SDK for JavaScript

まとめ

そんなわけで今回は、『Amazon Machine LearningとJavascriptによるデータマイニング』として、Javascriptを使ったWebブラウザによるリアルタイム予測について解説してみた。

みなさんにも、ぜひ試してみて頂きたい。

さて、AWSや機械学習に触れる上で、以下のような書籍が参考になる。可能であれば入手しておきたいところ。

こちらの記事も参考に

www.kyamaneko.com

www.kyamaneko.com

www.kyamaneko.com




Amazon.co.jpアソシエイト