clock2014.09.09 09:06
SERVICE
home

Geek at GiXoの分析ツール使いこなし術|TableauとRの連携 第2回

AUTHOR :   ギックス

TableauとRを連携させる

前回は、TableauとR連携の準備を進めてきました。意外と簡単に設定が出来たかと思います。今回は、実際にTableau-R連携環境で何ができ、どのような仕組でTableauとRが連携されているのかを確認していきます。サンプルとしてTableauの公式ブログで公開されているパッケージワークブックを使って確認を進めます。

 TableauとRの連携環境で何ができるのか

まず、以下のTableauの公式ブログからTableauパッケージワークブックをダウンロードしてください。ブログ中の「Here you can find the Tableau workbook that contains a working example, (中略)」を探してください。その文中の「Tableau workbook 」に、パッケージワークブック(r_kmeans_0.twbx)のリンクがあります。

http://www.tableausoftware.com/ja-jp/about/blog/2013/10/tableau-81-and-r-25327

Links

パッケージワークブック(.twbx)は、Tableauで作成したワークシートやダッシュボードを保存する形式の一つです。こちらのサンプルには、既にRのコードが組み込まれています。ダウンロードしたパッケージをTableauで開いてみましょう。正常にRとの連携が出来ている方は、以下のメッセージが表示されたかと思います。「はい」をクリックします。

message

ここで「はい」をクリックすることにより、裏で立ち上がっているRserve上で、Rのコマンド(ここではk-meansによるクラスタリングのコマンド:後述)が実行されます。すなわち、TableauからRのコマンドをキックして、そのRコマンドを実行した結果をTableauで表示することができるのです。ここではデータを3つのクラスターにわけたクラスタリングの結果が表示されるかと思います。

tb_iris_clustering

Rに詳しい方なら、「これならRでも良いのでは?」と思う方もいるかと思います。確かにRでも同じようなことは可能です。例えば、以下のような見せ方ができるでしょう。

r_iris_clustering

とはいえ、データのデータビジュアライゼーションという視点に立てば、Tableauのほうが圧倒的に綺麗ですよね。

またTableauとRを連携させることのメリットとして、Tableau上で、Rに計算してもらう変数を指定することができるということも挙げられます。例えば今回はクラスターを3つにわけていますが、Tableauでクラスター数を動的4つや5つに変更し、クラスタリングの感度分析を実行することも可能です。このときにTableauを操作しているユーザーは、裏でRで計算されているコードを一切意識する必要はありません。

これはRでプログラミングコードは書くのは敷居が高いというデータアーティストでも、Tableau上の簡単な操作だけで、クラスタリングの感度分析ができるということを意味します。データサイエンティストがTableauからRを実行するプログラムを埋め込んでおくと、データアーティストはRのコードを触らずともTableauの操作だけで、クラスターの数を変更し試行錯誤しながらビジネスニーズにあった解をさがすことができるのは大きなメリットですね。(Tableauからの変数指定の方法は明日の記事で紹介します)

TableauとRがどのように連携されているのか

では、データサイエンティストの視点に戻って、具体的にRとTableauがどのように連携されているのかを、このサンプルで確認していきましょう。

今回のパーケージワークブックの中で、クラスタリング結果をビジュアル化している「Clusters」シートを見ます。列と行のそれぞれのシェルフにあるのは、irisデータのPetal(花びら)とSepal(がく片)の長さと幅が配置されていますね。それらメジャーを行と列に配置することで、このグラフの土台を作っているのが見てとれます。

クラスタリングはどこで実行され、その結果はどこに保持されているのでしょうか?メジャーの欄を確認すると、[Clusters]という項目があるかと思います。これは、元々のirisのデータには、存在しない項目ですね。右クリックして確認してみましょう。[Clusters]項目のメニューから、[編集]をクリックします。そうしますと、以下のダイアログが表示されたかと思います。

calc_fiels

これが連携しているRに対して実行をキックしているRのコマンドです。R連携を活用する場合、このように計算フィールドを用意し、その中にRのコードを書きます。このケースでは、Rの{kmeans}関数を呼び出して、k-meansクラスタリングを実行しています。

もう一つ、ポイントがあります。

計算フィールドは、[SCRIPT_INT]から始まっていますよね?これは、Tableau側に用意された「関数」です。実は、Tableauにも集計用途や文字列用途等の関数が用意されています。
SCRIPT_*で始まる関数は4種類あるのですが、どれもRの関数を呼び出すためのTableauの関数です。このケースでは、[SCRIPT_INT]関数からRの{kmeans}関数を呼び出し、その結果の{result$cluster;}を返すように定義されています。つまり、クラスタリングの結果を返しているわけです。

そして、その結果の[Clusters]項目をマークの[色]にドラッグすることで、クラスタ1~3までに自動的に色情報が付与され、グラフ上の各データポイントにクラスタが反映されるというわけです。クラスタリングのロジックだけをR側で実行し、後は、Tableauのビジュアル化機能で自動的にクラスタの色分けができるわけです。

# 補足
Rで同じようなことをしようと思えば、{plot}関数でプロットする際に、クラスタ毎の色情報を自分で指定する必要があります。例えば、このような書き方をします。colでクラスタの色を指定する必要があります。

>plot(iris.$Petal.Length,iris$Sepal.Length,col=result$cluster)

★注意
実は、ダウンロードしてきたパッケージワークブックを正常に開くには、1点注意があります。{plyr}パッケージがR環境にインストールされている必要があります。これは、他の計算フィールドで{plyr}パッケージが呼び出されているからです。サンプルのパッケージワークブックでRのエラーが出る方は、Rserveサービスを起動する前に、{plyr}パッケージをインストールしてみてください。

今回のまとめ

今回は、TableauとRの連携はどのように実行され、結果何ができるのかの概要を確認しました。

Rの分析機能を活用しながら、Tableauのビジュアル化機能を融合できる連携機能は魅力的ですよね!?今回はTableauの公式サイトで用意しているパッケージワークブックを利用しましたが、次回は、もう少し踏み込んで、自前でデータを作成してTableauとRの連携環境での実行を紹介します。またTableau側で変数を変更してRに実行させる方法についても紹介します。

■参考リンク
http://www.tableausoftware.com/ja-jp/about/blog/2013/10/tableau-81-and-r-25327
http://www.tableausoftware.com/ja-jp/learn/whitepapers/using-r-and-tableau [Tableauホワイトペーパー]

 

【当記事は、ギックスの分析ツールアドバイザーであるYuu.Kimy氏にご寄稿頂きました。】

Yuu.Kimy
ギックス分析ツールアドバイザー。普段は、某IT企業にてデータ活用の検討/リサーチ、基盤まわりに従事。最近の関心事は、Rの{Shiny}パッケージのWebアプリ作成、Pythonによるデータ分析、機械学習等々。週末は、家事と子どもの担当をこなす(?)家庭にやさしいエンジニア(の端くれ)。
【個人ブログ】http://yuu-kimy-note.hatenablog.com/

SERVICE