tokyo.r #19 発表資料 「rで色々やってみました」
DESCRIPTION
2011/11/19 第19回東京R言語勉強会@大森発表資料TRANSCRIPT
![Page 1: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/1.jpg)
Rで色々やってみました
礒部 正幸 (@chiral)
第19回 #TokyoR
![Page 2: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/2.jpg)
自己紹介
● ソフト開発エンジニア○ 学生時代: 記号的統計モデリング(prolog+統計)○ 現在: セキュリティ技術企業の研究開発部に所属
■ パケットキャプチャ製品、ログ解析製品にデータマイニングを応用し、企業組織内の色々な事象を自動認識する技術の開発に従事(+設計実装/マネジメントなど)
○ R暦: 2ヶ月(感想:R便利すぎワロタwww)
![Page 3: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/3.jpg)
アジェンダ
1. 中心極限定理をシミュレーションで確かめてみた話2. PRMLの検証を始めたら第一章で謎に出会った話3. ガウスカーネルのσがよく分からないのでRで図を描いてみた話4. Rのアプリケーションとして動画のシーンカッターを作ってみた話5. 2011^(23!)をRのワンライナーで計算できて感動した話
![Page 4: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/4.jpg)
(1)中心極限定理のシミュレーション
![Page 5: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/5.jpg)
中心極限定理とは
● 統計学の本の最初のほうに大抵出てくる重要な定理
おおざっぱにいうと
「どんな分布でも、『その分布からN個サンプリングして平均をとった値』はN→∞で正規分布になる」
や
「どんな乱数でも、「N個平均」のラッパー越しに使うと正規乱数になってしまう」
という感じだと思います。
![Page 6: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/6.jpg)
for(i in 1:100) r[i]<-mean(runif(100))hist(r) [0,1]の一様分布から100個サンプ
リングしてヒストグラム作成
![Page 7: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/7.jpg)
r<-c()f<-function(n,m) { for(i in 1:m) r[i]<-mean(runif(n)); hist(r,main=paste('n =',n)); }layout(t(matrix(1:4,c(2,2))))for (n in c(10,100,1000,10000)) f(n,1000)
正規分布っぽいのが出た。
![Page 8: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/8.jpg)
f1<-function(n,m) { for(i in 1:m) r[i]<-mean(runif(n)); hist(r,breaks=seq(0,1,length=100),main=paste('n =',n)); }for (n in c(10,100,1000,10000)) f1(n,1000)
横軸[0,1]にすると中心に寄っていく様子が見える。(大数の法則)
![Page 9: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/9.jpg)
x<-seq(0,1,length=100)y<-pnorm(x,0.5, … ゚Д゚)ハッ!分散ってどうなるんだっけ?
それから、一様分布[0,1]の分散は1/12 http://goo.gl/wCdIY
正規分布を描いてみる
![Page 10: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/10.jpg)
g<-function(n) { x<-seq(0,1,length=100); y<-dnorm(x,0.5,1/sqrt(12*n)); plot(x,y,type='n',main=paste('n =',n)); lines(x,y); }for (n in c(10,100,1000,10000)) g(n)
よさそう。
![Page 11: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/11.jpg)
(2)回帰の検証(PRML第一章)
![Page 12: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/12.jpg)
PRML第一章 図1.5y=(xのM次多項式) で係数を最小二乗法で求めたときの二乗誤差(をデータ数で割ったもの)のグラフ。(横軸がM,縦軸が二乗誤差)
![Page 14: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/14.jpg)
2回目
PRMLと形が違う。。
![Page 15: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/15.jpg)
3回目
PRMLと形が違う。。
![Page 16: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/16.jpg)
4回目
PRMLと形が違う。。
![Page 17: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/17.jpg)
もしバグじゃないとしたら…
C.M.Bishop先生!同じ絵が描けません! ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ∧__∧∩ (´∀`)/ _ / / /\ ⊂ノ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄||
元のsin(x)に加えるノイズの標準偏差を変えても同様の結果になる。
![Page 18: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/18.jpg)
考察:理由づけてみる
・M(多項式の次数)が小さいとき→ 多項式自体がロバスト→ 学習データに振り回されない→ 学習データの平均残差平方和も大きい→ テストデータの平均残差平方和は小さい(PRMLと違う)
・Mが大きいとき→ 学習データのノイズに引きずられて過学習→ 学習データにはジャストフィット→ テストデータからは大きくハズレる(PRMLと同じ)
![Page 19: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/19.jpg)
(3)ガウシアンカーネルのσパラメータ
![Page 20: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/20.jpg)
・カーネル法で一番良く使われそうなカーネル関数
・正規分布(ガウス分布)の形に似ている → 近い点どうしは値が大きく → 遠い点どうしは値が小さく
・σパラメータ → 正規分布の分散のようなもの
直感的な図を描いてみます。
![Page 21: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/21.jpg)
Rで実装
ソースコード: https://gist.github.com/1289543
以下をσを色々変えてアニメーション・y=sin(x) + ガウスノイズ・SVM : library(kernlib) で2クラス分類・プロット
アニメーション(FLASH)
![Page 22: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/22.jpg)
![Page 23: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/23.jpg)
![Page 24: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/24.jpg)
![Page 25: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/25.jpg)
![Page 26: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/26.jpg)
![Page 27: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/27.jpg)
![Page 28: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/28.jpg)
![Page 29: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/29.jpg)
![Page 30: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/30.jpg)
![Page 31: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/31.jpg)
![Page 32: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/32.jpg)
![Page 33: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/33.jpg)
![Page 34: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/34.jpg)
![Page 35: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/35.jpg)
考察
・パラメトリックなカーネル関数は位相構造のテンプレート (パラメータは位相の粒度を調整する)
・ガウシアンカーネルの場合は、 密着位相(粗) ← 小さくなる ← σ → 大きくなる → 離散位相(細) (単純/フィットしにくい) (複雑/過学習)
・本実験の「sin(x)+ノイズ」の場合、最適なσは0.5~1だった → 最適なσを決める基準は交差判定が一般的らしい → 「サポートベクトルの少なさ」も基準になりうると思われる
![Page 36: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/36.jpg)
(4)動画シーンカッター ~Rのbcpパッケージを使って~
![Page 37: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/37.jpg)
bcp(Bayesian Change Point)パッケージ
何か応用できないか? → 動画シーンカッター
![Page 39: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/39.jpg)
カラーヒストグラムとエントロピー
フレーム
カラーヒストグラム エントロピー
R G B
R G B
R G B
= 3.89
= 4.06
= 2.90
→ bcpに食わせる
![Page 40: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/40.jpg)
実装
フレーム切り出し(0.25秒ごと)
カラーヒストグラム作成(フレーム毎)
エントロピー計算(フレーム毎)
Rのbcpパッケージで変化点検出
変化点のフレームを出力
YouTube動画(flvファイル)
Perl
ソースコード(Perl)
![Page 41: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/41.jpg)
金麦CMで検証
いい感じ
エントロピー(Perl)
![Page 42: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/42.jpg)
出力結果
bcpの事後確率 > 0.5
…まぁまぁですかね。
![Page 43: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/43.jpg)
考察・感想
・カラーヒストグラムのエントロピーくらいで、画像の連続的変化をトラッキングできる
・高次元の位相を低次元にマップするような指標なら、同様の手法が使えそう
・bcpパッケージのドキュメントには、「等分散を仮定」と書いてあり、その辺りが「フレームを分類しきれてない原因」かと思われる
・「何らかの前処理」→(数値データ)→「R言語」というパターンで色々なアプリを作っていきたい
![Page 44: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/44.jpg)
(5)高機能電卓としてのR ~2011^(23!) mod 10000 ~
![Page 45: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/45.jpg)
数学問題botより出題
2)が解けなかったので、Rで解くことにした
![Page 46: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/46.jpg)
コーディング・無名関数の呼出 → カッコでくくるだけ例)time<-(function(h,m,s)(h*60+m)*60+s)(14,30,5)・無名関数の再帰 → Recall()例) fact<-function(n) ifelse(n==1,1,n*Recall(n-1))・コマンドラインからワンライナー → R -q -e 'プログラム'例) c:\> R -q -e 'print(pi)'
Rプログラムをツイートできた。
![Page 47: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/47.jpg)
考察
・Rは左辺値が変数宣言と見なされるのが電卓的に便利
・無名関数をラムダ式のように使えて便利
・無名関数の再帰が組み込みで便利
・コマンドラインからワンライナーも便利
→ Rでワンライナー、オススメかもです。
![Page 49: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/49.jpg)
おまけ(2)
![Page 50: Tokyo.R #19 発表資料 「Rで色々やってみました」](https://reader033.vdocuments.mx/reader033/viewer/2022050817/556a5213d8b42a7a138b47e8/html5/thumbnails/50.jpg)
ご清聴ありがとうございました。
(違