[レポート]ハンズオン/LookerとAmazon SageMakerを連携して予測分析を行う – Looker:JOIN 2019 at San Francisco #looker #JOINdata
現地時間2019年11月05日〜07日の期間、米国サンフランシスコで開催されたLookerの年次カンファレンスイベント『JOIN 2019』。今年2019年のイベントは、弊社から3名のメンバーが現地参戦しました。
当エントリでは、その中から『Hands-on Lab: Predictive Analytics with Looker and Amazon SageMaker Powered by AWS (LookerとAmazon SageMakerを連携して予測分析を行う)』の内容について参加レポートをお届けします。
目次
セッション概要
セッションの概要は以下の通りです。
Eric Carr氏(Looker社 Senior Data Analyst, Pre-Sales)
[セッション情報]:
Hands-on Lab: Predictive Analytics with Looker and Amazon SageMaker Powered by AWS
(LookerとAmazon SageMakerを連携して予測分析を行う)
Have you been considering integrating Looker into your data science workflow, but not sure where to start? Join us for this interactive hands-on session as we’ll dive into Looker's Action Hub integration with Amazon SageMaker, a fully managed service that allows you to build, train, and deploy machine learning models at scale. This is a great opportunity to learn how to build out a simple and streamlined data science workflow by allowing model training and inference in SageMaker to be initiated directly from within the Looker Scheduler.
(Lookerをデータサイエンスのワークフローに統合することを検討しているが、どこから始めればよいのかわからないということはないでしょうか。Looker's Action HubのAmazon SageMakerとの統合については、大規模な機械学習モデルの構築、トレーニング、導入を可能にするフルマネジードサービスです。これは、SageMakerでのモデルトレーニングと推論をLooker Scheduler内から直接開始できるようにすることで、単純で合理化されたデータサイエンスワークフローを構築する方法を学ぶ絶好の機会です。 )
※本ハンズオンレポートの補足
イベント帰国後、ハンズオン用のLookerを操作したのですが、データ元(S3バケット)が既に無くなっているらしく、実際のLookerの操作画面のスクリーンショットで紹介したくでもできませんでした…。というわけで、資料メインのハンズオンレポートとなります。
セッションレポート
データサイエンスワークフロー
予測分析が重要なのはなぜでしょうか?
- 予測、売上、イベント、ボリューム
- 不正検知
- リスクの計算
Lookerを導入していない場合、データサイエンスのワークフローは上記のような流れになります。実際に学習するまでに、煩雑なデータ前処理を終わらせる必要があります。
Lookerを導入することで、モデル学習のサイクルを高速に回せるようになるため、結果的にデータサイエンスのワークフローが早くなります。また、結果は常にダッシュボードでビジュアライズできるので、ステークホルダーに結果を常に共有することもできます。
Amazon SageMaker(以下SageMaker)は、開発者とデータサイエンティストのための、機械学習に関するサービスです。
- 機械学習ワークフロー全体をカバーするフルマネージドサービス
- 機械学習モデルの迅速な構築、トレーニング、導入
- 組み込みのマーケットプレイスから機械学習アルゴリズムを構築・最適化
- モデルをトレーニングしてパフォーマンスを最適化する
- オートスケーリングを使用してフルマネージドな環境にデプロイ
- LookerのAction HubとSageMakerの連携を使用して、モデルのトレーニングと推論をLooker Scheduler内から直接開始できるようにすることで、データサイエンスワークフローを効率化
データ探索
それでは実際に「顧客は定期預金に登録するかどうか?」というのを、銀行の顧客情報を使って予測してみましょう。シナリオとしては、(あなたは)銀行のマーケティング部門で働いていて、顧客データを使用して、顧客が定期預金に登録するかどうかを予測する…というものです。
- 顧客のデモグラ
- 過去の販売イベントへの対応
- 外部環境要因
データを探索し、顧客が定期預金に登録しているかどうかを予測するのに役立つと思われる顧客変数を識別します。
クライアントの行動に最も影響を与えるのはどのような変数でしょうか。
教育レベル
定期預金の登録可否を、教育レベル別に見てみることで、教育レベルという変数が定期預金に登録するかどうかに関係あるかどうかを考えてみます。
※ハンズオンでは、実際にLookerを操作して、このビジュアライズを作成しました。
年齢
年齢でも同じように見てみます。60歳以上から登録者が増えているように見えますが、実際はどうでしょう?
※ハンズオンでは、実際にLookerを操作して、このビジュアライズを作成しました。
モデルのトレーニング
モデルのトレーニング方法は下記の順番で行います。
- メールアドレスを隠蔽したデータを使用して、既存データの一部(一般的には70%が良いとされている)の予測変数を含むデータセットを作成します。
- 上記データセットを解析ツールで使用できるようにします。
- Lookerと直接連携したAmazon SageMaker
- Looker SDK経由のPythonまたはR
- トレーニングデータセットに、トレーニングアルゴリズムを適用して、残りのデータを使用してテストできるモデルを作成します(そして、予測したいデータを使って予測を行います)。
LookerのExploreから、予測変数を含むトレーニング用データを作成します。予測変数と説明変数(これは、先程のデータ探索で、どれが説明変数となり得るか、当たりをつけておきます)を選択するだけで、クエリ発行~データ取得はLookerが行ってくれるので、とても楽ですね。
データが取得できたら、右上の歯車マークからSend
を選択します(定期的にモデルのトレーニングを行いたい場合はSchedule
を選ぶ)。
SageMakerのアイコンのうち、トレーニングに使用したいモデルを選びます。このハンズオンではXGboostを使用しました。
いくつか設定を行うだけで、Exploreで作成したデータをSageMakerのモデルに投げることができます。
- トレーニングしたモデルを今後も使用する場合は、モデル名を呼び出す必要があるため、モデル名は一意で具体的である必要があります。
- モデルとデータが格納されるS3バケットを選びます。
- Objective(XGboostのハイパーパラメータ)
- 分析の目的に応じて最適なものを選択します
- 色々ありますが、今回は「定期預金の登録可否」…yes or noの2項分類なので、
binary:logistic
を選びます。 - 参考
- インスタンスタイプとインスタンス数は、トレーニング速度に影響します。
トレーニング結果の取得について、All Results
を選びます。
モデルのテストとパフォーマンスの分析
モデルのテストは、下記の通り行います。
- モデルのトレーニングに使用したのと同じデータセットを構築しますが、テストデータ(トレーニングに使われなかった、残りの30%のデータ)を使用します。
- モデルをテストデータに適用します
- モデルが予測変数をどの程度、正確に予測するかを測定します。
トレーニングの時と同じように、Exploreでテストデータを作成します。
そして、ここもトレーニングのときと同じようにSend
を選択します。ただし、今度はモデルのトレーニングではなく、実際にモデルを使うので、Infer
と書いてある方のSageMakerアイコンを選びます。
モデルのトレーニング時に作成したモデルの名前を使用してください。
取得する結果のオプションも、先程と同じくAll Results
です。
そして、モデルのテスト結果に対してExploreをかけると、Looker上でモデルのテスト結果もわかるようになります。
そのテスト結果データを使ってダッシュボードを作成し、モデルの精度を可視化することも可能です(このダッシュボードは帰国後でも閲覧できたので、そちらのスクリーンショットを貼ります)。
混同行列や各数値に関しては、手前味噌ですが、下記をご参考ください。
ちなみにsensitivity
は再現率(recall
)と同じです。specificity
は特異度といって、再現率の陰性バージョンという感じです。
この予測結果をどのように利用できるか
- 定期預金に登録する可能性のある候補者を識別するために、新しい顧客データに対してモデルを適用します
- これらの顧客を対象としたアウトリーチ活動を実施し、登録を促します
- 電子メールの送信
- 直接電話
- これらの追加プログラムに加入する可能性が最も高い人口統計グループに、新規顧客を獲得するためのマーケティングキャンペーンに焦点を当てます
ハンズオンを受講して
感想
まだ対応しているアルゴリズムが少ないですが、かなり便利な機能だと思いました。
というのも、データサイエンティスト的には、複数のモデルのトレーニングとテストを並行して実施し、どれが一番良い精度か測ることが多いそうです。そういう時に、Lookerをうまく使えば、各モデルの精度を一発で比較できるようなダッシュボードを作っておけば、データサイエンス業務がかなり捗るのではないかと思いました。
また、トレーニング用データやテスト用データ、そしてそもそもの元データ、それらを全てLookMLで管理できるのも大きいですね。機械学習はデータの変更が頻繁に発生するので、データ定義をLookMLでバージョン管理できるのも、データサイエンティストにとってメリットがあると思います。
モデルのトレーニング、適用、デプロイといった作業をフルマネージド環境で行えるのがSageMakerの魅力ですが、SageMakerにデータを投げる前と投げた後の部分をLookerが担うことによって、データサイエンスがより加速しそうですね。
そもそもSageMakerの設定はどこでやるの?
ハンズオンの環境では、元々SageMakerが設定されていましたが、自環境でやる場合は、SageMakerの用意と、その設定をLookerに行う必要があります。
Admin→Actionでアクションハブの設定画面に行くことができますが、そこにSageMakerの設定画面があるので、ここからSageMakerの情報を設定してあげてください。