びっぐでぇた解析環境あ~る
~Revolution R Enterprise のご紹介~
                        2012/12/04
                        Japan.R #03
                        Matsui Hiroki
                      (@Hiro_macchan)


2012/12/1 Japan.R#3                     1
はじめに
 このプレゼンテーションは個人の見解で
有り、いかなる所属組織の公式見解ではあ
りません。
 また、このプレゼンテーションにおい
て、営利企業の製品に関する言及がありま
すが、購入を推奨、もしくは非推奨するも
のではないことをご留意下さい。


2012/12/1 Japan.R#3   2
自己紹介
• Matsui Hiroki (RPT,MPH)
• 出身:琵琶湖 住まい:荒川 職場:都内
  赤門
• 職業:医療政策に関する研究をしていま
  す。
• Twitter: Hiro_macchan


     未熟者ですので間違い等は指摘して下さ
             い。
      (できれば、お手柔らかに。。)
2012/12/1 Japan.R#3         3
背景
• R はオンメモリで処理をするから、大きな
  データを扱うのは結構苦手。
• 偉大な諸先輩方の貴重な資料




                      @sfchaos さん    @wdkz さん
                      (2011/04/10)   (2012/09/08)
2012/12/1 Japan.R#3                                 4
背景
• 2012/08/04開催のTokyo.Rにおいて




• Rをベースとした商用ソフトウェアRevolution
  R Enterprise内のプログラムであるRevosclae R
  についてご紹介
• 一部紹介しきれず、土下座orz
2012/12/1 Japan.R#3                   5
このLT でお話したいこと
• Rをベースとした商業ソフトRevolution R内
  のプログラムであるRevosclaeRについてご
  紹介




2012/12/1 Japan.R#3            6
RevoScaleRについて
• Revolution Analytics @カルフォルニア製
• Revolution R Enterprize に同梱されたパッケー
  ジみたいな扱い。
• HDD上にXDF形式のデータの本体を置くこと
  で大規模データを取り扱えるようになる。
• 最近Revolution R Enterprize 6.1が出た。
• $1,000@1USER
• アカデミアにいる人はフリーで利用できる。
      →人柱にならなくても試せる!!

2012/12/1 Japan.R#3                    7
実際の画面




2012/12/1 Japan.R#3   8
実際の画面


                      コマンドエディタ              プロジェクトの管理




                      コマンドライン               オブジェクトの管理




2012/12/1 Japan.R#3    コマンドエディタはRstudio の方が何か好          9
                       き。。
今回使用するデータセットについ
て
• Data Expo 2009
      – アメリカの航空旅客機の飛行データ
      – 1987年~2008年
      – http://stat-computing.org/dataexpo/2009/the-
        data.html
      – フライトの日時や予定離着陸時間、目的地な
        どの情報を29カラムで表している。
      – 今回は、時間の都合上2008年のデータを使用
      – 実は、普通にメモリに乗っかる。。。
2012/12/1 Japan.R#3                                    10
実際に使ってみる。
colClasses <- c(Year=“factor”, …. , DepTime="character", …. , ActualElapsedTime="numeric",…..)
dat.2008.rx <- rxTextToXdf(inFile=file.pass,
                outFile="air2008.xdf",
                overwrite=TRUE,                        Named vector で大体のデータ型
                colClasses = colClasses )                       指定が可能


                                                注意:データを保存する先を指
                                                定しないとメモリに乗っかって
                                                      くる。




                                                           データを分割してHDDに吐いて
                                                                 る。

    2012/12/1 Japan.R#3                                                               11
実際に使ってみる
rxCrossTabs(~ DayofMonth, data = "air2008.xdf")
      3 233259
      4 228649                        月初から月末までのフライト件数
      5 228156                        Factor のlevelの順番がなんか変?
      6 228117                                                                        0 200 600 1000 1400                 0 200   600 1000 1400

                                                                           9                 10                11                 12
      7 233797                                             6000

      ....                                                 5000
                                                           4000

      2 230865                                             3000
                                                           2000

      1 229292                                             1000
                                                             0
                                                                           5                 6                 7                   8
                                                                                                                                                  60
