GINGI99 Blog

データ分析や日常に関するブログ

useR2018に参加&ポスター発表をしました

表題のとおり、useR2018@ブリスベンに参加&ポスター発表してきました。useR初参加です。

Rで分析を行っている自分たちのユースケースを発表しながら、世界のRユーザ・Rコミュニティの動向を肌で体感したいと思い参加しました。

概要

2018/7/10-13の4日間開催で、1日目と2日目の午前中まで、半日チュートリアル×3。その後、オープニングとキーノートがあったり、トークやLTが6パラレルで続く感じでした。ポスターは2日目の夜のレセプションと3日目のランチ時間に開かれていました。

会場はブリスベンの都市部のBrisbane convention & exhibition centerというところです。4Fのフロアをすべて貸し切ってるようでした。

キーノートをする会場はホール形式。

f:id:gingi99:20180711100117j:plain

参加者のバッチはRらしくヘキサゴン形でテンションが上がります。参加者の所属もざっと見ていると、オーストラリア系の大学や企業がやや多めで、他の国の大学系などアカデミアが多くて、インダストリも一部来ているかなーという印象でした。オーストラリアという場所に依存した参加傾向になったかもしれません(謎)

オーストラリアの形でパッケージのヘキサロゴを貼ってたりもしました。

f:id:gingi99:20180712074225j:plain

1日目

初日は午前と午後のチュートリアルが2本ありました。

Production-ready R: Getting started with R and docker

スライドはこちら:GitHub - SymbolixAU/useR_docker_tutorial: useR!2018 docker tutorial slides and notes drafts

Dockerを使ってRStudio等をデプロイする話に参加しました。Dockerも普段から使用するので、基本的なことは既知だったのですが、rockerのImageの依存関係は知らなかったので、どのImageをベースにDockerfileを作成するかは参考になりました。また、デプロイするときにどうしても、パスワードやAPIキーの管理をどうするかという話になるのですが、.Renvironで管理すればいいという話は試したことがなかった(たぶん基礎なのに…笑)ので、今後やってみたいと思いました。

fasteR: ways to speed up R code

スライドはこちら:GitHub - tslumley/useRfasteR: for a tutorial at useR2018

Rの高速化についてのチュートリアルに参加しました。チュートリアルというよりはプレゼンターの高速化のTipsまとめだった印象です。data.frameが遅いとか、vectorizeをしましょうといくつか知ってることもありましたが、if elseが遅いとかは知らなかったので、いくつかまたコードを見直すきっかけになりそうです。

また、コードを入念にRprofmicrobenchmarkを使ってデバッグしていくことはやはり必要なんだなと感じました。改めて、Rの高速化は基本的なテクニックを抑えながら、Profileして地道な作業と思いました。といいつつ、いまのところそこまでシビアに高速化する必要もなかったりで、、、

それとこのセッションを見て思ったのは、高速化をすると、コードの可読性も落ちてしまうケースもある気がするので、Rに習熟していない人と共有する場合に読みづらいコードになるのは避けたいなーという気持ちもあるので、バランスや高速化Tipsの方向性は揃えないといけないと感じました。

2日目

午前中は、useR2018の3つ目のチュートリアルに参加

Interactive data visualization on the web with R

スライドはこちら:Interactive dataviz on the web with R & plotly

最近plotlyをshinyで使っているのですが、知らない機能が知れてすごく有意義でした。とくにhighlight_keyで大量時系列の一部をハイライトする機能や生データとAggregationしたデータをひもづけた可視化など。複数系列から比較して見るのも容易になるので、最初からfilterしなくても対応できる場合がありそうで、これから試してみようと思いました。

午後からはOpening、KeynoteTalkが始まりました。

Talkで面白かったものを紹介します。

Automated unit test generation using genthat

GitHub - PRL-PRG/genthat: An R package for extracting unit tests from existing code

testスクリプトを自動生成するパッケージを開発している話でした。たしかにcoverage率あげるためにtesthatのスクリプトをがんばって書くこともあると思いますが、自動化できるならだれもがやりたいと思います。 論文としても発表しているみたいで、いろんなRのパッケージで実験して評価していました。興味深かったです。

Poster Session

Posterはロビーで47inchモニターを使った電子型ポスター発表です。

f:id:gingi99:20180711115501j:plain

自分たちはスライドを横長に作って、サイズをあわせて作ってきました。

f:id:gingi99:20180720220606j:plain

