前回、Amazon Machin LearningとCSVデータだけで実践できる、ディープラーニングによる未来予測について解説した。
人工知能によるデータマイニングを試す、なにかの参考になったと思う。
今回はその続きとして、AWS SDK for Javascriptを使い、Webブラウザから機械学習モデルを利用する方法を解説したい。
今回の実習を行うことで、『独自のWebアプリケーションで見込み顧客を新規登録したときに、リアルタイムに成約率を予測する』という機能を実装できる。
目次
- 目次
- 作業の流れ
- 1. 機械学習モデルを作る
- 2. リアルタイム予測のテストをする
- 3. エンドポイントを作る
- 4. API接続権限を作る
- 5. アプリケーションを作る
- その他参考ドキュメント
- まとめ
- こちらの記事も参考に
作業の流れ
- 機械学習モデルを作る
- リアルタイム予測のテストをする
- エンドポイントを作る
- API接続権限を作る
- アプリケーションを作る
1. 機械学習モデルを作る
Amazon MLでプログラミング不要の機械学習&簡単データ解析 - 648 blog
上記の手順に従って、ML modelを作成しておく。
準備が終わったら、以下の手順へ進む。
2. リアルタイム予測のテストをする
外部からAPI接続するには、事前にAPIエンドポイント(接続先URL)を作成する必要がある。
また、エンドポイントを作る前に、まずはリアルタイム予測のテストを行う。
そこで、「Amazon Machine Learning▼」のメニューから、[ML models]を開き、学習の完了したモデルの詳細画面を開く。
その後、画面の下部にある『Try real-time predictions』ボタンを押す。
リアルタイム予測の実行画面にくるため、ここでテストを行う。
Nameの変数名『id』『age』『sex』については、のちほど、アプリケーションからの接続時に指定する、パラメータ名になる。
ここでは、ageに40(40歳)を、sexに1(女性)を指定して、『Create prediction』をクリックする。
すると、右側にAPIの実行結果が表示される。
その中の、『predictedScores』に100をかけた値が、『成約率』となる。
3. エンドポイントを作る
APIの出力値を確認できたら、画面下部の『Create endpoint』をクリックする。
金額や利用条件についての確認画面が表示される。確認できたら、『Create』をクリックする。
エンドポイントを公開し続ける間、一時間あたり$0.001、1アクセスあたり$0.0001が発生するようだ。
ML modelの詳細画面に遷移する。
しばらくすると、『Endpoint Url』が表示される。
あとでアプリケーションで使用するため、メモしておく。
4. API接続権限を作る
画面上部のアカウント名部分を展開し、『セキュリティ認証情報』をクリックする。
下記のような表示が出たら、『IAMユーザーの使用開始』をクリックする。
『ユーザーを追加』をクリックする。
『ユーザー名』を任意で指定し、『プログラムによるアクセス』にチェックを入れ、『次のステップ:アクセス権限』をクリックする。
『ユーザーをグループに追加』が選択されている。
まだグループを作成していない場合は、Machine Learning用のグループを作成するため、『グループの作成』をクリックする。
『グループ名』を任意で指定し、「AmazonMachineLearningRealTimePredictionOnlyAccess」をフィルター検索する。
「AmazonMachineLearningRealTimePredictionOnlyAccess」にチェックして、『グループの作成』をクリックする。
『次のステップ:確認』→『ユーザーの作成』と進むと、最後に認証情報が表示される。
この画面で、『アクセスキーID』と『シークレットアクセスキー』が表示されるので、これをメモしておく。
5. アプリケーションを作る
Javascriptを利用し、Webブラウザで機械学習モデルを利用したリアルタイム予測をできるようにする。
まずは、以下の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ファイルの取り扱いには要注意)
なお、各変数には以下を設定してもらいたい。
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』『その他スマートデバイス』など、多くの種類が用意されている。
その他参考ドキュメント
アクセスキー ID と秘密アクセスキーの取得 - Amazon Simple Queue Service
開始方法 - Amazon Machine Learning | AWS
Class: AWS.MachineLearning — AWS SDK for JavaScript
まとめ
そんなわけで今回は、『Amazon Machine LearningとJavascriptによるデータマイニング』として、Javascriptを使ったWebブラウザによるリアルタイム予測について解説してみた。
みなさんにも、ぜひ試してみて頂きたい。
さて、AWSや機械学習に触れる上で、以下のような書籍が参考になる。可能であれば入手しておきたいところ。