予測モデル実行まとめこんにちは。データサイエンスチームのhongsです。Calendarの17日目の記事です。Learningを活用した予測モデル作成について紹介したいと思います。QuickSightで始めるデータ分析入門)で基本給とボーナスの関係を散布図で見てみました。(基本給は年間の基本年収、ボーナスは年間ボーナスを意味します。)その結果、基本給とボーナスは比例していて強い関係性を持っているように見えました。基本給が分かれば何となくボーナスがいくら出るか予測が出来そうです。Learningを使って予測モデル化してみたいと思います。予測モデルを作成する前に本当に基本給とボーナスは強い関係があるかRを利用して相関係数で確認してみましょう。社員レベルや残業時間もボーナスと関係がありそう?なので、こちらも一緒に見てみましょう。".")下記の結果を見ると、ボーナスは基本給と0.96、社員レベルと0.74、残業時間と0.13の相関があるようです。相関係数が0.7以上の場合、強い相関があると言われてるので、やはりボーナスと基本給は密接な関係があることが分かりました。相関の強さについてはこちらをご参照ください。因みに、残業頑張ったらボーナスが多く出るという考え方はやはり古いようですね。つづいて、データに異常値はないか確認してみましょう。FALSE)})基本給やボーナスが0のデータが気になります。ボーナスが0のケースはあるとしても基本給が0のケースは考えにくいので異常値として基本給0のデータは除外します。GlueはETL(抽出、変換、ロード)がUI上で簡単に行えるサービスでここでは元データから学習に必要なカラムの抽出および異常値を除外する作業を行います。具体的には複数のカラムから基本給とボーナスカラムだけ抽出します。基本給が0のデータを除外するETLジョブを作成します。因みに、まだ東京Regionでは利用出来ないため、バージニア北部Regionを利用します。Glueが東京Regionで利用可能になりました。Glueの公式ページをご参照ください。元のデータから必要なカラムだけ抽出するMappingを作成します。Mappingを作成した後、手順に沿って進めて行くとGlueは最終的に下記のようなETL用のPythonコードを自動生成します。異常値を除外するため、自動生成されたPythonコードにFilter機能を追加します。追加したFilter機能を含んだ、全体のPythonコードは下記のようになります。このコードを保存してETLジョブを実行すれば学習に使うデータが作成されます。Learningはその名の通り、AWS上で機械学習ができるサービスで、Python、R、Scalaなどでコードを書く必要がなくUI上の設定で手軽に出来ます。詳細についてはこちらのページをご参照ください。データソースを作成します。学習データはS3とRedshiftから選ぶことが出来ます。locationに学習データの場所を指定します。次に、Schema確認とCSVファイルのheaderの扱いについて設定します。つづいて、予測したい項目(bonus)を選択して、手順に沿って進めて行くとデータソース作成が完了します。settings画面が表示されます。ここでは自動的に設定されているDefault設定でModelを作成します。Summary画面で評価結果の確認が出来ます。評価にはRMSEを使っていて、基準値より高い評価結果になっていることが分かります。performanceボタンをクリックするとモデルの残差の分布グラフが表示されます。概ね正規分布の形をしていますが、残差70万超えのデータが60件以上あることからモデルの改善の余地があることが分かります。(この記事ではモデル改善については省略します)予測モデル実行ここでは、モデルの実行方法について見て行きます。モデル実行にはBatchとReal-timeの2つの方法があります。predictionsボタンをクリックします。dataを選択します。Batchの結果(予測結果データ)の保存場所を設定します。このまま手順に沿って進めばBatch実行完了となります。predictionsを使ったBrowser上で実行する方法とEndpointを作成し外部からAPIを通じて実行する方法の2つがあります。predictionsボタンをクリックします。predictions画面が表示されます。predictionボタンをクリックします。すると画面の右のところに予測結果が表示されます。基本給400万の場合、ボーナスが約111万になるという結果が返ってきました。実際のデータと比べてもそれらしい結果に見えます。つづいて、APIを通じて実行する方法です。Endpointを作成します。Endpoint作成の確認画面が表示されます。ここでCreateボタンをクリックするとEndpoint作成が完了します。Endpoint作成が完了したらEndpointのURL情報が表示されます。CLIでReal-time予測を実行してみましょう。Learningサービスはバージニア北部Regionを利用しているためRegion情報を更新します。urlを設定し、基本給が400万の場合のボーナスをReal-timeで予測してみましょう。predictionsの結果と同じく予測ボーナスは約111万であることが確認出来ました。Learningを組み合わせて予測モデルを作成してみました。予測モデルの評価結果も高く、実際のテストでもそれらしい結果が得られました。学習を繰り返しながらParameterを調整すればもっと優れたモデル作成が期待できそうです。Learningを始める方に少しでも参考になれたら幸いです。