dat.2008.cube <-                                                                                                                                  50




                                                  Counts
                                                                                                                                                  40
rxCube(~F(AirTime):Month, data =                                                                                                                  30
                                                                                                                                                  20
"air2008.xdf")                                                                                                                                    10

rxLinePlot(Counts~AirTime|Month, data=rxR                                  1                 2                 3                   4
                                                                                                                                                  0



esultsDF(dat.2008.cube))                                   6000
                                                           5000
                                                           4000
                                                           3000
                                                           2000
                                                           1000
                                                             0

  2012/12/1 Japan.R#3                                             0 200   600 1000 1400                 0 200 600 1000 1400       12
                                                                                                   AirTime
実際に使ってみる。
myGlmLogit <- rxGlm(Cancelled ~ Month + DayOfWeek, data =
"air2008.xdf",
summary(memoryGlmLogit)        family = binomial(link="logit"))
  Coefficients:
           Estimate Std. Error z value Pr(>|z|)
  (Intercept) -3.402642 0.010038 -338.965 2.22e-16 ***
  Month=1 -0.132518 0.010854 -12.209 2.22e-16 ***
                                                                  glm→rxGlm に。
  Month=2 0.104402 0.010430 10.010 2.22e-16 ***
  Month=3 -0.211816 0.011038 -19.190 2.22e-16 ***
  ・・・・
  Month=9 -0.592640 0.012688 -46.709 2.22e-16 ***
  Month=10 -1.746840 0.019185 -91.052 2.22e-16 ***
  Month=11 -1.356062 0.016872 -80.373 2.22e-16 ***
  Month=12 Dropped Dropped Dropped Dropped
  DayOfWeek=4 -0.103478 0.010387 -9.962 2.22e-16 ***
  DayOfWeek=5 0.184902 0.009690 19.082 2.22e-16 ***
  ・・・・・
  DayOfWeek=2 0.132802 0.009751 13.619 2.22e-16 ***
     2012/12/1 Japan.R#3                                                    13
  DayOfWeek=3 Dropped Dropped Dropped Dropped
サンプリングした結果と比べてみ
   る。
sample.no <- sample(1:nrow(dat.2008.rx.2), 500000)
sub.data.3 <- dat.2008.rx.2[sample.no, ]   Coefficients:
                                                  Estimate Std. Error z value Pr(>|z|)
                                           (Intercept) -3.47509 0.03828 -90.777 < 2e-16 ***
                                           Month1 -0.11197 0.04097 -2.733 0.006278 **
                                           Month2       0.15486 0.03923 3.948 7.88e-05 ***
                                           Month3 -0.20073 0.04185 -4.796 1.61e-06 ***
    Referenceのレベルを                         Month4 -0.63044 0.04727 -13.336 < 2e-16 ***
     何にするかがrxGlm                           Month5 -1.13177 0.05566 -20.333 < 2e-16 ***
       とglmで違う?                            Month6 -0.54642 0.04599 -11.881 < 2e-16 ***
                                           Month7 -0.63464 0.04658 -13.624 < 2e-16 ***
                                           Month8 -0.69782 0.04812 -14.503 < 2e-16 ***
                                           Month9 -0.56999 0.04798 -11.880 < 2e-16 ***
                                           Month10 -1.77033 0.07354 -24.071 < 2e-16 ***
     傾向は同じっぽいん                             Month11 -1.35792 0.06415 -21.169 < 2e-16 ***
      で宜しいのでは?                             DayOfWeek4 -0.04787 0.03920 -1.221 0.222011
                                           DayOfWeek5 0.21635 0.03685 5.871 4.34e-09 ***
                                           DayOfWeek6 -0.14814 0.04241 -3.493 0.000477 **
                                           DayOfWeek7 0.02619 0.03898 0.672 0.501654
    2012/12/1 Japan.R#3                    DayOfWeek1 0.05793 0.03796 1.526 0.127006   14
