2018.12.8.SAT

R AnalyticFlowによるモダンなデータ解析

株式会社ef-prime

鈴木 了太

2

自己紹介
 鈴木 了太– 株式会社ef-prime代表– Rユーザー歴約17年• 開発CRANパッケージ：pvclust• 書籍：Useful R 10（共立出版、第IV部）

 株式会社ef-prime（エフプライム）– データ分析コンサルティング（主に企業向け）– 2006年設立、多くのプロジェクトでRを活用– データ分析ツールを開発・公開

3

R AnalyticFlowとは
 データ解析のためのR GUI– 分析プロセスをワークフローで表現– オープンソース、無償公開– Javaで開発、マルチOS対応• Windows / Mac / Linux
分析プロセスを視覚的に整理

https://r.analyticflow.com

4

R AnalyticFlowとはノードをエッジで繋いだ分析フローを作成、Rスクリプトを生成して実行
ノード# 1. データの読み込み
data(iris)エッジ# 2. 探索的分析
plot(iris[, 1:4], col =as.integer(iris$Species) + 1)
boxplot(Petal.Length ~ Species, data =iris, col = 3, main = "Petal.Length")# 3. モデリングlibrary(rpart)rp <- rpart(Species ~ ., iris)# 4. モデルの確認
plot(rp, margin = 0.1, branch = 0.3)
text(rp, fancy = T, all = T, use.n = T)
# 5. 予測および評価
pred <- predict(rp, type = "class")
xtabs(~pred + iris$Species)

5

R AnalyticFlowとはファイルやRオブジェクトの一覧をインタラクティブに利用することができる。
データファイルを選択して読み込み処理を作成したり、実行結果として得られたオブジェクトを確認することができる6

多言語・マルチOS
表示言語として日本語と英語を選択可能
世界146ヶ国でダウンロード（2017年11月時点、直近1年間）
Windows / Mac / Linux をサポート

7

これまでの歩み時期バージョン

詳細

2007年12月

0.1.0

プレビュー版公開（Windowsのみ）

2009年12月

1.0.0

現在に至る基本機能の多くを実装
Windows / Mac / Linuxで動作

2012年12月

2.0.0

タブインターフェースへの統合、デバッグ補助、自動バックアップ、64bit対応

2015年12月

3.0.0

GUIによる分析機能、新インターフェース、プロジェクト管理、カスタムUI作成機能

2017年6月

3.1.0

分析機能の強化（予測分析、多変量解析、仮説検定など）、利便性の向上、安定性の向上（Rの別プロセス化）

2018年8月

3.1.8

最新版（問題の修正、RやJavaの更新に対応など）

8

初期のバージョン（0.1～2.x）
ユーザーがRスクリプトを直接記述することで分析フローを作成。
作成したフローは誰でも簡単に実行できるノードにRスクリプトを直接記述。
関数を検出してタイトルにし、対応するアイコンを表示する

9

最近のバージョン（3.x）
簡単なマウス操作でRスクリプトを記述せずに分析が可能。
Rの知識が必須ではなくなり、スクリプトの記述量も削減

ドラッグ＆ドロップ10

機能例：予測分析
複数の予測手法やパラメータ設定のもとで予測モデルを作成し、予測精度を評価して出力11

機能例：カスタムUI
組み込みのGUIに存在しない機能を追加できる。
Javaプログラミングを行わず、ビルダーを使って簡単に作成可能

ビルダー上で関数（自作も可能）を指定し、引数を設定用UIなどを指定して保存12

機能例：外部ツール連携
IDEが使用するフォルダをプロジェクトフォルダとして設定し、Rスクリプトファイルをノードとして利用可能

拡張子.Rのファイルをノードとして利用できる。
スクリプトの編集も可能。

13

設計方針と問題点
 方針：生成されるコードが「どこでも確実に動く」– 外部パッケージに依存せず、標準パッケージ群（base, recommended）のみで動くスクリプトを生成– パッケージを使用するスクリプトをユーザーが書くことはできるが、GUIで生成するコードには含めない

 問題点– モダンなRのデータ分析はパッケージに強く依存

データ加工
グラフィックス• tidyverse （dplyr, ggplot2, tidyr, ...）
• 予測モデル（glmnet, ranger, xgboost, ...）

– かなりメジャーなパッケージでも、標準配布される様子もない

14

新しい方針

基本方針は変えない！

 方針：生成されるコードが「どこでも確実に動く」
 実現手段– 必要なパッケージを検出して通知– パッケージのインストールと管理をサポート– 必要であれば事前にパッケージをロード15

必要なパッケージを検出して通知 メニューでの表示– 分析機能を呼び出す前にパッケージの有無をチェック16

必要なパッケージを検出して通知 分析フロー上での表示– ノードごとに必要なパッケージを管理し、実行前に通知– ユーザーの記述したスクリプトからもパッケージを検出
base::parse
utils::getParseData スクリプトのエクスポート– 分析フローをRスクリプトに出力する際、パッケージをチェックするコードを含めるオプションを作成。
– 必須パッケージがない場合、実行後すぐにエラーで停止17

パッケージのインストールと管理をサポート
 インストールの提案– 不足するパッケージがあればダイアログを表示し、ワンクリックでインストール• 標準のCRANミラーを設定してあり、初心者にとっては選択に困るミラーサイトの選択も省略

18パッケージのインストールと管理をサポート
 パッケージマネージャ– Rスクリプトを使わずにパッケージのインストールなどの管理を行うための仕組みを提供

19

必要であれば事前にパッケージをロード パッケージの自動ロード– 必要がある分析機能に限り、実行時に自動的にパッケージをロードするコードを生成• library() または require()– 関数をマスクするなどの意図しない副作用を起こす可能性があるため、できる限りアタッチせず最低限の利用とする方向で検討• 基本的には package::function() の形• 読みづらくなるtidyverse系やmagrittrなどのパイプの扱いは検討中20

今後について 開発状況
– パッケージの通知、管理の仕組みを開発中– パッケージを利用した分析機能を開発中• プロット（ggplot2）• データの加工と集計（dplyr + tidyr）• モデリング（glmnet, ranger, xgboost）

Java + R な開発者の方、ご興味ありましたらご一報を！

21

デモ：dplyrによるデータ加工
行の選択やソートなどの機能を選択して設定を入力。
対応するコードをdplyrパッケージを使用して生成22

デモ：ggplot2によるグラフィックス

ggplot2の豊富な機能から代表的なものをUIで提供

23

デモ：予測モデル（glmnetなど）
さまざまな手法を選択可

パッケージごとに必要となる前処理も含めてスクリプトを生成24

ご清聴ありがとうございました

https://r.analyticflow.com@ef-prime_jp

R AnalyticFlow