この記事では、2021年3月末にリリースされたTableau 2021.1 からの新機能、Einstein DiscoveryとTableau の連携についてその使いどころを見ていきます。
この連携によって、人の目で見てわかる可視化にプラスして、機械学習の力を借りた未来予測を可視化することができます。まさに、BIとAIの融合と言えるでしょう。
はじめに
Tableau と Einstein の役割分担についておさらいします。
まず機械学習の予測モデル作成と評価、モデルのデプロイ(外部から予測モデルを利用できるようにする)はEinstein 側で行います。
Tableau から予測したい値(目的変数)がまだないデータセット(説明変数)をEinstein に送り、その結果得られる予測値を使って可視化を行います。
Tableau とEinstein Discoveryの連携方法は以下の3つです。
① Dashboard Extension 連携
② 計算フィールドによる連携
③ Tableau Prep連携
今回の内容はこちらのビデオに日本語の脚注を追加したものです。このビデオの内容をベースにTableau と Einstein Discovery連携の利用イメージを見ていきましょう。
本記事はTableau社のレビュー等は一切受けておりません。実際の環境で検証はしておりませんので動作の保証するものではありません。用語の利用方法、思い違いなどあるかと思いますが、その場合はご指摘いただければ幸いです。
① Dashboard Extension 連携
まず初めに、Dashboard Extensionとの連携です。Tableau のDashboard Extensionとは、Tableauのダッシュボードの中で、他のワークシートとデータ連携しながら、独立したアプリケーションが動く「拡張」の窓を作るイメージです。
今回のケースでは、発送に関する履歴データがあり可視化をおこなっていますが、ここからまだこれから実施される新規発送に関して、その発送が遅延するかどうか可能性を予測し、先回りした意思決定につなげたいと考えています。
まずは、EinsteinDiscoveryで機械学習の予測もモデルを作成します。
Salesforceにデータをアップロードし、Einstein Discovery Storyを起動します。ここでは、”Delivered on time ”(配送が間に合ったか遅延したか) を最大化するモデルを作成します。
ちなみに、”Delivered on time”には以下の形式のデータが入っています。”Delivered on time” は ”Late”になるか”OnTime”になるかを目的変数として機械学習で「分類」するモデルを作ることになります。
「インサイト」と「予測」を作成するように選択します。
利用するフィールドをEinstein Discoveryが自動的に選択するよう「Automatic」を選択します。
Einstein Discoveryによる予測モデルの完了まで少し待ちます。
作成された予測モデル(分類)の精度を確認します。
分類モデルではAUCでどれだけきれいに分類ができているか、モデルの精度を確認します。AUCはROC曲線の下側の面積として0から1の値を取りますが、1が最もうまく判別できているということになります。まったくランダムに適当なことを言っても0.5となります。
モデルの精度が満足いくものであれば、「Deploy」のボタンを押し、予測モデルが外部アプリケーションから利用できるように準備します。「Deploy」が完了すると、予測したい値がない(説明変数のみの)データセットに対して予測値を返すことができます。この場合、新規のシッピングについて遅延が発生する確率を返すことになります。
モデルデプロイの設定を確認し
デプロイを実行します。
モデルのデプロイが完了しました。
Tableau のダッシュボードからダッシュボードエクステンションを経由して、デプロイしたモデルを呼び出しましょう
(説明変数をダッシュボードエクステンションに送るための隠しワークシートを作成していますが、ここでは割愛します。)
エクステンション・ギャラリーからEinstein Discovery を選択します。
Einstein Discoveryでデプロイしたモデル名と、モデルに説明変数を送るためのワークシートを指定します。
Tableauのワークシートから送られるデータのフィールドとデプロイされたモデルで利用しているフィールドの紐づけをします。両者が同じであればOKをクリックするだけです。
予測値を返す際の挙動を設定し、ダッシュボードエクステンションの配置を完了します。
ダッシュボード上で選択したカテゴリについて、説明変数のデータが送られそのデータセットに対する予測値がダッシュボードエクステンション内で表示されます。
例えば、「Finland」、「Priority Mail」を選択したときの、データセットの配送遅延確率はどの程度? 他のカテゴリでは? といったように、予測値を含めたデータ探索が可能となります。
② 計算式から Einstein Discovery を利用する
次に、もう一つの連携方法である「計算フィールド」を見てみましょう。こちらは、計算フィールドからEinstein Discoveryにデプロイされた予測モデルを呼び出し、予測結果を新しいTableau のメジャー又はディメンジョンとして利用することができます。予測値をメジャーやディメンションとした自分でデザインしたグラフに利用できるのがポイントです。
Salesforceのモデルマネージャから作成しモデルを選び
Tableau の計算フィールドに記述する計算式を作成します、これをコピーしてTableauの計算フィールドの内容にコピーします。割と長くて驚きますが、Salesforce側で必要な記述内容を自動的に作成してくれています。
Tableauの計算フィールドを作成し、コピーした内容を貼り付けます。
作成した予測値を使って可視化を行います。予測値を棒グラフ又は色など自由に利用します。例えばこの例では、天候が「Sunny」だとオンタイムに配送される確率が高く、「Snowy」だとオンタイムに配送される確率が低くなると読めます。
③ Tableau Prep 連携
今回参照したビデオには言及がありませんが、ここではTableau Prep との連携についてもご紹介します。(画面ショットは Tableau Conference 20のものです。)
今までの2つの利用方法は「リアルタイム」に予測を返す連携でしたが、バッチで予測値を得る(あらかじめ予測を行い、その結果を後から可視化する)場合Tableau Prep のフローからEinstien Discovery を呼び出します。
Tableau Prep BuilderのフローからEinstein Discoveryを呼び出した結果、予測値が最後(赤枠)に追加されていることがわかります。
出力された結果を可視化に利用します。
使い分けのまとめ
最後に、Tableau とEinstein Discovery連携の3つの方法について、使い分けを用途別にまとめます。
最初の選択としては、バッチで予測すればよいのか、リアルタイムに予測する必要があるかです。
バッチ予測とは、例えば週に一回、一日に一回、予測値を算出し、その結果を後から可視化して分析する(あらかじめ予測結果を算出しておく)運用です。
一方、リアルタイム予測とは、例えばフィルタを変えた瞬間に、またはパラメータを変えた瞬間にその場で(リアルタイムに)予測値を算出します。新規データが次から次へと生成される場合や、パラメータを変えて予測する(What if分析)場合です。
多くのケースでは、バッチで予測値を算出する運用で事足りるかと思います。ですので③Tableau Prepでの運用をまず検討するのが良いでしょう。
リアルタイムの予測が必要となった場合、定型のダッシュボード・エクステンションを利用するのでよければ ①ダッシュボード・エクステンション連携、自由に予測値を使った可視化を作成したい場合 ②計算フィールド連携を選択するのが良いかと思います。
また、リアルタイム予測では、可視化の度に予測値の算出が入るため、パフォーマンスの負荷を考慮しないといけません。予測に利用する説明変数のデータセットを必要最小限に抑える工夫を検討すると快適な予測ダッシュボードを実現できるのではないでしょうか。
Tableau とEinstein Discoveryの連携が進むことで、過去と現在の可視化だけではなく、未来の予測も含めた可視化と先回りをした意思決定ができるようになり、データの価値と可能性が広がりそうですね。