びっぐでぇた解析環境あ~る
~主としてRevolution R のご紹介
        ~
       2012/08/04
       Tokyo.R #25
       Matsui Hiroki
はじめに
 このプレゼンテーションは個人の見解で
有り、いかなる所属組織の公式見解ではあ
りません。
 また、このプレゼンテーションにおいて、
営利企業の製品に関する言及がありますが、
購入を推奨するものではないことをご留意
下さい。


2012/8/4 Tokyo.R#25   2
自己紹介
• Matsui Hiroki (RPT,MPH)
• 出身:琵琶湖 住まい:千葉 職場:都内赤
  門
• 趣味:サイクリング。一緒に走れる怖くない
  お嫁様募集中!
• 専門:リハビリテーション、臨床疫学・医療
  経済学
• 元理学療法士(リハビリ屋)→研究者
• Rは趣味程度に利用→現在は、仕事で利用
未熟者ですので間違い等は指摘して下さい。
• Twitter: Hiro_macchan
            (できれば、お手柔らかに。。)
2012/8/4 Tokyo.R#25           3
前回までのあらすじ
Tokyo.R#24 にて、#25の日程が2012/08/04に
決まる。




2012/8/4 Tokyo.R#25                4
前回までのあらすじ
Tokyo.R#24 にて、#25の日程が2012/08/04に
決まる。
当日、法事で実家に帰省する私は参加を見
送る。




2012/8/4 Tokyo.R#25                5
前回までのあらすじ
Tokyo.R#24 にて、#25の日程が2012/08/04に
決まる。
当日、法事で実家に帰省する私は参加を見
送る。
発表者リストに自分の名前を発見する。




2012/8/4 Tokyo.R#25                6
前回までのあらすじ
Tokyo.R#24 にて、#25の日程が2012/08/04に
決まる。
当日、法事で実家に帰省する私は参加を見
送る。
発表者リストに自分の名前を発見する。
(;゚д゚)ポカーン



2012/8/4 Tokyo.R#25                7
前回までのあらすじ
Tokyo.R#24 にて、#25の日程が2012/08/04に
決まる。
当日、法事で実家に帰省する私は参加を見
送る。
発表者リストに自分の名前を発見する。
(;゚д゚)ポカーン
滋賀からとんぼ返り←いまここ!!
※乗り換えた名古屋で赤福買ってきました。
2012/8/4 Tokyo.R#25                8
背景




         http://itpro.nikkeibp.co.jp/article/COLUMN/20120709/407924/
2012/8/4 Tokyo.R#25                                                    9
背景
• R はビッグデータ解析環境として適しているの
  か?
      – 確かに、各種ライブラリのおかげでデータを解析す
        る目的であれば極めて有用なツールである。

• R は基本的にデータをメモリ上に保持する。
      – メモリ上限までしかデータを保持できない。
• R の処理系は決して高速とは呼べない。
      – 基本的に単一CPUしか利用しない。

• ビッグデータと呼ばれる大規模データ解析に適し
  ていない?
2012/8/4 Tokyo.R#25               10
背景
• 偉大な諸先輩方の貴重な資料




                      @sfchaos さん    @wdkz さん
                      (2011/04/10)   (2011/11/26)

  • R で大規模データを扱う各種チャレンジは
    継続的に行われている。
2012/8/4 Tokyo.R#25                                 11
背景
• 今回のプレゼンテーションは以下の点に触れた
  い。

      – Rの商用パッケージである、RevoscaleR を使用
        してHDD上でデータの処理を行う事が出来る。
      – +α(LTネタについて)




2012/8/4 Tokyo.R#25               12
RevoScaleRについて
• Revolution Analytics @カルフォルニア製
• Revolution R Enterprize に同梱されたパッ
  ケージみたいな扱い。
• 最近Revolution R Enterprize 6.0が出た。
• $1,000@1USER
• アカデミアにいる人はフリーで利用でき
  る。