18.07.11_useR2018 Poster_Time Series Digger : Automatic time series a…

時系列データを分析する際のデータサイエンスプロセスと、EDAと特徴抽出とそれらに基づいて異常検知をパッケージ化して社内で使っている話をしました。 パッケージ公開の予定や具体的な手法や手法の使い分けなど議論できました。

他の参加者はShinyを使ったデモ形式で発表している人も多かったので、次回以降はそっちのほうが参加者と議論しやすくてわかりやすいかもと感じました。

3日目

この日のKeynoteでは、The Grammar of Animation(Thomas Lin Pedersen)に参加。主に、インタラクティブグラフやアニメーションの使い所についての話。

スライドはこちら:Keynote

gganimate 数年前に使ったときより、使いやすくなってそうだなと思いました。時間をアニメーションで動かして、散布図が動くやつ一度実データで描いてみたいです。

Talkでは、面白かったものを紹介します。

Statistical Inference: A Tidy Approach using R(Chester Ismay)

スライドはこちら:Statistical Inference: A Tidy Approach

tidyライクな統計的仮説検定を行えるinferの紹介。聞いててテンションがあがりました。まさか統計的仮説検定の各々もtidyベースで実行できるようになるとは…。これはこれから必須のパッケージになる予感です。

prioritizr: Systematic conservation prioritization in R(Jeffrey O. Hanson)

GitHub - prioritizr/prioritizr: Systematic conservation prioritization in R

整数計画問題を解くパッケージ。これまた簡単なインタフェースで直感的に制約条件などを設定できそうで便利なパッケージだなーと思いました。研究を進める上で開発したのかなと思いました。

Glue strings to data in R(James Hester)

GitHub - tidyverse/glue: Glue strings to data in R. Small, fast, dependency free interpreted string literals.

使いたいなーと思って使っていなかったglueパッケージ。pasteなどでがんばってprintしていたものを、変数なども分析するときに簡単にprintできたり、formatを揃えることができたりと、便利そうなパッケージ。使ってみて恩恵を感じたいと思います。

Data Preprocessing using Recipes(Max Kuhn)

GitHub - tidymodels/recipes: A preprocessing engine to generate design matrices

チュートリアルのスライドはこちら:user2018/Recipes_for_Data_Processing.pdf at master · topepo/user2018 · GitHub

caret開発者が現在開発している、データの特徴設計をtidyライクに書くことができるパッケージ。すごく簡単に特徴づくりできそうです。caretとの連携部分も開発中とのこと

Moving from Prototype to Production in R: A Look Inside the Machine Learning Infrastructure at Netflix

スライドはこちら:From Prototype to Production

Netflixで利用しているmetaflowの紹介。Rからデータを前処理してモデルを作って、デプロイしていくのを簡単にするパッケージの様子。ただ、まだ未公開なので、今後公開されることを祈る。この手のRでアドホックに分析したものをプロダクションに持っていくのをサポートするとこまでやっちゃうところはさすがNetflixだなーと思いました。ただ、やっぱりRでやる必要もないような…。

Estimating individual Customer Lifetime Values with R: The CLVTools Package(Bachmann Patrick)

解約予測の新たなパッケージ。分布の条件から、問題設定を4つに分けて、各種条件に応じてモデルを選択して予測できる。細かいアルゴリズムはわからなかったけど、パッケージももうすぐ公開予定みたい。

Large Scale Data Visualisation with Deck.gl and Shiny(Ian Hansel)

deck.gl

Uberで使ってる地理データのWebGL可視化ライブラリ。Rからのインタフェースもあるみたいでデモを見てたらきれいな絵がかけていた。大規模データでも耐えれるようにというモチベーションみたいだが、どれくらいのポイントでも動くか試してみたい。

Poster Sessin

この日はランチ時間帯にポスターセッションがありました。

日本から来ていたhoxo_mさんのmagic_forのユースケースが直接聞いて理解できたのと、自分たちが書いたコードでも思い当たる節があるので、これから使っていきたいと思います。コードがきれいになる予感がします。

GitHub - hoxo-m/magicfor: Magic Functions to Obtain Results from for Loops in R

4日目

Keynote : Teaching R to New Users: From tapply to Tidyverse (Roger Peng)

S言語からの話やRの歴史的発展、tidyverseの紹介なども最後まで飽きずに聞けました。

面白かったTalkをメモしておきます

