SlideShare ist ein Scribd-Unternehmen logo
1 von 24
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

Weitere ähnliche Inhalte

Was ist angesagt?

ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門増田 亨
 
Prophet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツールProphet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツールhoxo_m
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2nd非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2ndMika Yoshimura
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーTakashi Yamane
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)itoyan110
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数daiki hojo
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
Wilson score intervalを使った信頼区間の応用
Wilson score intervalを使った信頼区間の応用Wilson score intervalを使った信頼区間の応用
Wilson score intervalを使った信頼区間の応用智文 中野
 
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?jundoll
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心takehikoihayashi
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
[DL輪読会]Deep Learning 第4章 数値計算
[DL輪読会]Deep Learning 第4章 数値計算[DL輪読会]Deep Learning 第4章 数値計算
[DL輪読会]Deep Learning 第4章 数値計算Deep Learning JP
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMCKenta Oono
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話Classi.corp
 

Was ist angesagt? (20)

BERT入門
BERT入門BERT入門
BERT入門
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
Prophet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツールProphet入門【R編】Facebookの時系列予測ツール
Prophet入門【R編】Facebookの時系列予測ツール
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2nd非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2nd
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ーDiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
DiagrammeRと仲良くなった話ーグラフィカルモデルのためのDiagrammeR速習ー
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
Wilson score intervalを使った信頼区間の応用
Wilson score intervalを使った信頼区間の応用Wilson score intervalを使った信頼区間の応用
Wilson score intervalを使った信頼区間の応用
 
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
[DL輪読会]Deep Learning 第4章 数値計算
[DL輪読会]Deep Learning 第4章 数値計算[DL輪読会]Deep Learning 第4章 数値計算
[DL輪読会]Deep Learning 第4章 数値計算
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMC
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
 

Andere mochten auch

ICLR読み会 奥村純 20170617
ICLR読み会 奥村純 20170617ICLR読み会 奥村純 20170617
ICLR読み会 奥村純 20170617Jun Okumura
 
[ICLR2017読み会 @ DeNA] ICLR2017紹介
[ICLR2017読み会 @ DeNA] ICLR2017紹介[ICLR2017読み会 @ DeNA] ICLR2017紹介
[ICLR2017読み会 @ DeNA] ICLR2017紹介Takeru Miyato
 
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-
言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-Takahiro Kubo
 
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @Dena
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @DenaICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @Dena
ICLR2017読み会 Data Noising as Smoothing in Neural Network Language Models @DenaTakanori Nakai
 
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会
Semi-Supervised Classification with Graph Convolutional Networks @ICLR2017読み会Eiji Sekiya
 

Andere mochten auch (8)

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

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

イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
From Java To Clojure
From Java To ClojureFrom Java To Clojure
From Java To ClojureKent Ohashi
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Nextdynamis
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京Oracle Cloud Developers Meetup@東京
Oracle Cloud Developers Meetup@東京tuchimur
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Nextdynamis
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returnsdynamis
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentialstnoda
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
おもにEXcelだけで出来る自動化技術
おもにEXcelだけで出来る自動化技術おもにEXcelだけで出来る自動化技術
おもにEXcelだけで出来る自動化技術Takanobu Mizuta
 
JavaScript (ECMAScript) 2013
JavaScript (ECMAScript) 2013JavaScript (ECMAScript) 2013
JavaScript (ECMAScript) 2013dynamis
 
Solaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFSSolaris 11 に見る、次世代ファイルシステムZFS
Solaris 11 に見る、次世代ファイルシステムZFSSolarisJP
 
第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)第2回品川Redmine勉強会(日本語全文検索)
第2回品川Redmine勉強会(日本語全文検索)Masanori Machii
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 

Ähnlich wie RのffとbigmemoryとRevoScaleRとを比較してみた (20)

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

Mehr von Kazuya Wada

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

Mehr von Kazuya Wada (15)

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

Kürzlich hochgeladen

【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイントshu1108hina1020
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 

Kürzlich hochgeladen (20)

【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 

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