• 何か、ダウンロードするときにセキュリ
  ティに引っかかるんだけど。。。。広告
2012/8/4 Tokyo.R#25                   13
RevoScaleRについて
• bigmemory, ff などと同じくHDD上に一時ファイ
  ルを作成しそこにアクセスしながら解析する。
• Bigmemoryと違いData.frame を扱える。
• 独自関数で一般化線形モデルをサポート。
      Summary Statistics,Crosstabulations
      Correlation and Covariance,Linear Regression
      Binomial Logistic Regression,
      Principal Components Analysis
      Generalized Linear Modeling,K-means clustering,
      Predictions
• どうも、分散処理をサポートしているらしい。

2012/8/4 Tokyo.R#25                                     14
今回使用するデータセットについ
て
• Data Expo 2009
      – アメリカの航空旅客機の飛行データ
      – 1987年~2008年
      – http://stat-computing.org/dataexpo/2009/the-
        data.html
      – フライトの日時や予定離着陸時間、目的地な
        どの情報を29カラムで表している。
      – 今回は、時間の都合上2008年のデータを使用


2012/8/4 Tokyo.R#25                                    15
RevoscaleR の使い方
1. データをHDD上にXDFファイル
   として格納
2. XDFファイルの編集
3. XDFファイルの解析
4. 分散処理


2012/8/4 Tokyo.R#25   16
RevoscaleR の使い方
1. データをHDD上にXDFファイル
   として格納
2. XDFファイルの編集
3. XDFファイルの解析
4. 分散処理


2012/8/4 Tokyo.R#25   17
RevoscaleR の使い方
 データの格納
dat.2008.rx <- rxTextToXdf(inFile="C:/Users/hoge/2008.csv",
                           outFile="C:/Users/hoge/air2008.xdf",
                            overwrite=TRUE)


入力ファイル(テキストファイル)                               出力ファイル(.xdf)のパ
       のパス                                          ス

rxImportToXdf(inSource, outSource, rowSelection = NULL, transforms = NULL,
              transformFunc = NULL, transformVars = NULL, userObjects = NULL,
              append = "none", overwrite = FALSE, numRows = -1,
              reportProgress = rxGetOption("reportProgress"))

         SASのデータセットとかも読めるらし
                  い。

 2012/8/4 Tokyo.R#25                                                      18
RevoscaleR の使い方
  データの格納
dat.2008.rx <- rxTextToXdf(inFile="C:/Users/hoge/2008.csv",
                           outFile="C:/Users/hoge/air2008.xdf",
                            overwrite=TRUE, colClasses=)




colClasses :“logical”, “integer”,“factor”, “numeric”,
            “character”等が指定できる。




  2012/8/4 Tokyo.R#25                                             19
RevoscaleR の使い方
1. データをHDD上にXDFファイル
   として格納
2. XDFファイルの編集
3. XDFファイルの解析
4. 分散処理


2012/8/4 Tokyo.R#25   20
RevoscaleR の使い方
  XDFファイルの編集
 • XDFファイルの中身の確認
            rxGetInfoXdf("C:/hoge/air2008.xdf", getVarInfo = TRUE)

File name: C:/hoge/air2008.xdf
Number of observations: 7009728
Number of variables: 29
Number of blocks: 15
Variable information:
Var 1: Year, Type: integer, Low/High: (2008, 2008)
Var 2: Month, Type: integer, Low/High: (1, 12)
:



  2012/8/4 Tokyo.R#25                                                21
RevoscaleR の使い方
XDFファイルの編集
• XDFファイルの中身の編集
     rxDataStepXdf(inFile = inputFile, outFile = outputFile,
            transforms = list(a = Year * 20, b = 100 * Month),
            #rowSelection = Weekday == 0,
            varsToKeep = varsToKeep,
            overwrite = TRUE)
 File name: C:/hoge/air2008.xdf
 Number of observations: 7009728
 :
 Var 29: LateAircraftDelay, Type: integer, Low/High: (0, 1316)
 Var 30: a, Type: numeric, Low/High: (4016000.0000, 4016000.0000)
 Var 31: b, Type: numeric, Low/High: (20.0000, 240.0000)