感想
• 6.1から決定木をサポートしたみたい。
• Windwos HPC Serverを使った並列分散処理をサポートし
  ているみたい。そういえば、AWS でWin Svr 2012が使え
  る。。

 この辺のレポートは
 R advent Calendar 2012(http://atnd.org/events/31973)
 にて 記載予定です。僕が元気であれば。。。

• 回帰分析したいだけなら、サンプリングの方がお手軽だ
  し早いんではという疑問は、現実場面で独自解決して下
  さい。他ソフトとの連携大切。

 2012/12/1 Japan.R#3                                    15
Thank you!!




2012/12/1 Japan.R#3                 16

Japan r.3

  • 1.
    びっぐでぇた解析環境あ~る ~Revolution R Enterpriseのご紹介~ 2012/12/04 Japan.R #03 Matsui Hiroki (@Hiro_macchan) 2012/12/1 Japan.R#3 1
  • 2.
  • 3.
    自己紹介 • Matsui Hiroki(RPT,MPH) • 出身:琵琶湖 住まい:荒川 職場:都内 赤門 • 職業:医療政策に関する研究をしていま す。 • Twitter: Hiro_macchan 未熟者ですので間違い等は指摘して下さ い。 (できれば、お手柔らかに。。) 2012/12/1 Japan.R#3 3
  • 4.
    背景 • R はオンメモリで処理をするから、大きな データを扱うのは結構苦手。 • 偉大な諸先輩方の貴重な資料 @sfchaos さん @wdkz さん (2011/04/10) (2012/09/08) 2012/12/1 Japan.R#3 4
  • 5.
    背景 • 2012/08/04開催のTokyo.Rにおいて • Rをベースとした商用ソフトウェアRevolution R Enterprise内のプログラムであるRevosclae R についてご紹介 • 一部紹介しきれず、土下座orz 2012/12/1 Japan.R#3 5
  • 6.
    このLT でお話したいこと • Rをベースとした商業ソフトRevolutionR内 のプログラムであるRevosclaeRについてご 紹介 2012/12/1 Japan.R#3 6
  • 7.
    RevoScaleRについて • Revolution Analytics@カルフォルニア製 • Revolution R Enterprize に同梱されたパッケー ジみたいな扱い。 • HDD上にXDF形式のデータの本体を置くこと で大規模データを取り扱えるようになる。 • 最近Revolution R Enterprize 6.1が出た。 • $1,000@1USER • アカデミアにいる人はフリーで利用できる。 →人柱にならなくても試せる!! 2012/12/1 Japan.R#3 7
  • 8.
  • 9.
    実際の画面 コマンドエディタ プロジェクトの管理 コマンドライン オブジェクトの管理 2012/12/1 Japan.R#3 コマンドエディタはRstudio の方が何か好 9 き。。
  • 10.
    今回使用するデータセットについ て • Data Expo2009 – アメリカの航空旅客機の飛行データ – 1987年~2008年 – http://stat-computing.org/dataexpo/2009/the- data.html – フライトの日時や予定離着陸時間、目的地な どの情報を29カラムで表している。 – 今回は、時間の都合上2008年のデータを使用 – 実は、普通にメモリに乗っかる。。。 2012/12/1 Japan.R#3 10
  • 11.
    実際に使ってみる。 colClasses <- c(Year=“factor”,…. , DepTime="character", …. , ActualElapsedTime="numeric",…..) dat.2008.rx <- rxTextToXdf(inFile=file.pass, outFile="air2008.xdf", overwrite=TRUE, Named vector で大体のデータ型 colClasses = colClasses ) 指定が可能 注意:データを保存する先を指 定しないとメモリに乗っかって くる。 データを分割してHDDに吐いて る。 2012/12/1 Japan.R#3 11
  • 12.
    実際に使ってみる rxCrossTabs(~ DayofMonth, data= "air2008.xdf") 3 233259 4 228649 月初から月末までのフライト件数 5 228156 Factor のlevelの順番がなんか変? 6 228117 0 200 600 1000 1400 0 200 600 1000 1400 9 10 11 12 7 233797 6000 .... 5000 4000 2 230865 3000 2000 1 229292 1000 0 5 6 7 8 60 dat.2008.cube <- 50 Counts 40 rxCube(~F(AirTime):Month, data = 30 20 "air2008.xdf") 10 rxLinePlot(Counts~AirTime|Month, data=rxR 1 2 3 4 0 esultsDF(dat.2008.cube)) 6000 5000 4000 3000 2000 1000 0 2012/12/1 Japan.R#3 0 200 600 1000 1400 0 200 600 1000 1400 12 AirTime
  • 13.
    実際に使ってみる。 myGlmLogit <- rxGlm(Cancelled~ Month + DayOfWeek, data = "air2008.xdf", summary(memoryGlmLogit) family = binomial(link="logit")) Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -3.402642 0.010038 -338.965 2.22e-16 *** Month=1 -0.132518 0.010854 -12.209 2.22e-16 *** glm→rxGlm に。 Month=2 0.104402 0.010430 10.010 2.22e-16 *** Month=3 -0.211816 0.011038 -19.190 2.22e-16 *** ・・・・ Month=9 -0.592640 0.012688 -46.709 2.22e-16 *** Month=10 -1.746840 0.019185 -91.052 2.22e-16 *** Month=11 -1.356062 0.016872 -80.373 2.22e-16 *** Month=12 Dropped Dropped Dropped Dropped DayOfWeek=4 -0.103478 0.010387 -9.962 2.22e-16 *** DayOfWeek=5 0.184902 0.009690 19.082 2.22e-16 *** ・・・・・ DayOfWeek=2 0.132802 0.009751 13.619 2.22e-16 *** 2012/12/1 Japan.R#3 13 DayOfWeek=3 Dropped Dropped Dropped Dropped
  • 14.
    サンプリングした結果と比べてみ る。 sample.no <- sample(1:nrow(dat.2008.rx.2), 500000) sub.data.3 <- dat.2008.rx.2[sample.no, ] Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -3.47509 0.03828 -90.777 < 2e-16 *** Month1 -0.11197 0.04097 -2.733 0.006278 ** Month2 0.15486 0.03923 3.948 7.88e-05 *** Month3 -0.20073 0.04185 -4.796 1.61e-06 *** Referenceのレベルを Month4 -0.63044 0.04727 -13.336 < 2e-16 *** 何にするかがrxGlm Month5 -1.13177 0.05566 -20.333 < 2e-16 *** とglmで違う? Month6 -0.54642 0.04599 -11.881 < 2e-16 *** Month7 -0.63464 0.04658 -13.624 < 2e-16 *** Month8 -0.69782 0.04812 -14.503 < 2e-16 *** Month9 -0.56999 0.04798 -11.880 < 2e-16 *** Month10 -1.77033 0.07354 -24.071 < 2e-16 *** 傾向は同じっぽいん Month11 -1.35792 0.06415 -21.169 < 2e-16 *** で宜しいのでは? DayOfWeek4 -0.04787 0.03920 -1.221 0.222011 DayOfWeek5 0.21635 0.03685 5.871 4.34e-09 *** DayOfWeek6 -0.14814 0.04241 -3.493 0.000477 ** DayOfWeek7 0.02619 0.03898 0.672 0.501654 2012/12/1 Japan.R#3 DayOfWeek1 0.05793 0.03796 1.526 0.127006 14
  • 15.
    感想 • 6.1から決定木をサポートしたみたい。 • WindwosHPC Serverを使った並列分散処理をサポートし ているみたい。そういえば、AWS でWin Svr 2012が使え る。。 この辺のレポートは R advent Calendar 2012(http://atnd.org/events/31973) にて 記載予定です。僕が元気であれば。。。 • 回帰分析したいだけなら、サンプリングの方がお手軽だ し早いんではという疑問は、現実場面で独自解決して下 さい。他ソフトとの連携大切。 2012/12/1 Japan.R#3 15
  • 16.