★データ解析備忘録★

ゆる〜い技術メモ

運営雑用係から見たJapan.Rの振り返り

はじめに

これは R Advent Calendar 9日目の記事です。

去る12/2(土)に、年に1度のRユーザーの祭典である Japan.Rが開催され、大変に盛り上がりました。 私は今年は2度目となる運営のお手伝い(雑用)と、LTの発表で参加させていただきました。

何を手伝ったのか

特にこれと言った大きな仕事はしてませんが、雑用として以下のようなことをしました。

  1. 英語版ホームページの作成
  2. 当日の諸業務
  3. 中継係の確保

英語版ホームページの作成

これは今年からの試みなのですが、ホームページの英語版を作成しました。

http://japanr.net/en/

さて、このホームページなのですが分かる人はわかるかと思いますが、R Markdown で作っています。Rの勉強会らしいですね。そしてRはWebページも作れちゃうんです!具体的にどう作るのか、kazutanさんのサイトが分かりやすいです。

kazutan.github.io

また、Japan.R英語版のソースコードは以下になります。

japanr/japanr_en at master · japanr/japanr · GitHub

そしてそして、英語版トップページは最近のWebページではよく見るカルーセルを入れています。これはR Markdown のデフォルトではできませんがまたもやkazutanさんがこれを可能にする拡張を作ってくれていて、しかも zousan パッケージに入れてくれてるという親切っぷり。ありがとうぞうさん。 Japan.Rのページを例にすると、以下のように書けばカルーセルがR Markdownの中で使えます。

df <- data.frame(
  imgs = c("img/about-us.jpg", "img/building.jpg", "img/yakei.jpg")
)

library(zousan)
carousel(id = "carousel1", img = df$imgs, interval = 5000)

今後の課題は、せっかく英語版を作ったのだからどう海外に宣伝するか、ですね。

当日の諸業務

これはいろいろです。とにかく大きなトラブルが起こらないように、運営メンバー一同頑張りました。

継係の確保

今年のJapan.R は会場がLINE社だったこともあり、LINE LIVE で中継をしたのですが、私の所属している研究室の後輩3名(3年生)が撮影係をやってくれました。Japan.R初参加にして運営を手伝いたいという彼らのバイタリティには驚くばかりです。ありがとうございました。

来年に向けての課題

今年は大きなトラブルなく進んだと思いますが、細かく言えば何かと反省点がありました。そのあたりは運営メンバーでしっかり見ていきたいと思います。「ここをもっとこうしてほしい」といった意見があればぜひお願いします!

EmacsでつくるオレオレRStudioから1年、自分の分析環境の変化について

はじめに

遅れてすいません。RStudio アドベントカレンダー2日目です。 一年前のアドベントカレンダーで、こんな記事を書いたら意外と反響がありました。

y-mattu.hatenablog.com

これを書いたら周りから過激派だの何だの言われましたが、まあ自分の中では楽しくやっていました。 しかし、それから1年たち、自分の分析環境にもいろいろ変化が出てきました。

変化1 使う言語の割合の変化

当時は専らRしか使っていなかったんですが、PythonSASも同じくらいの割合で使うようになりました。 そのことで、ますますおなじ環境(Emacs)でやりたい欲は強くなりました。

変化2 Rで使うパッケージの変化

当時はせいぜい画像を出力するくらいしかなかったのですが、最近はJSベースのパッケージ(dygraphs, leafletなど)を使う機会も増えました。 しかし、Emacs上ではこれがうまく表示できません。

どうなったか

R

Rに関しては、RStudioの使用機会が増えました。パッケージの補完もでるし、何よりViewerタブに「動かせる図」が出せるのはいいことです。

ただし、やはり自分の思い通りに編集したいという欲もあり、どうしようかなあと考えているところです。Emacs にRStudio のViewer実装するかなあ...

Python

こちらはかなり過激派っぽくなりました。EmacsでJupyte Notebookをやるようになったからです。

Emacsには、Jupyter Notebookを普通に使えるようにする ein パッケージがあります。

github.com

ブラウザではなくEmacsでやるメリットの一つとして、 jedi の補完が使えることがあります。デメリットは、Rと同じくpandas データフレームやleaflet系の動くやつがうまく動かないところです。こういうのがほしいときはブラウザでやってます。