2012/8/4 Tokyo.R#25                                                 22
RevoscaleR の使い方
1. データをHDD上にXDFファイル
   として格納
2. XDFファイルの編集
3. XDFファイルの解析
4. 分散処理


2012/8/4 Tokyo.R#25   23
RevoscaleR の使い方
XDFファイルの解析
• XDFファイルのクロス表集計
  CTabs <- rxCrossTabs(ArrDelay ~ Origin,
                       data = "C:/hoge/air2008.xdf")




 何かうまく動かなかったです。
 最初の読み込み時にちゃんと型設定すべきでした。

 雰囲気的にはreshape2みたいなのりでデータの加
 工が出来るっぽい?

2012/8/4 Tokyo.R#25                                    24
RevoscaleR の使い方
 XDFファイルの解析
• XDFファイル→ヒストグラム
rxHistogram(~AirTime,
data = "C:/hoge/air2008.xdf")




 2012/8/4 Tokyo.R#25            25
RevoscaleR の使い方
XDFファイルの解析
• XDFファイルを直接GLMにぶち込む。
• 多分、rxLinMod()あたりにオプション指定する事で出来そ
  う?




                      調査中


2012/8/4 Tokyo.R#25             26
RevoscaleR の使い方
1. データをHDD上にXDFファイル
   として格納
2. XDFファイルの編集
3. XDFファイルの解析
4. 分散処理


2012/8/4 Tokyo.R#25   27
RevoscaleR の使い方
分散処理
• ニュースリリースには、Revoscale Rは並列処理機能を有
  し、Windows HPC Serverやクラウド環境での並列処理を実
  施できるとある。。。




                      調査中



2012/8/4 Tokyo.R#25                 28
まとめに変えて
• RevoScaleRでHDD上でのデータ処理が可能
  となることから、メモリ上限の制約からR
  を解き放つ事が出来る。
• ちょっと、遅い気がする。
      – 並列処理機能についてもう少し調査が必要
      – 高速なドライブ(FusionIO社製 iOdrive)との
        相性は?
• $1000の価値があるかはもう少し見ないと
  わからない。

2012/8/4 Tokyo.R#25                     29
現在の心境




        調査未実施が多いことをお詫びします。
        次の機会に、追加情報をお届けします。
2012/8/4 Tokyo.R#25          30
参考文献
@sfchaos さん資料
http://www.slideshare.net/sfchaos/rbigmemory-tokyowebmining10
@wdkz さん資料
http://www.slideshare.net/wdkz/rffbigmemoryrevoscaler-10334116

Revolution Analytics
http://www.revolutionanalytics.com/




2012/8/4 Tokyo.R#25                                              31
+α
• 実は、今回LT予定でした。
• LTテーマは


          「データ前処理・失敗分析」




2012/8/4 Tokyo.R#25       32
某飲み会にて。。。
• “ビールうめー!”
• “女性の前では否定的な言葉は使わない。
  なんかめんどくさいことがあったら嫌い
  じゃないんだよねって言うとよいよ!”

• “R 使って解析するわけだけど、データの
  前処理ってかなり大切だよね?”
• “解析って色々やるわけだけど、失敗分析
  についても共有すべきだよね?”
分析者のお悩みあるある!!
次回(今回?)予告
• 私のテーマ
   「Excelの結合セルに関するごり押し事
例」

• みなさんのバッドノウハウとか、失敗事
  例LTで発表しませんか?
• 主催者の里さんと、皆様のご意見を賜り
  たいと思います。
2012/8/4 Tokyo.R#25       35
Thank You !
2012/8/4 Tokyo.R#25                 36

Tokyo r25 hiro_macchan