Shinotate: an R-based shiny server for annotation and analysis of RNA-Seq transcriptome assemblies

GitHub - IdoBar/shiny-server: A shiny server to deliver apps to retrieve annotated transcriptome data stored in Trinotate db

Shinyでアノテーションツールを開発してる話です。期待してるものではなかったのですが、デザインの話やインタフェース設計は参考になりました。

DALEX will help you to understand this complex predictive model(Przemyslaw Biecek)

GitHub - pbiecek/DALEX: Descriptive mAchine Learning EXplanations

機械学習のモデルの解釈のためのパッケージです。breakDownやLIMEを包含したパッケージのようです。

fasster: Forecasting multiple seasonality with state switching(Mitchell O'Hara-Wild)

GitHub - tidyverts/fasster: Forecasting with Additive Switching of Seasonality, Trend and Exogenous Regressors

スライドはこちら:fasster::useR2018

時系列データのモデリングのためのパッケージで、季節成分を複数考慮したり等、拡張の幅が広そうなインタフェースで提供していました。最後にRMSE等でProphetよりも精度が高い結果も示していたので、要チェックなパッケージになりそうです。

seer: R package for feature-based forecast-model selection(Thiyanga Talagala)

GitHub - thiyangt/seer: Feature-based Forecast Model Selection (FFORMS)

時系列データの分類のための時系列データの特徴抽出をかなり作り込んでる印象でした。特徴抽出の手法の実装は参考になりそうです。

その他気になったパッケージ

Talk等はセッションがかぶっているため聞けなかったですが、気になったもの

教師あり学習のパッケージ。Self-Training以外は実装名からは検討がつきませんが、まとめている感じでしょうか。

GitHub - mabelc/SSC: The ssc R package

4日目のTalksであった時系列系のデータのtidy化をtidyvertsといったプロジェクトで行っているみたです。全然知らなかった。。

The 15th time series standard

forecast系のパッケージもfableでtidy化してるみたいです。便利すぎる。。

GitHub - tidyverts/fable: Forecasting with tidy objects

パッケージは関係ないですが、発表者のスライドをRmdやgganimateで気合入れて作ってる人が多くて、さすがのRのカンファレンスという印象でした。

発表までの流れ

次回以降useRで発表したい人のために、今回の発表までの流れを共有しておきます。

  • 2018/3/15 : アブストラクトを締切日に提出(1200文字)。単語数じゃないので注意。はやく提出した人からアクセプトされていくので、はやめに出したほうが良いみたいです。といっても、出そうかと話したのが3/14だったので、これ以上自分たちも早くはできなかった…。
  • 2018/3/23 : アクセプト通知がくる。最終日に提出してもいけたので問題なかったみたいです(むしろRejectはあったのか?)
  • 2018/6/16(くらい):ポスターの仕様が公開。47inchモニターに写して発表と知る。横長で作りなおした。
  • 2018/6/22(くらい):ポスター発表スケジュールが公開
  • 2018/7/11 : 発表

ブリスベンについて

ブリスベンへは、東京からカンタス航空で直通便がでており、8時間15分程度のフライトでした。オーストラリアの入国検査は無人で行えるスマートゲートですぐに入国できたのは感動的でした。いろんな国に導入してほしいな…。

到着後は、タクシーで約30分で会場近くのホテルに到着しました。景色や部屋も広くてとても快適でした。

オーストラリア自体が初めて訪れました。この時期は冬ということで、朝と夜は冷えますが、それでも10度程度ので、ユニクロのウルトラライトダウンで十分耐えれる感じです。昼でも日陰は冷たいですが、日なたは暑いくらいでカラッとした陽気はオーストラリアらしい天気でした。

f:id:gingi99:20180712113932j:plainf:id:gingi99:20180712114023j:plain

記念にカンガルステーキも食べることができました。

f:id:gingi99:20180712170714j:plain

ブリスベンはオーストラリア第3の都市と言われていますが、都市部はそれほど大きくなく、歩いて十分回ったりすることができました。シドニーメルボルンもいずれ行きたいと思いました。

さいごに

useRの発表はほぼすべて?ビデオで公開されているみたいですので気になったものは視聴することもできます。

R Consortium - YouTube

しかし、現地で生で聞いたほうが吸収率もあがる感じがするのは集中力の問題でしょうか…。 また、来年のuseR2019はフランスのトゥールーズで開催されるようです。別のネタでまた発表したいなと思いました。

www.user2019.fr