Bigmemoryプロジェクト

Rで学ぶスケーラブルなデータ処理

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory は、コンピュータのRAMを超えるような大規模な行列を格納・操作・処理するために使用されます

Rで学ぶスケーラブルなデータ処理

big.matrix

  • 作成
  • 取得
  • サブセット
  • 集計
Rで学ぶスケーラブルなデータ処理

「アウト・オブ・コア」とは?

  • RオブジェクトはRAMに保持されます

  • RAMが不足すると

    • データがディスクに移動されます
    • プログラムは低速で動作するか、クラッシュします

処理に必要なときだけデータをRAMに読み込む方が効率的です。

Rで学ぶスケーラブルなデータ処理

big.matrixを使うべき場面

  • RAMの20%以下のサイズ
  • 密行列
Rで学ぶスケーラブルなデータ処理

bigmemoryの概要

  • bigmemoryは big.matrix データ型を実装しており、ディスク上の行列の作成・格納・アクセス・操作に使用されます

  • データはディスクに保持され、必要に応じて暗黙的にRAMへ転送されます

Rで学ぶスケーラブルなデータ処理

bigmemoryの概要

big.matrix オブジェクト:

  • インポートは1回のみ
  • 「バッキング」ファイル
  • 「ディスクリプタ」ファイル
Rで学ぶスケーラブルなデータ処理

bigmemoryの使用例

library(bigmemory)

# Create a new big.matrix object x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
Rで学ぶスケーラブルなデータ処理

バッキングファイルとディスクリプタファイル

  • バッキングファイル:ディスク上の行列のバイナリ表現
  • ディスクリプタファイル:行数・列数・名前などのメタデータを保持
Rで学ぶスケーラブルなデータ処理

bigmemoryの使用例

# See what's in it
 x[,]
  0    0    0
x
An object of class "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
Rで学ぶスケーラブルなデータ処理

行列との類似点

# Change the value in the first row and column
x[1, 1] <- 3
# Verify the change has been made
x[,]
   3    0    0
Rで学ぶスケーラブルなデータ処理

練習しましょう!

Rで学ぶスケーラブルなデータ処理

Preparing Video For Download...