ちなみにEmacsでは以下のように設定するとJupyter Notebookが幸せに使えるようになります。

;; ---------------------------------------------------------
;; Ein(Jupyter Notebook) の設定
;; ---------------------------------------------------------
(require 'ein)


(eval-after-load 'ein-notebook
  '(progn
     (define-key ein:notebook-mode-map (kbd "M-n")
       'ein:worksheet-goto-next-input)
     (define-key ein:notebook-mode-map (kbd "M-p")
       'ein:worksheet-goto-prev-input)
     (define-key ein:notebook-mode-map (kbd "C-c C-n")
       'ein:worksheet-next-input-history)
     (define-key ein:notebook-mode-map (kbd "C-c C-p")
       'ein:worksheet-prev-input-history)
     (define-key ein:notebook-mode-map "\C-c\C-d"
            'ein:worksheet-delete-cell)))

(defun ein-mode-hooks ()
  ;; 行番号非表示
  (nlinum-mode -1))
(add-hook 'ein:notebook-mode-hook 'ein-mode-hooks)

;; jedi を起動
(add-hook 'ein:notebook-mode-hook 'jedi:setup)

結局

RStudioは便利です。これは紛れもない事実です。ただ、Rを書くすべてをRStudioに委ねられない自分がいます。。。

R Markdown で作ったスライドに R で音声を吹き込む

はじめに

R Markdown ではスライドを作ることができます。

https://kazutan.github.io/SappoRoR6/rmd_slide.html#/

とくに、reveal.js ベースの {revealjs} パッケージや remark.js ベースの {xaringan}パッケージは簡単にRの出力を含めたシンプルなスライドを作成できることから私の周りでは使っている人が多いです。

そんなスライドもプレゼンをするときは自分で喋らなければなりません。自分で喋ることの利点はたくさんあるのですが、声の調子が悪かったり、どうしてもプレゼン会場に行けない、自分で音声を録音してビデオを作ってる暇もない、という場面もあるかと思いまます。

今回は、そんなときにRでスライドに音声を吹き込んでしまおうというお話です。これでRだけでスライド作りが完結しますね!!

ただし、吹き込まれるのは自分の声ではありません。

完成品

こんな感じになります。

youtu.be

続きを読む

CRANは闇なのか

はじめに

こんな話があります。

www.slideshare.net

RのパッケージをCRANに登録するのは闇であるという内容です。一方で、そんなに闇ではないという意見もあります。

estatapiパッケージがCRANで公開されました。 - Technically, technophobic.

ThankYouStarsで感謝の気持ちをスターで伝えよう

闇なのか?

先日私も {MlBayesOpt} パッケージで晴れてCRANデビューしたのですが、アクセプトされるまで4回リジェクトされたのでかなり闇でした。個人的には、闇かどうかは

  • どういうパッケージか
  • パッケージの規模(関数の数・ドキュメントの量)

によるのかなあと思います。当たり前といえば当たり前ですが。

以下では、ありがちな「直してね」の内容を紹介しながら思いを綴りたいと思います。

続きを読む

「機械学習のパラメータをベイズ最適化でチューニング」をRで超簡単に書けるパッケージを作った

0. 要約

機械学習のハイパーパラメータをベイズ最適化でチューニングするのは既存パッケージの組み合わせで頑張ればできたのですが、頑張らなくても簡単に書けるパッケージを作りました。

github.com

これにより、例えば iris データをXGboostの3-foldクロスバリデーション、エラー率評価でフィッティングさせたければ以下のように書くことでハイパーパラメーターである eta, max_depth, nround, subsample, bytree をベイズ最適化でチューニングしてくれます。

res0 <- xgb_cv_opt(data = iris,
                   label = Species,
                   objectfun = "multi:softmax",
                   evalmetric = "merror",
                   classes = 3,
                   n_folds = 3)

データセット名、ラベルの列名、XGboostのモデルを組むのに必要なこと、何回クロスバリデーションするかを書けば勝手にやってくれます。

ベイズ最適化そのものについては、hoxo_mさんの資料が分かりやすいと思います。

www.slideshare.net

続きを読む