SlideShare a Scribd company logo
12
Most read
21
Most read
23
Most read
Rのffと
         bigmemoryと
        RevoScaleRとを
         比較してみた
              aa



           Japan.R #2
           2011/11/26
           和田 計也
サイバー系
サイバー系


     はじめに



     ※この発表は個人の
     見解であり、所属する
     組織の公式見解では
     ありません。

2011/11/26            1
サイバー系


     自己紹介

  和田 計也(@wdkz)
         静岡県袋井市出身



  サイバー系企業でデータマイニングエンジニア職
         創立記念日が3月18日
         社長の出身地が福井県鯖江市



  前職はバイオベンチャー
         バイオマーカ探索してた
         学生時代は枯草菌の研究




2011/11/26                          2
サイバー系


     Rの欠点

              データはすべてオンメモリで保持する
                 メモリに載りきらないデータは解析できない。
                 SASはメモリに載りきらなくてもデータ解析可能。




2011/11/26                                           3
サイバー系


     そこで

              データはすべてオンメモリで保持しなくても
               いいんじゃね?
                 必要なデータだけを都度メモリ上に置く
                 それ以外はディスク上のファイルとして置いておく
                 RDBSとかSASとかで一般的な方法




2011/11/26                                          4
サイバー系


     搭載メモリ量以上のデータを扱えるパッケージ

      ff
      bigmemory
      RevoScaleR




             データをオンメモリ保持しない仕組みは
             どれもだいたい同じ




2011/11/26                                5
サイバー系


     いつもの




             それぞれに
             一長一短が
             あります!!
             とよく言われる。

2011/11/26                      6
サイバー系


     なんだろう?




         一長一短っ
         て具体的に
         何よ?
2011/11/26               7
サイバー系


     一番いいのは




   で、結局何
   が一番いい
   の?
2011/11/26            8
サイバー系


     悩み無用




   といった悩みを
   今日は解消して
   帰って下さい
2011/11/26           9
サイバー系


     作者とか

    ff
     trueclusterって会社の中の人
     GPL2ライセンス
     Version 4.2.11
    Bigmemory
     Michael J. Kane and John W. Emerson
     LGPL3ライセンス
     Version 2.2.3
    RevoScaleR
     Revolution Analytics社
                                            2011/11/26現在
     ライセンス購入 年1,000$/人
     Version 2.0.0

2011/11/26                                                 10
サイバー系


     インストール

    ff
    Install.packages(“ff”) #簡単
    bigmemory
    Install.packages(“bigmemory”) #簡単
    RevoScaleR
    Revolution Analytics社からRevolutionR Enterpriseを購入
    しインストーラ(.exeとか.py)でインストール
    #社内手続きとかも必要だしちょっと面倒




2011/11/26                                         11
サイバー系


     まずは使ってみる
                 ff
                 ff.obj <- ff(1:10, filename=“ff.01”)
                 #ベクトル
                 ff.obj2 <- ff(1:10000, vmode="integer", dim=c(1000, 10))
                 #マトリックス
                                                                      この例だとたまたま
                 ffdf.obj <- ffdf(ff.obj,ff.obj)                      全部integer型ですね
                 #ffdf関数でデータフレームも可能
                 bigmemory
                 big.obj <- big.matrix(5,2, type=“integer”, init=1)
                 #マトリックス
                 RevoScaleR
                 my.data <- data.frame(x=1:100, y=100:1)
                 revo.obj <- rxDataFrameToXdf(my.data)
                 #データフレーム

                   それぞれ使えるクラスが違う!

2011/11/26                                                                            12
サイバー系


     csvファイルの読み込み(きっとよく使う)
                                                     入力ファイル名
                ff (ffdf)                                                   出力ファイル名
                 air.ff <- read.csv.ffdf(file="AirlineDataAll.csv", header=TRUE,
                                asffdf_args=list(ff_args=list(filename="air.ff")),
                                colClasses=c(Year="integer", Month="integer",
                                             DayofMonth="integer“, DayOfWeek="integer",
                                             DepTime="integer",    CRSDepTime="integer",
                                             UniqueCarrier="factor", FlightNum="integer",
                                             TailNum="factor", ActualElapsedTime="integer",
                                             CRSElapsedTime="integer", AirTime="integer",
              各カラムの型を
                                             ArrDelay="integer", DepDelay="integer",
              丁寧に指定する
              のが安全                           Origin="factor", Dest="factor",
                                             Distance="integer", TaxiIn="integer",
     *本来なら型は自動推定                             TaxiOut="integer", Cancelled="integer",
     してくれるのだが                                CancellationCode="factor", Diverted="integer",
     AirlineDataAllはダメ。
     最初の数千行ぐらいで                              CarrierDelay="integer", WeatherDelay="integer",
     型推定していて、その型
     が外れだとインポート途中
                                             NASDelay="integer", SecurityDelay="integer",
     でエラーとなる。                                LateAircraftDelay="integer"
                                             ))

