More Related Content
PDF
PDF
PDF
StanとRでベイズ統計モデリング読書会 導入編(1章~3章) PPTX
PPTX
PDF
Cmdstanr入門とreduce_sum()解説 PDF
PDF
What's hot
PDF
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由 PDF
PPTX
PDF
機械学習による統計的実験計画(ベイズ最適化を中心に) PDF
Recent Advances on Transfer Learning and Related Topics Ver.2 PDF
PDF
StanとRでベイズ統計モデリング 11章 離散値をとるパラメータ PDF
PPTX
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章 PDF
PDF
PDF
PDF
PPTX
PDF
PDF
PPTX
PDF
PDF
PDF
Similar to Stanでガウス過程
PDF
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models PPTX
PILCO - 第一回高橋研究室モデルベース強化学習勉強会 PPTX
PDF
PDF
PDF
ガウス過程回帰の導出 ( GPR : Gaussian Process Regression ) PDF
PDF
[PRML] パターン認識と機械学習(第2章:確率分布) PDF
PRML 3.3.3-3.4 ベイズ線形回帰とモデル選択 / Baysian Linear Regression and Model Comparison) PDF
PDF
PDF
20190721 gaussian process PPTX
PDF
PDF
PRML輪講用資料10章(パターン認識と機械学習,近似推論法) PDF
PDF
PRML2.3.8~2.5 Slides in charge PDF
PDF
PDF
PRML_titech 2.3.1 - 2.3.7 More from Hiroshi Shimizu
PDF
PPTX
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ PDF
PDF
PPTX
PDF
PPTX
rstanで簡単にGLMMができるglmmstan()を作ってみた PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
エクセルでテキストマイニング TTM2HADの使い方 PPTX
PDF
PPTX
PPTX
Excelでも統計分析 HADについて SappoRo.R#3 PDF
Stanでガウス過程
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
基底関数
• 基底関数を使った表現
– 任意の𝑥の基底関数を𝜙(𝑥)とする
•基底関数・・・𝑥 𝑎
とかsin(𝑥)とかみたいに𝑥から一意に決まる
変換関数
• ここでは上と同じように多項式(べき関数)だけを考えてOK
• 基底関数を使って書き直す
– 𝑦𝑖 = 𝑤0 + 𝑤1 𝜙1(𝑥) + 𝑤2 𝜙2(𝑥) + ⋯ + 𝑤 𝑚 𝜙 𝑚(𝑥)
– 𝑌 = ΦW
– パラメータ𝑤と𝑥、基底関数𝜙から予測値ො𝑦を推定する
- 22.
- 23.
Yの平均と分散を計算する
• 𝑌の平均と共分散を計算する
– 𝜇𝑌 = 𝐸 𝑌 = 𝐸 Φ𝑊 𝑇
= Φ𝐸 𝑊 𝑇
= 𝟎
– 𝑛次元の0ベクトル
• 𝑌の共分散行列
– Σ 𝑌 = 𝐸 𝑌𝑌 𝑇 − 𝐸 𝑌 𝐸 𝑌 𝑇 = 𝐸[Φ𝑊 Φ𝑊 𝑇] =
Φ𝐸[𝑊𝑊 𝑇]Φ 𝑇 = 𝜆Φ𝐸 𝐼 𝑚 𝐼 𝑚
𝑇
Φ 𝑇 = 𝜆ΦΦ 𝑇
• 変数×変数ではなく、サンプル×サンプルの共分散行列を考える
• 𝑌の確率モデル
– 𝑌 ~ 𝑀𝑢𝑙𝑡𝑖𝑁𝑜𝑟𝑚𝑎𝑙(𝟎, 𝜆ΦΦ 𝑇
)
– 𝑛変量正規分布
- 24.
カーネルトリック
• 共分散行列𝜆ΦΦ 𝑇
に注目
–𝑛 × 𝑛の正方行列で、正定値なものであればなんでも
いい
– つまり、基底関数行列Φがなんであっても、最終的に
はなんらかの共分散行列を指定するだけで、𝑦の確
率モデルが構成できる
• カーネル関数にすべてを還元
– 𝜅 𝑥, 𝑥′
= 𝜆ΦΦ 𝑇
– 関数系Φを具体的に指定せずとも、任意のカーネル
関数を使って共分散行列𝜅 𝑥, 𝑥′ を作ればよい
- 25.
- 26.
ガウス過程の確率モデル
• 𝑌~𝑀𝑢𝑙𝑡𝑖𝑁𝑜𝑟𝑚𝑎𝑙 𝟎,𝜅(𝑥, 𝑥′
)
– サンプルサイズが𝑛の場合、𝑛変量正規分布を考
える
– 𝜅(𝑥, 𝑥′)は𝑛×𝑛の共分散行列を構成する関数
• カーネル関数と呼ぶ
• この共分散行列をどのように決めればいい?
– ガウス過程はカーネル関数をどうするかがすべ
てといって過言ではない
- 27.
- 28.
- 29.
ガウスカーネル
• よく使われるのがガウスカーネル
– 𝜅𝑥, 𝑥′ = 𝜃1 exp −
𝑥−𝑥′ 2
2𝜃2
• ガウスカーネルとガウス過程は別物なので注意!
• exp −
𝑥−𝑥′ 2
2
の部分が正規分布の密度関数のカー
ネルと一致している
– RBFやexponential quadric kernelなどと呼ばれる
- 30.
ガウスカーネルの例
x <- seq(1,5)
n<- length(x)
theta <- 10
kappa <- array(dim=c(n,n))
for(i in 1:n){
for(j in 1:n){
kappa[i,j] <- exp(-(x[i]-x[j])^2/(2*theta))
}
}
kappa
近い点ほど
相関が大き
い
- 31.
- 32.
ガウスカーネルのハイパーパラメータ
• 𝜅 𝑥,𝑥′ = 𝜃1 exp −
𝑥−𝑥′ 2
2𝜃2
– 𝜃1ガウスカーネル自体がどれくらいカーネル関数全
体に寄与しているかを表している
– 𝜃2ガウスカーネルのハイパーパラメータで、距離に応
じてどれくらい相関が小さくなるかの程度
• 𝜃2が大きいほど、なめらかな予測になる
– ただし、これらはすべてMCMCで推定可能
• なんらかの方法で事前に決めてもいい
- 33.
- 34.
それ以外にもカーネル関数はある
• 線形カーネル
– 𝜅𝑥, 𝑥′
= 𝜃𝑥𝑥′
x <- seq(1,5)
n <- length(x)
kappa <- x%*%t(x)
kappa
任意の2点の相関が1
xの分散の応じて分散は
大きくなる
任意のべき乗をいれれば、
多項式回帰と同じにできる
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
まずは𝑥2を作る
• N2は任意の数
– 推定したい点の数
–𝑥2は1~30の間を59分割した点
N1 <- nrow(dat)
x1 <- dat$x
y1 <- dat$y
N2 <- 59
x2 <- seq(1,30,length.out = N2)
data.gp <- list(N1 = N1,
N2 = N2,
x1 = x1,
x2 = x2,
y1 = y1)
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
最終的なRコード
dat <- read.csv("gp_test.csv")
N1<- nrow(dat)
x1 <- dat$x
y1 <- dat$y
N2 <- 59
x2 <- seq(1,30,length.out = N2)
data.gp <- list(N1 = N1,
N2 = N2,
x1 = x1,
x2 = x2,
y1 = y1)
model.gp <- stan_model("GP_reg.stan")
fit.gp <- sampling(model.gp,
data = data.gp,
iter = 5000,
chains = 4,
cores = 4)
- 47.
- 48.
プロットのためのコード
y2.med <- apply(ext.fit$y2,2, median)
y2.low <- apply(ext.fit$y2, 2, quantile, probs = 0.05)
y2.high <- apply(ext.fit$y2, 2, quantile, probs = 0.95)
d.est <- data.frame(x=x2, y=y2.med, ymax=y2.high, ymin=y2.low)
d.obs <- data.frame(x=x1, y=y1, ymax=rep(0,N1), ymin=rep(0,N1))
p <- ggplot(d.est, aes(x = x, y = y, ymax=ymax, ymin=ymin))
p <- p + xlab("x") + ylab("y")
p <- p + geom_ribbon(alpha = 1/3)
p <- p + geom_line(aes(y = y), color = "blue")
p <- p + geom_point(data = d.obs)
p
- 49.
- 50.