#tc18 TableauとR,Python,MATLABを接続して高度な分析をする – Tableau Conference 2018 at New Orleans

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

目次

本エントリーでは、2018年10月23日に実施されたTableau Conference@ニューオーリンズにて実施されたセッションの内容についてご紹介します。
目次は下記の通りです。

1.セッション概要

今回ご紹介するセッションの概要は下記の通りです。

<セッションタイトル>
Accelerate Your Advanced Analytics: R, Python & MATLAB (Repeated)

<講師>
Erik Polano, Tableau
Erwin van Laar, Tableau

<レベル>
Advanced

<セッション概要>
Advanced analytics is a journey that involves understanding the past, predicting the future and finding the best course of action to attain goals. Be it via built-in visualizations, forecasting and clustering, or custom machine learning models built in R, Python or Matlab, Tableau can help every step of the way. This session reviews broad types of advanced analytics possible with Tableau with example use cases. We’ll explore what’s possible, when and how to use specific features and contexts that they are applicable to.
(高度な分析は、過去を理解し、未来を予測し、目標を達成するための最善の行動を見つけることを含む旅です。ビルトインのビジュアライゼーション、予測、クラスタリング、またはR、Python、Matlabなどにカスタマイズされているモデルを介して、Tableauはあらゆる段階で役立ちます。このセッションでは、Tableauで可能な高度な分析の使用例をいくつか紹介します。可能なもの、適用可能な特定の機能やコンテキストをいつどのように使用するかを検討します。)

2.なぜR,Python,MATLABを利用する必要があるのか

本セッションでは、R,Python,MATLABを利用する必要性について、「Tableauでは基本的な集計はできるが、より柔軟に、複雑なモデル(Tableauにはないモデル)を、自分のデータで学習させたい場合は、R,Python,MATLAB等の外部サービスに接続する必要がある」、と説明していました。

また、もしTableauと接続する際は、Tableauのバージョンが下記以上であることが必要です。

もし、Tableauの公式ドキュメントも参照したい、という場合はこちらをご参照ください。

3.R,Python,MATLABと接続した際のフロー

TableauとR,Python,MATLABを接続した際のフロー図は下記の通りとなります。
Tableauがハブとして、データソース&スクリプトを中継する役割を果たします。  

4.Tableau側の記述方法

TableauからR、Python,MATLABへと接続できたと仮定して、下記のような「SCRIPT関数」をTableau上で記述する必要があります。
(R、Python,MATLABへの接続方法については、後ほど記述します)

4種類挙げられていますが、それぞれ返り値の種類に応じて使い分ける必要があります。
Tableauの公式ドキュメント

本セッションでは、Rでの書き方の例が紹介されていました。

こちらの例では「SCRIPT_REAL」関数を利用しています。また、Rからの戻り値は下記の通りの記述にするよう注意しなくてはなりません。

R 式では、パラメーターに .argn (先頭にピリオド) を使用してパラメーターを参照します (.arg1、.arg2、など)。

参照:表計算関数

5.Rへの接続方法

続いて、Rへの接続方法です。
(正確には「Rserve」)
本セッションではローカルのRと接続する方法について説明していました。

まずは、「help」から「Settings and Performance」、「Manage External Service Connection」とクリックしていきます。

続いて、接続先サーバーの情報を記述します。
今回はローカルのRを利用するので、「server」には「localhost」、ポートは「6311」(Rserveのデフォルトポート)を指定します。 指定が終わったら、「test connection」をクリックして、接続できるかをテストしてみましょう。

問題なく接続できているようなら、下記のようにアナウンスされます。

これでRへの接続は完了です。
Rへの接続方法についてはこちらにも記述されています。

また、弊社のエントリーでも接続方法についてはご紹介しています。
Tableau&R連携(1) – Tableau Desktopからローカル環境のRServeに接続する

ちなみに、本セッションではRと接続した後の活用例についても紹介していました。
こちらでは、「t検定」の判定結果をViz上に表示しています。

6.Pythonへの接続方法

続いて、Pythonへの接続方法です。
(正確には「TabPy」)

TableauからPythonを実行させる場合は「TabPy」サーバーを利用します。

基本的にはこちらからインストールしていけばTabPy環境が構築できます。
ただ、今回のセッションでは「もう少し手軽にプロトタイプ用の環境を構築したい場合」のために、dockerを使ってTabPyサーバー環境を用意する方法についての説明がありました。
こちらから環境を構築できます。

あとは、TabPyのポートに合わせてTableauから接続すればOKです。

Pythonを使った分析の例として、「Twitterから取得したデータでのセンチメント分析」をしていました。

7.MATLABへの接続方法

MATLABへの接続方法は「外部サービスとしての接続」、「Webデータコネクタとしての接続」の2パターンあるそうです。
もしMATLABに接続する場合は、両パターンの特徴を把握して使い分ける必要があります。

「外部サービスとしての接続」とする場合は、「MATLAB Production Server」にあらかじめ関数を作成しておき、それをTableauから呼び出す形になります。

「MATLAB Production Server」に作成しておいた関数をTableau側で下記のように呼び出す。

一方、「Webデータコネクタとしての接続」をする場合は、Tableauから「HTMLリクエスト」を送信し、「MATLAB Production Server」が抽出結果を返却する、といった形になります。

8.「Materialize Calculations」について

機械学習モデルによる推論は処理が重いことが多いので、同じようなクエリを毎回実行する必要がない場合は「Materialize Calculations」機能を利用するといいでしょう。

この機能は「抽出ファイル作成時に、事前に特定のフィールドを計算してその結果を保持しておく」機能であり、Tableauで機械学習をする際にはこの機能の利用もセットで考えた方がいいでしょう。

この機能の実用イメージについて、いくつか説明していました。
1例として、6.Pythonへの接続方法の「Twitterから取得したデータでのセンチメント分析」が挙げられており、この場合は「ツイートがポジティブなのかネガティブなのか」ということは「異なるアルゴリズムを使う場合」でもない限り再計算する必要は無いので、事前に計算しておくことが可能としていました。

9.まとめ

本セッションの最後に、Tableau-外部サービス(R,Python,MATLAB)を接続することの要点について説明していました。

外部サービス(R,Python,MATLAB)がTableauにもたらすものについて、下記の4点を挙げていました。

より高度な分析ができるようになる、といったニュアンスです。
ここについては、日頃TableauやR、Python等を使っている方にとっては腹落ちする部分かと思います。

また、逆にTableauが外部サービス(R,Python,MATLAB)にもたらすものについては、下記の3点を挙げていました。

簡単に分析ができるようになる、といった点が強調されていました。

10.動画のURL

最後に動画のURLを記述しておきます。
youtube

RやPython,MATLABを使うことで高度な分析ができ、またTableauでそれを「簡単に可視化できる」というのは面白そうですので、早速遊んでみようかと思います。