2011/11/26                                                                                 13
サイバー系


     csvファイルの読み込み(きっとよく使う)・続き
                                                 入力ファイル名 ; これを指定しないと共有メモリ上に
                                                 データを生成しちゃって大変なことになる
                 bigmemory
                 air.big <- read.big.matrix(“airline.csv”,header=TRUE,type="integer",
                                      backingfile="air.bm“,descriptorfile=“air.bm.desc”)
                                                           出力ファイル名

                 RevoScaleR
                 air.rx <- rxImport(inData="AirlineDataAll.csv",outFile="air.xdf")
                                              入力ファイル名                  出力ファイル名




                                                                     *RevoScaleRもffと同様に
                                                                     型は自動推定してくれる。
                                                                     FfdfでミスるAirlineDataAllは
                                                                     RevoScaleRだと大丈夫だった。

2011/11/26                                                                                     14
サイバー系


     使用可能な型
                ff
                     boolean, logical, quad, nibble, byte, ubyte, short, ushort,
                      integer, single,double,raw, factor, ordered, Date, POSIXct
                                                     かなり豊富。 やる気がみなぎる
                bigmemory
                     integer, char, short     少ない。基本数値だけと思っててよい

                RevoScaleR
                     ….              豊富。というかたぶん全部の型いける。(未確認生命体)




             *なお、前ページのbigmemory用に読み込んだファイル「airline.csv」は
             もとの「AirlineDataAll.csv」を数値データに変換したファイルです。


2011/11/26                                                                              15
サイバー系


     ローカルディスク上のデータについて
                 ff
                 air.ff <- read.csv.ffdf(file="AirlineDataAll.csv", header=TRUE,
                                 asffdf_args=list(ff_args=list(filename="air.ff")),
                 #air.ffというファイルが生成されるがこれは瞞し。実体はテンポラリフォルダ内
                 に大量に生成される




                 bigmemory
                 air.big <- read.big.matrix(“airline.csv”,header=TRUE,type="integer",
                                      backingfile="air.bm“,descriptorfile=“air.bm.desc”)
                 #巨大なair.bmがデータの実体。air.db.descというテキストファイルにデータの実
                 体だとかカラム数、行数だとかが記載されている
                 RevoScaleR
                  air.rx <- rxImport(inData="AirlineDataAll.csv",outFile="air.xdf")
                  #巨大なair.xdfファイルがデータの実体



2011/11/26                                                                                 16
サイバー系


     データの主力と再ロードについて
                ff
                     filenameオプションで指定した場合はそれ。
                     Filenameオプションで指定しなかった場合は
                       ffsave(air.ffdf, file=“air.ff”)
                       #↑みたいにして出力しておくとair.ff.ffDataが生成される
                      ffload(“air.ff”)#再ロード時は拡張子.ffDataはつけない


                bigmemory
                      backingfileオプションで指定したファイルと同時に生成される.desc
                       ファイルも大事
                     air.big <- attach.big.matrix(“air.desc”)
                      #再ロード時はdescファイルを指定する

                RevoScaleR
                     xdfファイルそのもの(特に気にかけておくことはない)
                     全ての専用関数、xdfファイルを指定する引数がある




2011/11/26                                                           17
サイバー系


     airlineデータの読み込みをしてみて
                                          ただしテンポラリフォルダに生成される実体は
                                          29ファイルで合計13,666MB だった



             パッケージ        速度         生成データのサイズ        メモリ使用量
             ff           1337.356    1,371,623,837   ほぼ使用しない
             bigmemory    1092.221   14,330,056,404   結構使う
             RevoScaleR   1400.354   16,802,423,891   ほぼ使用しない




             csvファイルからの読み込みでは速度的に絶望的に遅いものは無し。
             生成されるデータのサイズも絶望的に大きすぎるものは無し。
             ただし、bigmemoryはメモリを結構使う。一旦、共有メモリ上にデータを
             置いてからファイルに書き出してる感じもする。なので、搭載メモリが
             少ないマシンだとcsvファイルからの読み込みが絶望的に遅くなった。


2011/11/26                                                            18
サイバー系


     minとかmaxとか基本的な関数
                ff
                     dim(air.ff), colnames(air.ff),min(air.ff[,1]), max(air.ff[,1]),
                      table(air.ff[,1]), sum(as.numeric(air.ff[,1])), head(air.ff)とか結構
                      使える


                bigmemory
                     dim(air.big), colnames(air.big),min(air.big[,1]), max(air.big[,1]),
                      table(air.big[,1]), sum(as.numeric(air.big[,1])), head(air.big)とか
                      結構使える


                RevoScaleR
                     皆さんの知っている関数は全て使えません。
                     dim, colnames, min, max, headあたりはrxGetInfo関数を使う
                      rxGetInfo(air.xdf, getVarInfo=TRUE, numRows=5)
                     tableはrxTable関数、sumはわかんね




2011/11/26                                                                                  19
サイバー系


     とはいえ
                ffで、できないことも多々ある
                     データフレームを入力としたモデル式つかうやつ全般は全滅
                      randomForest(delay~., data=air.ff)
                      glm(delay ~., data=air.ff, family=“binomial(logit)”)
                      svm(delay ~,. data=air.ff)
                      #結構痛い...

                     apply関数族はapplyのみ
                         期待していたplyr::ddplyも使えなかった
                         例外的にffapply関数はあるので、行もしくは列単位で一気に
                          計算ってのはたぶんできる


                bigmemory, RevoScaleRでは..
                     モデル式全滅
                     glm, k-meansはそれぞれ専用関数が実装されているため使える
                     bigmemoryはbiganalytics::applyが実装されている
                     RevoScaleRはバージョンアップのたびに新しい関数が実装されてい
                     く印象あり


2011/11/26                                                                       20
サイバー系


     他の関数を一応列挙
                ff (ffbaseパッケージ)
                    all.ff, any.ff, unique.ff,ffsort, ffapply...


                bigmemory (biganalyticsパッケージ&bigtabulateパッケージ)
                    bigtable, bigsummary, bigkmeans, biglm, colsd, colvar...

                RevoScaleR
                    rxImport, rxSort, rxMerge, rxChiSquaredTest, rxFisherTest,
                     rxKendallCor, rxPairwiseCrossTab, rxOddsRatio, rxLinMod, rxLogit,
                     rxPredict, rxKmeans, rxHistogram, rxLinePlot ...




2011/11/26                                                                               21
サイバー系


     まとめ
     ff、かわいいよff
              ffの良い点
                 integer, factor, double等々、いろんな型を使える
                 ffdfでデータフレーム使える
                 minとかmaxとかtableとか、普段使ってる関数がそのまま使える
                 ↑のはもしかしたらメモリ的にアウトな場合があるかもしれないがそんなとき
                  なffbaseパッケージを使えばいいかも
              bigmemoryのダメな点
                 実はcsvファイルから読み込む時の(共有)メモリ使用量パねぇ
                 matrixしか使えない
                 integer, short, charの型しか使えない
              RevoScaleRのダメな点
                 有償ライセンス
                 関数が全て専用のもの、しかもちょっとクセがあって使いづらい
                 しかもドキュメントがわかりづらい
              ffの劣る点
                 glm, k-meansが使えない
                 ベクトルのサイズは2^31-1が上限(bigmemoryは2^52, RevoScaleRは不明)
                 データの再ロードに時間がかかる。(圧縮ファイルを解凍している感じ)
2011/11/26                                                            22
サイバー系


     最後に

            Use R! 2011ではbigmemoryに関する発表もffに関する発表もあ
             りませんでした。
              ffは2007年から毎年あったのに…
            RevoScaleR (Revolution R Enterprise)に関する発表はありま
             した。

            メモリの価格が下がってきたこともあり、数十ギガ程度のデー
             タならオンメモリで処理しちゃう傾向にあるのかも




2011/11/26                                                        23

More Related Content

PDF
Rにおける大規模データ解析(第10回TokyoWebMining)
PDF
一般化線形混合モデル入門の入門
PDF
はじめての「R」
PPTX
R seminar on igraph
PDF
実践で学ぶネットワーク分析
PDF
Rの高速化
PPTX
金融時系列のための深層t過程回帰モデル
PPTX
距離とクラスタリング
Rにおける大規模データ解析(第10回TokyoWebMining)
一般化線形混合モデル入門の入門
はじめての「R」
R seminar on igraph
実践で学ぶネットワーク分析
Rの高速化
金融時系列のための深層t過程回帰モデル
距離とクラスタリング

What's hot (20)

PDF
グラフニューラルネットワーク入門
PDF
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
PDF
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
PPTX
Rでのtry関数によるエラー処理
PDF
2 4.devianceと尤度比検定
PDF
Rで学ぶ離散選択モデル
PDF
ベイズモデリングと仲良くするために
PDF
RのffでGLMしてみたけど...
PPTX
社会心理学者のための時系列分析入門_小森
PDF
最近のRのランダムフォレストパッケージ -ranger/Rborist-
PDF
効果のあるクリエイティブ広告の見つけ方(Contextual Bandit + TS or UCB)
PDF
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
PDF
Granger因果による 時系列データの因果推定(因果フェス2015)
PPTX
Rによる高速処理 まだfor使ってるの?
PDF
Hyperoptとその周辺について
PPTX
Imputation of Missing Values using Random Forest
PDF
階層ベイズとWAIC
PPTX
データサイエンス概論第一=3-2 主成分分析と因子分析
PDF
階層ベイズによるワンToワンマーケティング入門
PDF
混合モデルを使って反復測定分散分析をする
グラフニューラルネットワーク入門
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
Rでのtry関数によるエラー処理
2 4.devianceと尤度比検定
Rで学ぶ離散選択モデル
ベイズモデリングと仲良くするために
RのffでGLMしてみたけど...
社会心理学者のための時系列分析入門_小森
最近のRのランダムフォレストパッケージ -ranger/Rborist-
効果のあるクリエイティブ広告の見つけ方(Contextual Bandit + TS or UCB)
Sparse Codingをなるべく数式を使わず理解する(PCAやICAとの関係)
Granger因果による 時系列データの因果推定(因果フェス2015)
Rによる高速処理 まだfor使ってるの?
Hyperoptとその周辺について
Imputation of Missing Values using Random Forest
階層ベイズとWAIC
データサイエンス概論第一=3-2 主成分分析と因子分析
階層ベイズによるワンToワンマーケティング入門
混合モデルを使って反復測定分散分析をする
Ad

Viewers also liked (8)

PDF
ICLR読み会 奥村純 20170617
PDF
[ICLR2017読み会 @ DeNA] ICLR2017紹介
PPTX
医療データ解析界隈から見たICLR2017
PDF
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
PDF
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @Dena
PDF
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
PDF
170614 iclr reading-public
PDF
ICLR読み会 奥村純 20170617
[ICLR2017読み会 @ DeNA] ICLR2017紹介
医療データ解析界隈から見たICLR2017
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @Dena
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
170614 iclr reading-public
Ad

Similar to RのffとbigmemoryとRevoScaleRとを比較してみた (20)

PDF
イマドキの現場で使えるJavaライブラリ事情
PDF
hscj2019_ishizaki_public
PDF
知って得する標準関数の使い方
PDF
From Java To Clojure
PDF
JavaScript.Next
KEY
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
PDF
Oracle Cloud Developers Meetup@東京
PDF
Kanazawa.js.Next
PDF
Tokyo.R#16 wdkz
PDF
ATN No.2 Scala事始め
PDF
JavaScript.Next Returns
PDF
Scala EE 7 Essentials
PDF
RとSQLiteで気軽にデータベース作成
PDF
おもにEXcelだけで出来る自動化技術
PDF
Gorinphp0729
PDF
Gorinphp0729
PDF
JavaScript (ECMAScript) 2013
PDF
Solaris 11 に見る、次世代ファイルシステムZFS
PDF
第2回品川Redmine勉強会(日本語全文検索)
PDF
React Native GUIDE
イマドキの現場で使えるJavaライブラリ事情
hscj2019_ishizaki_public
知って得する標準関数の使い方
From Java To Clojure
JavaScript.Next
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Oracle Cloud Developers Meetup@東京
Kanazawa.js.Next
Tokyo.R#16 wdkz
ATN No.2 Scala事始め
JavaScript.Next Returns
Scala EE 7 Essentials
RとSQLiteで気軽にデータベース作成
おもにEXcelだけで出来る自動化技術
Gorinphp0729
Gorinphp0729
JavaScript (ECMAScript) 2013
Solaris 11 に見る、次世代ファイルシステムZFS
第2回品川Redmine勉強会(日本語全文検索)
React Native GUIDE

More from Kazuya Wada (15)

PDF
オンラインTVサービスの分析事例
PDF
DeployR使ってみた話
PDF
道玄坂Lt#2 wdkz
PDF
ハイレゾの話
PDF
Shiny-Serverあれこれ
PDF
データサイエンティストカジュアルトーク by wdkz
PDF
R-3.0.0でGLM
PDF
はじめてのShiny
PDF
JuliaでGLM
PDF
Rで触れる日本経済~RでVAR編~
PDF
そろそろRStudioの話
PDF
RでつくるWebアプリ~rApache編~
PDF
Rでウォーリを探してみた
PDF
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
PDF
RでGPU使ってみた
オンラインTVサービスの分析事例
DeployR使ってみた話
道玄坂Lt#2 wdkz
ハイレゾの話
Shiny-Serverあれこれ
データサイエンティストカジュアルトーク by wdkz
R-3.0.0でGLM
はじめてのShiny
JuliaでGLM
Rで触れる日本経済~RでVAR編~
そろそろRStudioの話
RでつくるWebアプリ~rApache編~
Rでウォーリを探してみた
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
RでGPU使ってみた

RのffとbigmemoryとRevoScaleRとを比較してみた

  • 1. Rのffと bigmemoryと RevoScaleRとを 比較してみた aa Japan.R #2 2011/11/26 和田 計也 サイバー系
  • 2. サイバー系 はじめに ※この発表は個人の 見解であり、所属する 組織の公式見解では ありません。 2011/11/26 1
  • 3. サイバー系 自己紹介  和田 計也(@wdkz)  静岡県袋井市出身  サイバー系企業でデータマイニングエンジニア職  創立記念日が3月18日  社長の出身地が福井県鯖江市  前職はバイオベンチャー  バイオマーカ探索してた  学生時代は枯草菌の研究 2011/11/26 2
  • 4. サイバー系 Rの欠点  データはすべてオンメモリで保持する  メモリに載りきらないデータは解析できない。  SASはメモリに載りきらなくてもデータ解析可能。 2011/11/26 3
  • 5. サイバー系 そこで  データはすべてオンメモリで保持しなくても いいんじゃね?  必要なデータだけを都度メモリ上に置く  それ以外はディスク上のファイルとして置いておく  RDBSとかSASとかで一般的な方法 2011/11/26 4
  • 6. サイバー系 搭載メモリ量以上のデータを扱えるパッケージ  ff  bigmemory  RevoScaleR データをオンメモリ保持しない仕組みは どれもだいたい同じ 2011/11/26 5
  • 7. サイバー系 いつもの それぞれに 一長一短が あります!! とよく言われる。 2011/11/26 6
  • 8. サイバー系 なんだろう? 一長一短っ て具体的に 何よ? 2011/11/26 7
  • 9. サイバー系 一番いいのは で、結局何 が一番いい の? 2011/11/26 8
  • 10. サイバー系 悩み無用 といった悩みを 今日は解消して 帰って下さい 2011/11/26 9
  • 11. サイバー系 作者とか  ff  trueclusterって会社の中の人  GPL2ライセンス  Version 4.2.11  Bigmemory  Michael J. Kane and John W. Emerson  LGPL3ライセンス  Version 2.2.3  RevoScaleR  Revolution Analytics社 2011/11/26現在  ライセンス購入 年1,000$/人  Version 2.0.0 2011/11/26 10
  • 12. サイバー系 インストール  ff Install.packages(“ff”) #簡単  bigmemory Install.packages(“bigmemory”) #簡単  RevoScaleR Revolution Analytics社からRevolutionR Enterpriseを購入 しインストーラ(.exeとか.py)でインストール #社内手続きとかも必要だしちょっと面倒 2011/11/26 11
  • 13. サイバー系 まずは使ってみる  ff ff.obj <- ff(1:10, filename=“ff.01”) #ベクトル ff.obj2 <- ff(1:10000, vmode="integer", dim=c(1000, 10)) #マトリックス この例だとたまたま ffdf.obj <- ffdf(ff.obj,ff.obj) 全部integer型ですね #ffdf関数でデータフレームも可能  bigmemory big.obj <- big.matrix(5,2, type=“integer”, init=1) #マトリックス  RevoScaleR my.data <- data.frame(x=1:100, y=100:1) revo.obj <- rxDataFrameToXdf(my.data) #データフレーム それぞれ使えるクラスが違う! 2011/11/26 12
  • 14. サイバー系 csvファイルの読み込み(きっとよく使う) 入力ファイル名  ff (ffdf) 出力ファイル名 air.ff <- read.csv.ffdf(file="AirlineDataAll.csv", header=TRUE, asffdf_args=list(ff_args=list(filename="air.ff")), colClasses=c(Year="integer", Month="integer", DayofMonth="integer“, DayOfWeek="integer", DepTime="integer", CRSDepTime="integer", UniqueCarrier="factor", FlightNum="integer", TailNum="factor", ActualElapsedTime="integer", CRSElapsedTime="integer", AirTime="integer", 各カラムの型を ArrDelay="integer", DepDelay="integer", 丁寧に指定する のが安全 Origin="factor", Dest="factor", Distance="integer", TaxiIn="integer", *本来なら型は自動推定 TaxiOut="integer", Cancelled="integer", してくれるのだが CancellationCode="factor", Diverted="integer", AirlineDataAllはダメ。 最初の数千行ぐらいで CarrierDelay="integer", WeatherDelay="integer", 型推定していて、その型 が外れだとインポート途中 NASDelay="integer", SecurityDelay="integer", でエラーとなる。 LateAircraftDelay="integer" )) 2011/11/26 13
  • 15. サイバー系 csvファイルの読み込み(きっとよく使う)・続き 入力ファイル名 ; これを指定しないと共有メモリ上に データを生成しちゃって大変なことになる  bigmemory air.big <- read.big.matrix(“airline.csv”,header=TRUE,type="integer", backingfile="air.bm“,descriptorfile=“air.bm.desc”) 出力ファイル名  RevoScaleR air.rx <- rxImport(inData="AirlineDataAll.csv",outFile="air.xdf") 入力ファイル名 出力ファイル名 *RevoScaleRもffと同様に 型は自動推定してくれる。 FfdfでミスるAirlineDataAllは RevoScaleRだと大丈夫だった。 2011/11/26 14
  • 16. サイバー系 使用可能な型  ff  boolean, logical, quad, nibble, byte, ubyte, short, ushort, integer, single,double,raw, factor, ordered, Date, POSIXct かなり豊富。 やる気がみなぎる  bigmemory  integer, char, short 少ない。基本数値だけと思っててよい  RevoScaleR  …. 豊富。というかたぶん全部の型いける。(未確認生命体) *なお、前ページのbigmemory用に読み込んだファイル「airline.csv」は もとの「AirlineDataAll.csv」を数値データに変換したファイルです。 2011/11/26 15
  • 17. サイバー系 ローカルディスク上のデータについて  ff air.ff <- read.csv.ffdf(file="AirlineDataAll.csv", header=TRUE, asffdf_args=list(ff_args=list(filename="air.ff")), #air.ffというファイルが生成されるがこれは瞞し。実体はテンポラリフォルダ内 に大量に生成される  bigmemory air.big <- read.big.matrix(“airline.csv”,header=TRUE,type="integer", backingfile="air.bm“,descriptorfile=“air.bm.desc”) #巨大なair.bmがデータの実体。air.db.descというテキストファイルにデータの実 体だとかカラム数、行数だとかが記載されている  RevoScaleR air.rx <- rxImport(inData="AirlineDataAll.csv",outFile="air.xdf") #巨大なair.xdfファイルがデータの実体 2011/11/26 16
  • 18. サイバー系 データの主力と再ロードについて  ff  filenameオプションで指定した場合はそれ。  Filenameオプションで指定しなかった場合は ffsave(air.ffdf, file=“air.ff”) #↑みたいにして出力しておくとair.ff.ffDataが生成される ffload(“air.ff”)#再ロード時は拡張子.ffDataはつけない  bigmemory  backingfileオプションで指定したファイルと同時に生成される.desc ファイルも大事 air.big <- attach.big.matrix(“air.desc”) #再ロード時はdescファイルを指定する  RevoScaleR  xdfファイルそのもの(特に気にかけておくことはない)  全ての専用関数、xdfファイルを指定する引数がある 2011/11/26 17
  • 19. サイバー系 airlineデータの読み込みをしてみて ただしテンポラリフォルダに生成される実体は 29ファイルで合計13,666MB だった パッケージ 速度 生成データのサイズ メモリ使用量 ff 1337.356 1,371,623,837 ほぼ使用しない bigmemory 1092.221 14,330,056,404 結構使う RevoScaleR 1400.354 16,802,423,891 ほぼ使用しない csvファイルからの読み込みでは速度的に絶望的に遅いものは無し。 生成されるデータのサイズも絶望的に大きすぎるものは無し。 ただし、bigmemoryはメモリを結構使う。一旦、共有メモリ上にデータを 置いてからファイルに書き出してる感じもする。なので、搭載メモリが 少ないマシンだとcsvファイルからの読み込みが絶望的に遅くなった。 2011/11/26 18
  • 20. サイバー系 minとかmaxとか基本的な関数  ff  dim(air.ff), colnames(air.ff),min(air.ff[,1]), max(air.ff[,1]), table(air.ff[,1]), sum(as.numeric(air.ff[,1])), head(air.ff)とか結構 使える  bigmemory  dim(air.big), colnames(air.big),min(air.big[,1]), max(air.big[,1]), table(air.big[,1]), sum(as.numeric(air.big[,1])), head(air.big)とか 結構使える  RevoScaleR  皆さんの知っている関数は全て使えません。  dim, colnames, min, max, headあたりはrxGetInfo関数を使う rxGetInfo(air.xdf, getVarInfo=TRUE, numRows=5)  tableはrxTable関数、sumはわかんね 2011/11/26 19
  • 21. サイバー系 とはいえ  ffで、できないことも多々ある  データフレームを入力としたモデル式つかうやつ全般は全滅 randomForest(delay~., data=air.ff) glm(delay ~., data=air.ff, family=“binomial(logit)”) svm(delay ~,. data=air.ff) #結構痛い...  apply関数族はapplyのみ  期待していたplyr::ddplyも使えなかった  例外的にffapply関数はあるので、行もしくは列単位で一気に 計算ってのはたぶんできる  bigmemory, RevoScaleRでは..  モデル式全滅  glm, k-meansはそれぞれ専用関数が実装されているため使える  bigmemoryはbiganalytics::applyが実装されている  RevoScaleRはバージョンアップのたびに新しい関数が実装されてい く印象あり 2011/11/26 20
  • 22. サイバー系 他の関数を一応列挙  ff (ffbaseパッケージ)  all.ff, any.ff, unique.ff,ffsort, ffapply...  bigmemory (biganalyticsパッケージ&bigtabulateパッケージ)  bigtable, bigsummary, bigkmeans, biglm, colsd, colvar...  RevoScaleR  rxImport, rxSort, rxMerge, rxChiSquaredTest, rxFisherTest, rxKendallCor, rxPairwiseCrossTab, rxOddsRatio, rxLinMod, rxLogit, rxPredict, rxKmeans, rxHistogram, rxLinePlot ... 2011/11/26 21
  • 23. サイバー系 まとめ ff、かわいいよff  ffの良い点  integer, factor, double等々、いろんな型を使える  ffdfでデータフレーム使える  minとかmaxとかtableとか、普段使ってる関数がそのまま使える  ↑のはもしかしたらメモリ的にアウトな場合があるかもしれないがそんなとき なffbaseパッケージを使えばいいかも  bigmemoryのダメな点  実はcsvファイルから読み込む時の(共有)メモリ使用量パねぇ  matrixしか使えない  integer, short, charの型しか使えない  RevoScaleRのダメな点  有償ライセンス  関数が全て専用のもの、しかもちょっとクセがあって使いづらい  しかもドキュメントがわかりづらい  ffの劣る点  glm, k-meansが使えない  ベクトルのサイズは2^31-1が上限(bigmemoryは2^52, RevoScaleRは不明)  データの再ロードに時間がかかる。(圧縮ファイルを解凍している感じ) 2011/11/26 22
  • 24. サイバー系 最後に  Use R! 2011ではbigmemoryに関する発表もffに関する発表もあ りませんでした。  ffは2007年から毎年あったのに…  RevoScaleR (Revolution R Enterprise)に関する発表はありま した。  メモリの価格が下がってきたこともあり、数十ギガ程度のデー タならオンメモリで処理しちゃう傾向にあるのかも 2011/11/26 23