SlideShare une entreprise Scribd logo
1  sur  32
Rやってみた
〜高速化編〜
自己紹介
 約40年前 大阪に誕生
 約20年前 大学にてニューラルネットワーク&最適化
 約15年前 開発会社にて各種開発を5年くらい
 約10年前 現在(コンピュータ業界の)インフラ屋
 趣味
 3DCG
 プログラミング(主にAndroid)
 統計学はド素人、Rは素人
前回、Rを触ってみて結構面白かった
おやすみ
おはよう
個人的に
おっぱい
グラフからの推測
• 7時頃に起きる人が多い
• 0時頃に寝る人が多い
(寝る時間も時間に左右される)
→時計に縛られる日本人
・煩悩は夜に宿る ← new!
まじめにテーマを考える
 前回、前々回も出ていたモテモテのテーマ、それは…
高速化!
• 前半…“遅い”の詳細
• 後半…高速化
R業界の嫌われ者といえば「for」
 「forを使うな…」
 「forは遅い」
 「forは…」
どのページを見てもforの悪口だらけ
なぜ遅い?
エクセレントコード ウンコード
そもそもなぜfor文が遅いか?
 「ベクトルa」の平方根を「ベクトルb」に代入
OS
R
for(i in 1:10^6) b[i]<-sqrt(a[i])
関数
Rインタプリタ
OS
R
b<-sqrt(a)
関数
Rインタプリタ
ユーザ システム 経過
0.001 0.001 0.001
ユーザ システム 経過
16.440 7.205 23.681
という“推測”
推測を確認する
 Rでは処理時間の詳細(プロファイル)を調べる「Rprof()」を用いる
エクセレントコード ウンコード
> a <- c(1:10^7)
> Rprof()
> for( i in 1:1) b <- sqrt(a)
> Rprof(NULL)
> summaryRprof()
$by.total
total.time total.pct self.time self.pct
"sqrt" 0.18 100 0.18 100
> a <- c(1:10^5)
> b <- c()
> Rprof()
> for( i in 1:length(a)) b[i] <- sqrt(a[i])
> Rprof(NULL)
> summaryRprof()
$by.total
[1] total.time total.pct self.time self.pct
<0 行> (または長さ 0 の row.names)
R上では原因を観測できない
バグ?
→0.02秒間隔では検出不可(Rprof.out)
(ドつぼにはまっているが)
推測を「本腰入れて」確認する
 これ以上詳細を調査しようとすると
1. Rから詳細なログを出力して動きを追う
2. Rより下のレイヤから動きを追う
Instruments(プロファイルツール)
想像を本腰入れて確認する
〜エクセレントコード〜
a <- c(1:10^7)
for( i in 1:1) b <- sqrt(a)
ポイントは、平方根を取る目的の処理が
84%(262ms)の時間を使っているところ
 arithmetic.c
