Japan.R 2015に参加して得た情報まとめ

Japan.Rで私にとって使えそうなアイデアや手法だけを厳選して載せたいと思います。(結局、長くなった気がしますが。。)
全てを見たい場合は、この方のブログがよいと思います。
Japan.R 2015に参加してきた

Spark Streaming

Spark Streamingストリーミングを使って、挙動に応じて自動的にメールやSlackに送るとかでサイトの監視に使えるそうな。

jupyter

RでいうところのRStudioのような分析しやすいPython用のGUI
 

rangerパッケージ

RFなどができる。C++で実装されているので速いらしい。
最近のRのランダムフォレストパッケージ -ranger/Rborist-

RcppRollパッケージ

移動平均とかの計算が楽になるらしい。
インターネットの予約のステップの伸び率をモデリングし、ある一定速度だとしたら表示を出し分けるなどの施策に活かしているそうな。

多腕バンディットアルゴリズム

サイト内のバナーなどの出し分けの最適化に使っているらしい。Rでは重くてできないそうな。

leafletパッケージ

これを使えば地理データの可視化が簡単にできる。
→デフォルトの地図がOpenStreetMapなので、サイトに載せる際も好都合。
→「ぐりぐり動かせる・レイヤー構造・多機能・Shinyでアプリケーションも作れる」
→Githubの方がバージョン上
→データテーブルで読み込んで緯度経度を指定する。
 サークルや線の太さも指定でき、ポップアップも立てれる。
 地点間でのラインも引ける。addPolylines
 プロットでエクスポートでWebページにすれば図が作れる。
leafletでMapbox(とかいろいろな地図)を使う

purrrパッケージ

→複数のモデルをリストにして、推定結果を一気に出すことができる。(都度、モデルを作る必要がない。)
{purrr} による非テーブルデータの処理
purrr 0.1.0を使ってみる(1) map

ggfortifyパッケージ

purrrで実行した分析結果のプロットなどが簡単にできるらしい。
Concepts and Basics of ggfortify

Shiny

分析結果を可視化したりできるツールとしてはカジュアルにできていいかもしれない。
無料版では複数のアクセスに弱いので社内用のツールとしてはいい。

rApacheパッケージ

rとアパッチでwebアプリケーションを作れる。

deployR

APIを作るためのフレームワーク

Gradient Boosting Decision Tree

モデルの性能が良くなるように特徴量の選択ができる手法らしいです。これは進捗が良くなる、イケメンな手法ですね。
今度深掘ってみたいです。
Gradient Boosting Decision Treeでの特徴選択 in R

SparkRパッケージ

Rからスパークの処理を実行できる。
SparkRをEC2上で動かして分散処理してみる

Parquet(パーケ)

ビッグデータで一般的になってきているフォーマットのことらしい。
10GBのデータが300MBになった。→これはすごい!!
DMMゲームのログ解析~Parquetについて~

TinySegmenter

MeCabとかを入れてごにょごにょすることが許されていない方向け?
TinySegmenter:Javascriptだけで書かれたコンパクトな分かち書きソフトウェア

knitrパッケージ

Rの分析結果をhtmlでレポーティングができる。
R でレポートを作成するのに knitr が超便利

R Presentation

Studioでスライド作成できる。
Rとウェブの融合(5)ーslidify、R Presentationー

rvestパッケージ

RでWebスクレイピングができてしまう。(私はPythonでやっていますが。)
rvest でログインしてスクレイピング #rstatsj

pforeachパッケージ

デフォルトで並列計算するようにしたパッケージ
R で超簡単に並列処理を書けるパッケージ pforeach を作った

RstanでGoogleトレンドの推定

rstanを用いて、Googleトレンドデータの予測モデルを推定してみます。

ほとんど岩波データサイエンスのものですが、Googleトレンドのデータを月ごとの季節性を加味した状態空間モデルを用いて予測してみました。

今回の分析では、
・modelのstanコード(stan)
・Rでstanを動かすためのコード(R)
(・可視化のためのコード(R))←必須ではない
を用意します。

データですが、GoogleTrendのサイトで任意のキーワードで検索して、
その時系列データをCSVでダウンロードすれば手に入ります。(ちょっと見つけにくい)

データの形式はシンプルで、
先頭にY
とおいて後はトレンドの値を行ごとに置いていけばいけます。

要はN行1列データをテキストファイルに保存すればOKです。(1行目はY)

まずstanのコードですが、岩波データサイエンスのサンプルコードの季節を4から12に変えています。(たったこれだけ)
Googleトレンドのデータは月単位でも結構値がふれることがあるので、月ごとに応じた潜在的な変数が必要だと思いました。

Rでstanを動かすためのコードですが、ここはサンプルコードとほぼ一緒です。

可視化のためのコードについてもサンプルコードとほぼ一緒です。

以上を実行した結果、以下のような図が出てきます。

fig2-top-left
こちらは実際の時系列データのプロットです。

fig2-top-right
8期先までの予測です。

fig2-bottom-left
8期先までの予測範囲です。信頼区間90%までの範囲となっています。

fig2-bottom-right
推定した潜在的な季節性のデータをプロットしています。

ついでに、4月までのデータを用いて、5~9月の予測を行い、その比較を行っています。

prediction_trend

5月が大きく外れましたが、その後はある程度当てれているように見えます。
5月も当てれるようなモデルを作りたいものですね。