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