想像を本腰入れて確認する
do_math1の正体
SEXP attribute_hidden do_math1(SEXP call, SEXP op, SEXP args, SEXP env)
{
SEXP s;
checkArity(op, args);
check1arg(args, call, "x");
if (DispatchGroup("Math", call, op, args, env, &s))
return s;
if (isComplex(CAR(args)))
return complex_math1(call, op, args, env);
#define MATH1(x) math1(CAR(args), x, call);
switch (PRIMVAL(op)) {
case 1: return MATH1(floor);
case 2: return MATH1(ceil);
case 3: return MATH1(sqrt);
case 4: return MATH1(sign);
math関数呼び出し
/* Mathematical Functions of One Argument */
static SEXP math1(SEXP sa, double(*f)(double), SEXP lcall)
{
SEXP sy;
double *y, *a;
R_xlen_t i, n;
int naflag;
if (!isNumeric(sa))
errorcall(lcall, R_MSG_NONNUM_MATH);
n = xlength(sa);
/* coercion can lose the object bit */
PROTECT(sa = coerceVector(sa, REALSXP));
PROTECT(sy = allocVector(REALSXP, n));
a = REAL(sa);
y = REAL(sy);
naflag = 0;
for (i = 0; i < n; i++) {
if (ISNAN(a[i]))
y[i] = a[i];
else {
y[i] = f(a[i]);
if (ISNAN(y[i])) naflag = 1;
}
}
ここでSQRT処理
想像を本腰入れて確認する
〜ウンコード〜(2時間でギブアップ)
a <- c(1:10^7)
b <- c()
for( i in 1:10^7) b[i] <- sqrt(a[i])
このVectorAssignが99%の時間
を食っている
平方根を取る処理が
0.1%未満!
想像を本腰入れて確認する
〜ウンコード〜
a <- c(1:10^7)
b <- numeric(10^7)
for( i in 1:10^7) b[i] <- sqrt(a[i])
7,321,955ms(以上)から
31,276msへ改善!
事前に領域確保
平方根を取る目的の処理が
3,886ms(以上) から 2,159msに改善
for文は遅いのまとめ
 For文で処理をまわすなら迷わず領域を事前確保するべき
(2時間以上 → 30秒)
 領域を事前準備した場合
全体では約100倍の差
メインの処理(sqrt)の時間は約8倍の差
→内部の処理が時間差のほとんどを占める
全体(ms) math1 その他 備考
エクセレントコード 305 262 48
ウンコード 31,276 2,159 29,117 10^7回ループ
10^7回のループで
10^2の処理時間
は許容範囲
ここから
今回のメインテーマ
ベクトル化できない場合
そんなときは…
 アルゴリズム、プログラムの工夫
 並列化(複数スレッドを使用する)
 並列化(複数マシンを使用する)
 GPU並列化 変態向け
賢い人向け
玄人向け
マニア向け
色々ありそうなのでパス
対応関数が少ない
並列化(環境と動作イメージ)
 今回は4ノードを準備
Switch
ssh
① ノードでRを起動する。
② クラスタノードを指定する。
③ 並列化処理を実行
R
R
R
R
R
R
R
R
R
R
R
R
R
R R
R
④ 各ノードで指定された数だけRプ
ロセスを起動して処理
⑤ 結果を元のRに集約
・Xeon(R) CPU E31220
(4コア、3.10GHz)
・メモリ 16GB
並列化(Rでの書式)
① ノードでRを起動する。
② クラスタノードを指定する。
③ 並列化処理を実行
④ 各ノードで指定された数だけR
プロセスを起動して処理
⑤ 結果を元のRに集約
① ターミナルにて「r」を実行
② cl <- makeCluster(c(“サーバ名”,〜略〜), type = “SOCK”)
registerDoSNOW(cl)
③ foreach(i = 1:1000) %dopar% { sum(rnorm(10000)) }
④ ※ライブラリがやります
⑤ ※ライブラリがやります
並列化(使用するパッケージ)
以下のパッケージを使うことで別ノードを使用した並列化を容易に実
現
(すべてのノードにパッケージを事前にインストール)
 snow ・・・ Simple Network of Workstations
 foreach ・・・ for文を並列化する
 Iterators ・・・ 展開
 doSNOW ・・・ snowの簡易化(registerDoSNOW関数のみ)
単一ノード(スレッド)と複数ノードを
同じ様に扱うことができる
並列化評価
気になる2つのポイント
 並列化は本当に早くなるの?
 ネットワークはボトルネックにな
らないの?
Switch
ssh
R
R
R
R
R
R
R
R
R
R
R
R
R
R R
R
ボトル
ネック?
転送データ 小/大
処理時間 短/長
並列化(転送データ 小、処理時間 短)
 乱数ベクトルの合計を求める
system.time(for( i in 1:10^3 ) sum(rnorm(10^5)))
ユーザ システム 経過
8.486 0.000 8.483
単一プロセス
cl <- makeCluster(c("localhost”…), type = "SOCK")
registerDoSNOW(cl)
system.time(
foreach(i = 1:10^3) %dopar%{
sum(rnorm(10^5)) })
stopCluster(cl)
並列化
0
2
4
6
8
10
12
14
16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
時間(秒)
並列度
並列度と処理時間(5回平均)
処理時間
7.1倍の高速化!
並列化(転送データ 小、処理時間 長)
 乱数ベクトルの合計を求める
system.time(for( i in 1:10^2 ) sum(rnorm(10^7)))
ユーザ システム 経過
84.372 0.576 85.008
単一プロセス
cl <- makeCluster(c("localhost”…), type = "SOCK")
registerDoSNOW(cl)
system.time(
foreach(i = 1:10^2) %dopar%{
sum(rnorm(10^7)) })
stopCluster(cl)
並列化
10^3から
変更
10^5から
変更
約10倍
0
10
20
30
40
50
60
70
80
90
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
時間(秒)
並列度
並列度と処理時間(5回平均)
処理時間
13.2倍の高速化!
「転送データ 大」の準備
 大きなデータの代表、画像データを処理しよう!
画像処理業界でおなじみ
の「Lena」たん
自主規制
(続きはWebで!)
Width:1084
Height:2318
Rで画像処理ってどういうこと?
 色を減らす「減色処理」に使える。
クラスター分析じゃない?RGB空間を色の数で分割
元画像 減色画像
並列化(転送データ 大、処理時間 短)
対象:LENAフル画像
処理:ランダムな点を返す
自主規制!
Width:1084
Height:2318
system.time(for(i in 1:10^3)
myimage[floor(runif(1,1,MAX_VALUE))])
ユーザ システム 経過
0.02 0.00 0.03
単一プロセス
cl <- makeCluster(c("localhost”…), type = "SOCK")
registerDoSNOW(cl)
system.time(
foreach(i = 1:num,.export=c(“myimage”,“MAX_VALUE”))
%dopar% myimage[floor(runif(1,1,MAX_VALUE))])
stopCluster(cl)
並列化
character vector of
variables to export.
0
2
4
6
8
10
12
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
時間(秒)
並列度
並列度と処理時間(5回平均)
処理時間
0
1000
2000
3000
4000
5000
6000
7000
8000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
時間(秒)
並列度
並列度と処理時間
処理時間
並列化(転送データ 大、処理時間 長)
対象:LENAフル画像
処理:k-meansで減色
自主規制!
Width:1084
Height:2318
for(i in 1:16)
kmeans(myimage2,centers=255,iter.max=10,nstart=i)
ユーザ システム 経過
0.02 0.00 2時間以上
単一プロセス
ret_better <- function(x,y) {
if (x$tot.withinss < y$tot.withinss) x
else y
}
res_kmean <- foreach(i =
1:16,.combine="ret_better") %dopar%{
kmeans(myimage2,centers=255,iter.max=50,nstart=i)
}
並列化
減色例
元画像(フルカラー) 画像アプリ減色(256色) R減色(256色)
注:時間は数十倍、数百倍かかっています
高速化検証のまとめ
 やっぱりベクトル化した処理が早い
 for文使うときは事前に領域を準備することにより高速化
(個人的な感覚としては、なるべくforはさけた方がよいレベル)
 繰り返し処理はforeachを用いた並列化を積極的におすすめ!
 マルチコアマシンで容易に並列化
 マルチノードでも容易に並列化
 大きなデータは遅くなる場合がある
→処理が長ければ許容できる
転送データ量
大 小
処
理
時
間
長 ◎ ◎
短 × ○ぜひ、並列化を!
付録
並列化(転送データ 小、処理時間 中)
 コラッツの問題(未解決問題)
以下を繰り返すとどんな
値も1に集約する
・偶数なら2で割る
・奇数なら3を掛け1を足す
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
時間(秒)
並列度
並列度と経過時間(5回平均)
経過時間
ちなみに、コラッツの問題のグラフ化
 X軸方向に初期値、Y軸方向に繰り返し回数
付録(コラッツの問題)
do_cluster <- function(num=10^4, client_num=1){
cl <- makeCluster(c("localhost","localhost",中略,"Slave03")[1:client_num], type = "SOCK")
registerDoSNOW(cl)
ret = system.time(foreach(i = 1:num,.combine = "cbind") %dopar% {
n <- i
while(n != 1){
if( n %% 2 == 0 ) n <- n / 2
else n <- 3 * n + 1
}
})
stopCluster(cl)
ret
}
rm(ret)
test_count <- 15
ret <- c()
for (i in 0:test_count) ret <- cbind(ret,do_cluster(num=10^3, client_num = (i%%16)+1))
付録(減色処理)
library("biOps”)
myimage <- readJpeg("l_hires.jpg")
myimage2 <- matrix(myimage,ncol=3)
HEIGHT <- dim(myimage)[1]
WIDTH <- dim(myimage)[2]
ret_better <- function(x,y) {
if (x$tot.withinss < y$tot.withinss) x
else y
}
registerDoSNOW(makeCluster(2, type = "SOCK"))
res_kmean <- foreach(i = 1:30,.combine="ret_better") %dopar%{
kmeans(myimage2,centers=255,iter.max=50,nstart=i)
}
plot(imagedata(c(res_kmean$centers[res_kmean$cluster,]),type="rgb",ncol=HEIGHT,nrow=
WIDTH))

Contenu connexe

Tendances

RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介Deep Learning JP
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析Mitsuo Shimohata
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章Hakky St
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)Takanori Ogata
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)Yoshitake Takebayashi
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Nagi Teramo
 
MLaPP 9章 「一般化線形モデルと指数型分布族」
MLaPP 9章 「一般化線形モデルと指数型分布族」MLaPP 9章 「一般化線形モデルと指数型分布族」
MLaPP 9章 「一般化線形モデルと指数型分布族」moterech
 
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~Satoshi Fujii
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会takehikoihayashi
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Takashi J OZAKI
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践Yasuyuki Okumura
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理Masatoshi Yoshida
 

Tendances (20)

機械学習と主成分分析
機械学習と主成分分析機械学習と主成分分析
機械学習と主成分分析
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章
 
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
 
MLaPP 9章 「一般化線形モデルと指数型分布族」
MLaPP 9章 「一般化線形モデルと指数型分布族」MLaPP 9章 「一般化線形モデルと指数型分布族」
MLaPP 9章 「一般化線形モデルと指数型分布族」
 
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~
Bioconductorも便利ですよ ~ConsensusClusterPlus(CCP)の紹介~
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~ Rで計量時系列分析~CRANパッケージ総ざらい~
Rで計量時系列分析~CRANパッケージ総ざらい~
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
潜在クラス分析
潜在クラス分析潜在クラス分析
潜在クラス分析
 
よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理
 

En vedette

RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたKazuya Wada
 
Rstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstallRstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstallAtsushi Hayakawa
 
経験過程
経験過程経験過程
経験過程hoxo_m
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなhoxo_m
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率hoxo_m
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜Takeshi Arabiki
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式hoxo_m
 
SparkRをつかってみた(Japan.R)
SparkRをつかってみた(Japan.R)SparkRをつかってみた(Japan.R)
SparkRをつかってみた(Japan.R)__john_smith__
 
Rで学ぶミニミニビッグデータ分析入門-第1回
Rで学ぶミニミニビッグデータ分析入門-第1回Rで学ぶミニミニビッグデータ分析入門-第1回
Rで学ぶミニミニビッグデータ分析入門-第1回Naruhiko Shiratori
 
Rをはじめからていねいに
RをはじめからていねいにRをはじめからていねいに
RをはじめからていねいにTsukasa Fukunaga
 
ベイズ統計学
ベイズ統計学ベイズ統計学
ベイズ統計学Monta Yashi
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前にKosei ABE
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装__nakamichi__
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)hoxo_m
 
関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフPaweł Rusin
 
統計的学習の基礎 4.4~
統計的学習の基礎 4.4~統計的学習の基礎 4.4~
統計的学習の基礎 4.4~Atsushi Hayakawa
 

En vedette (20)

RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
Rstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstallRstudio上でのパッケージインストールを便利にするaddin4githubinstall
Rstudio上でのパッケージインストールを便利にするaddin4githubinstall
 
経験過程
経験過程経験過程
経験過程
 
シンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るなシンギュラリティを知らずに機械学習を語るな
シンギュラリティを知らずに機械学習を語るな
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
5分でわかるベイズ確率
5分でわかるベイズ確率5分でわかるベイズ確率
5分でわかるベイズ確率
 
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
 
チェビシェフの不等式
チェビシェフの不等式チェビシェフの不等式
チェビシェフの不等式
 
SparkRをつかってみた(Japan.R)
SparkRをつかってみた(Japan.R)SparkRをつかってみた(Japan.R)
SparkRをつかってみた(Japan.R)
 
Rで学ぶミニミニビッグデータ分析入門-第1回
Rで学ぶミニミニビッグデータ分析入門-第1回Rで学ぶミニミニビッグデータ分析入門-第1回
Rで学ぶミニミニビッグデータ分析入門-第1回
 
Rcppのすすめ
RcppのすすめRcppのすすめ
Rcppのすすめ
 
R入門編
R入門編R入門編
R入門編
 
Rをはじめからていねいに
RをはじめからていねいにRをはじめからていねいに
Rをはじめからていねいに
 
ベイズ統計学
ベイズ統計学ベイズ統計学
ベイズ統計学
 
R を起動するその前に
R を起動するその前にR を起動するその前に
R を起動するその前に
 
R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装R6パッケージの紹介―機能と実装
R6パッケージの紹介―機能と実装
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)データの不備を統計的に見抜く (Gelman’s secret weapon)
データの不備を統計的に見抜く (Gelman’s secret weapon)
 
関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ
 
統計的学習の基礎 4.4~
統計的学習の基礎 4.4~統計的学習の基礎 4.4~
統計的学習の基礎 4.4~
 

Similaire à R高速化

openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001Teruaki Tsubokura
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸Takahiro Iwase
 
2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤aitc_jp
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書くmametter
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化Proktmr
 
Html5勉強会資料 2012821
Html5勉強会資料 2012821Html5勉強会資料 2012821
Html5勉強会資料 2012821Cohei Aoki
 
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみたSpanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみたtechgamecollege
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったCHY72
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部NVIDIA Japan
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!KAIKenzo
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016kyoto university
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#ta2c
 
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶYuta Kitagami
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナーTakahiro Iwase
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回Project Samurai
 
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10Muneyoshi Suzuki
 

Similaire à R高速化 (20)

openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書く
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化
 
Html5勉強会資料 2012821
Html5勉強会資料 2012821Html5勉強会資料 2012821
Html5勉強会資料 2012821
 
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみたSpanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
 
FM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作ったFM音源をいじれるWebサービスを作った
FM音源をいじれるWebサービスを作った
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai
 
20120721_ishkawa
20120721_ishkawa20120721_ishkawa
20120721_ishkawa
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#
 
MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針MVSR Schedulerを作るための指針
MVSR Schedulerを作るための指針
 
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
(Pythonで作って学ぶ) Youtube の動画リストを作るアプリの開発 
第2回
 
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
 

Plus de Monta Yashi

AIと最適化の違いをうっかり聞いてしまう前に v2
AIと最適化の違いをうっかり聞いてしまう前に v2AIと最適化の違いをうっかり聞いてしまう前に v2
AIと最適化の違いをうっかり聞いてしまう前に v2Monta Yashi
 
AIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にAIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にMonta Yashi
 
13 blender+αの大発表会
13 blender+αの大発表会13 blender+αの大発表会
13 blender+αの大発表会Monta Yashi
 
Blender x docker(簡単分散環境構築)
Blender x docker(簡単分散環境構築)Blender x docker(簡単分散環境構築)
Blender x docker(簡単分散環境構築)Monta Yashi
 
04 これが(多分)最後! ベンチマークs
04 これが(多分)最後! ベンチマークs04 これが(多分)最後! ベンチマークs
04 これが(多分)最後! ベンチマークsMonta Yashi
 
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料Monta Yashi
 
blenderとunreal engine4
blenderとunreal engine4blenderとunreal engine4
blenderとunreal engine4Monta Yashi
 
More photorealistic!
More photorealistic!More photorealistic!
More photorealistic!Monta Yashi
 
大人の分散レンダリング
大人の分散レンダリング大人の分散レンダリング
大人の分散レンダリングMonta Yashi
 
Rデータ入力編
Rデータ入力編Rデータ入力編
Rデータ入力編Monta Yashi
 

Plus de Monta Yashi (11)

AIと最適化の違いをうっかり聞いてしまう前に v2
AIと最適化の違いをうっかり聞いてしまう前に v2AIと最適化の違いをうっかり聞いてしまう前に v2
AIと最適化の違いをうっかり聞いてしまう前に v2
 
AIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前にAIと最適化の違いをうっかり聞いてしまう前に
AIと最適化の違いをうっかり聞いてしまう前に
 
Blender15
Blender15Blender15
Blender15
 
13 blender+αの大発表会
13 blender+αの大発表会13 blender+αの大発表会
13 blender+αの大発表会
 
Blender x docker(簡単分散環境構築)
Blender x docker(簡単分散環境構築)Blender x docker(簡単分散環境構築)
Blender x docker(簡単分散環境構築)
 
04 これが(多分)最後! ベンチマークs
04 これが(多分)最後! ベンチマークs04 これが(多分)最後! ベンチマークs
04 これが(多分)最後! ベンチマークs
 
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料
お見合いで趣味を聞かれたときに 「IoTとビッグデータを少々」と答えたいSEが読む資料
 
blenderとunreal engine4
blenderとunreal engine4blenderとunreal engine4
blenderとunreal engine4
 
More photorealistic!
More photorealistic!More photorealistic!
More photorealistic!
 
大人の分散レンダリング
大人の分散レンダリング大人の分散レンダリング
大人の分散レンダリング
 
Rデータ入力編
Rデータ入力編Rデータ入力編
Rデータ入力編
 

Dernier

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料Tokyo Institute of Technology
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラムKochi Eng Camp
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~Kochi Eng Camp
 

Dernier (6)

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 

R高速化