Enviar pesquisa
Carregar
data.tableパッケージで大規模データをサクッと処理する
•
35 gostaram
•
18,343 visualizações
S
Shintaro Fukushima
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 27
Baixar agora
Baixar para ler offline
Recomendados
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
Masashi Komori
Rで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Satoshi Kato
R高速化
R高速化
Monta Yashi
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
宏喜 佐野
Recomendados
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
Masashi Komori
Rで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Satoshi Kato
R高速化
R高速化
Monta Yashi
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
宏喜 佐野
ベイズファクターとモデル選択
ベイズファクターとモデル選択
kazutantan
GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論
Koichiro Gibo
Rの高速化
Rの高速化
弘毅 露崎
スペクトラル・クラスタリング
スペクトラル・クラスタリング
Akira Miyazawa
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
koba cky
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
takehikoihayashi
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
nocchi_airport
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
Daisuke Yoneoka
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
horihorio
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
Yohei Sato
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
Classi.corp
Tokyo r #37 Rubin's Rule
Tokyo r #37 Rubin's Rule
Hiroki Matsui
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
Naoki Hayashi
Rで実験計画法 後編
Rで実験計画法 後編
itoyan110
劣微分
劣微分
ShintaUrakami
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
Toshihiro Kamishima
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
Ken'ichi Matsui
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
Haruka Ozaki
VLDB2013 Session 1 Emerging Hardware
VLDB2013 Session 1 Emerging Hardware
Takuma Wakamori
Mais conteúdo relacionado
Mais procurados
ベイズファクターとモデル選択
ベイズファクターとモデル選択
kazutantan
GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論
Koichiro Gibo
Rの高速化
Rの高速化
弘毅 露崎
スペクトラル・クラスタリング
スペクトラル・クラスタリング
Akira Miyazawa
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
koba cky
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
takehikoihayashi
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
nocchi_airport
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
Daisuke Yoneoka
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
horihorio
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
Nagi Teramo
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
__nakamichi__
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
Yohei Sato
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
Classi.corp
Tokyo r #37 Rubin's Rule
Tokyo r #37 Rubin's Rule
Hiroki Matsui
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
Naoki Hayashi
Rで実験計画法 後編
Rで実験計画法 後編
itoyan110
劣微分
劣微分
ShintaUrakami
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
Toshihiro Kamishima
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
Ken'ichi Matsui
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
hagino 3000
Mais procurados
(20)
ベイズファクターとモデル選択
ベイズファクターとモデル選択
GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論
Rの高速化
Rの高速化
スペクトラル・クラスタリング
スペクトラル・クラスタリング
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
マルコフ連鎖モンテカルロ法入門-1
マルコフ連鎖モンテカルロ法入門-1
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
Tokyo r #37 Rubin's Rule
Tokyo r #37 Rubin's Rule
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
Rで実験計画法 後編
Rで実験計画法 後編
劣微分
劣微分
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
Destaque
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
Haruka Ozaki
VLDB2013 Session 1 Emerging Hardware
VLDB2013 Session 1 Emerging Hardware
Takuma Wakamori
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2015 Research 3: Distributed Storage and Processing
Takuma Wakamori
ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
Takuma Wakamori
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
Keiichiro Ono
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
MrUnadon
Rデータフレーム自由自在
Rデータフレーム自由自在
Takeshi Arabiki
RではじめるTwitter解析
RではじめるTwitter解析
Takeshi Arabiki
Destaque
(8)
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
VLDB2013 Session 1 Emerging Hardware
VLDB2013 Session 1 Emerging Hardware
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
Rデータフレーム自由自在
Rデータフレーム自由自在
RではじめるTwitter解析
RではじめるTwitter解析
Mais de Shintaro Fukushima
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
Shintaro Fukushima
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Shintaro Fukushima
Materials Informatics and Python
Materials Informatics and Python
Shintaro Fukushima
BPstudy sklearn 20180925
BPstudy sklearn 20180925
Shintaro Fukushima
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Shintaro Fukushima
Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Shintaro Fukushima
Juliaで並列計算
Juliaで並列計算
Shintaro Fukushima
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
Shintaro Fukushima
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
Shintaro Fukushima
R3.0.0 is relased
R3.0.0 is relased
Shintaro Fukushima
外れ値
外れ値
Shintaro Fukushima
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
Shintaro Fukushima
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Shintaro Fukushima
Rで学ぶロバスト推定
Rで学ぶロバスト推定
Shintaro Fukushima
Mais de Shintaro Fukushima
(20)
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Materials Informatics and Python
Materials Informatics and Python
BPstudy sklearn 20180925
BPstudy sklearn 20180925
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Rユーザのためのspark入門
Rユーザのためのspark入門
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Juliaで並列計算
Juliaで並列計算
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
R3.0.0 is relased
R3.0.0 is relased
外れ値
外れ値
Rでreproducible research
Rでreproducible research
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
不均衡データのクラス分類
不均衡データのクラス分類
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Rで学ぶロバスト推定
Rで学ぶロバスト推定
data.tableパッケージで大規模データをサクッと処理する
1.
data.tableパッケージで ⼤規模データをサクッと処理する 2013年11⽉9⽇ 第35回Tokyo.R @sfchaos
2.
⾃⼰紹介 � TwitterID:@sfchaos � お仕事:データマイニング 1
3.
1. イントロダクション 2
4.
データフレームは, Rの最重要なデータ構造の⼀つ データフレームとは, Excelのワークシートのような ⾏列形式のデータ構造 3
5.
例えば, いつもよく出てくるirisデータセット > head(iris) Sepal.Length Sepal.Width
Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa アヤメの茎の⻑さ・幅と種類に関するデータ 4
6.
reshape2パッケージ, plyrパッケージなどを⽤いることにより, ピボットテーブルなどの柔軟な処理も可能 5
7.
天下のExcel様も gkbrのデータフレーム!! with data.frame 6
8.
そんなデータフレームも, 結構処理が遅いことがある > # データの読み込み >
system.time(usc.df <read.csv("../data/USCensus1990.data.txt")) ユーザ システム 経過 65.588 3.152 68.868 ⽶国の1990年の国勢調査データ 出典:US Census(1990) Data Set http://archive.ics.uci.edu/ml/datasets/US +Census+Data+%281990%29 7
9.
こんなとき,data.tableパッケージが 役⽴つかもしれない > library(data.table) data.table 1.8.10
For help type: help("data.table") > system.time(usc.dt <fread("../data/USCensus1990.data.txt")) ユーザ システム 経過 3.244 0.040 3.300 出典:http://cran.r-project.org/web/packages/data.table/index.html 8
10.
data.tableパッケージを⽤いることにより, 以下のような処理を⾼速に実現 � � � � データの読み込み 条件に合致した要素の抽出 層別の集計 テーブルのジョイン 等 9
11.
2. data.tableパッケージひとめぐり 10
12.
データ分析の流れ 外部からデータを 読み込むケース データ データの ⼊⼒ データ 加⼯・集計 マイニング 結果の 出⼒ 結果 データの ⽣成 データを⽣成するケース data.tableパッケージの 守備範囲 11
13.
各⼯程の処理例とdata.tableの関数 ⼯程 データの⼊⼒・変換 処理 データの読み込み data.tableの関数 �fread 通常のRの関数 �read.csv/read.table �scan 等 データフレームからのデータ 変換 データの加⼯・集計 �data.table キーの付加 �setkey -- グループ化の処理 �添字表記[[]], by引数 -- テーブルのジョイン �merge �merge 複数のリストの結合 �rbindlst �do.call("rbind",
リスト) -- �do.call("cbind", リスト) 部分集合の取り出し �subset �subset ⾏の重複のチェック �duplicated �duplicated ※data.tableパッケージについては, 他にも様々な関数がある 12
14.
データの⼊⼒ � データ読み込み(fread関数を使⽤) > library(data.table) data.table
1.8.10 For help type: help("data.table") > system.time(usc.dt <fread("../data/USCensus1990.data.txt")) ユーザ システム 経過 3.244 0.040 3.300 13
15.
データの⼊⼒ � ⽐較)データ読み込み(通常のread.csv関数) > #
データの読み込み > system.time(usc.df <read.csv("../data/USCensus1990.data.txt")) ユーザ システム 経過 65.588 3.152 68.868 fread関数を⽤いることで20倍以上の⾼速化 14
16.
データの⼊⼒ � 読み込んだデータテーブルの確認(⾏頭・⾏末) > head(usc.dt) caseid
dAge dAncstry1 dAncstry2 iAvail iCitizen iClass dDepart ... 1: 10000 5 0 1 0 0 5 3 ... 2: 10001 6 1 1 0 0 7 5 ... 3: 10002 3 1 2 0 0 7 4 ... 4: 10003 4 1 2 0 0 1 3 ... 5: 10004 7 1 1 0 0 0 0 ... 6: 10005 1 1 2 0 0 0 0 ... > tail(usc.dt) caseid dAge dAncstry1 dAncstry2 iAvail iCitizen iClass dDepart ... 1: 2468279 3 3 1 0 0 1 5 ... 2: 2468280 7 1 2 0 0 0 0 ... 3: 2468281 1 1 2 0 0 0 0 ... 4: 2468282 3 3 1 0 0 1 2 ... 5: 2468283 6 0 1 0 0 1 3 ... 6: 2468284 2 3 1 0 4 0 0 ... 15
17.
データの⼊⼒ � 読み込んだデータテーブルの確認(サイズ,表頭・表側) > dim(usc.dt) [1]
2458285 69 > dimnames(usc.dt) [[1]] NULL [[2]] [1] "caseid" [7] "iClass" [13] "iFertil" [19] "dIncome2" [25] "dIncome8" [31] "iMay75880" [37] "iOthrserv" [43] "dRearning" [49] "iRownchld" [55] "iSchool" [61] "dTravtime" [67] "iYearsch" "dAge" "dDepart" "dHispanic" "dIncome3" "dIndustry" "iMeans" "iPerscare" "iRelat1" "dRpincome" "iSept80" "iVietnam" "iYearwrk" 表側はつかない "dAncstry1" "iDisabl1" "dHour89" "dIncome4" "iKorean" "iMilitary" "dPOB" "iRelat2" "iRPOB" "iSex" "dWeek89" "dYrsserv" "dAncstry2" "iDisabl2" "dHours" "dIncome5" "iLang1" "iMobility" "dPoverty" "iRemplpar" "iRrelchld" "iSubfam1" "iWork89" "iAvail" "iEnglish" "iImmigr" "dIncome6" "iLooking" "iMobillim" "dPwgt1" "iRiders" "iRspouse" "iSubfam2" "iWorklwk" "iCitizen" "iFeb55" "dIncome1" "dIncome7" "iMarital" "dOccup" "iRagechld" "iRlabor" "iRvetserv" "iTmpabsnt" "iWWII" 16
18.
データの⼊⼒ � メモリ上に⽣成されたデータテーブルのリストの確認 オブジェクト名 > tables() NAME NROW
MB [1,] usc.dt 2,458,285 648 ⾏数 COLS [1,] caseid,dAge,dAncstry1,dAncstry2,iAvail,iCitizen,iClass, dDepart,iDisabl1,iDisabl2 KEY [1,] 表側(の⼀部) Total: 648MB 17
19.
データの変換 � データフレームからデータテーブルへの変換(data.table関数) > system.time(usc.dt
<- data.table(usc.df)) ユーザ システム 経過 1.180 1.072 2.255 18
20.
データ加⼯・集計 � キーの付加(setkey関数) # キーの付加(dAge,
dIncome1 をキーにする) setkey(usc.dt, dAge, dIncome1) # オブジェクトのリストの中にもキーが表⽰されている tables() NAME NROW MB [1,] usc.dt 2,458,285 648 COLS [1,] caseid,dAge,dAncstry1,dAncstry2,iAvail,iCitizen,iClass, dDepart,iDisabl1,iDisabl2 KEY キーが付加された [1,] dAge,dIncome1 Total: 648MB > > > > 19
21.
データ加⼯・集計 � バイナリサーチを⽤いた⾼速な要素抽出 > #
2つのキーの値によりデータの要素へのアクセスが可能 > system.time(x <- usc.dt[1, 1]) ユーザ システム 経過 0.000 0.000 0.001 dAge=1 かつ dIncome1=1の ⾏の取得 > # ⽐較: 通常のデータフレームを⽤いた場合 > system.time(y <- usc.df[usc.df$dAge==1 & usc.df$dIncome1==1, ]) ユーザ システム 経過 1.536 0.096 1.637 20
22.
データ加⼯・集計 � グループ化処理による集計 > #
キーの値ごとの層別集計 > system.time(x <- usc.dt[, sum(dIncome1), by=dAge]) ユーザ システム 経過 0.032 0.000 0.033 > x 第2引数には集計処理を, dAge V1 by引数には集計軸を指定 1: 0 0 2: 1 0 3: 2 89043 4: 3 462080 5: 4 638323 6: 5 525549 7: 6 415373 8: 7 74411 21
23.
データ加⼯・集計 � グループ化処理による集計 > #
⽐較: 通常のデータフレームを⽤いた場合 > system.time(y <- tapply(usc.df$dIncome1, usc.df$dAge, sum)) ユーザ システム 経過 1.580 0.004 1.584 > y 0 1 2 3 4 5 6 7 0 0 89043 462080 638323 525549 415373 74411 22
24.
その他の機能 � テーブルの⾼速ジョイン(merge関数) � テーブルの要素の抽出(subset関数) �
リファレンスによるオブジェクトの要素の値変更 等 23
25.
3. まとめ 24
26.
� データフレームは,とても便利なRのデータ 構造だが,⼤規模データの読み込みや処 理が遅いことがある. � そんなときは,data.tableパッケージを⽤ いて,データの読み込み,集計,検索な どの⾼速化を検討すべし. 25
27.
� data.tableパッケージについては,R⾔語 上級ハンドブックにより詳しい説明がありま す. 26
Baixar agora