2 Dynamical systems and time series ぱらぱらめくる『DIstance-based analysis of dynamical systems and time series by optimal transport』

  • Abstract
    • Wasserstein distance を使う、Wasserstein distance はOptimal transportation problemの量的コストである、それを使うと、非線形現象をロバストに解析することができる
  • 2.1 Introduction
  • 2.2 Wasserstein distances
    • Taken's theorem
      • 時系列データの時間遅れ埋め込み座標系(Delay embedding)プロットは、本の多次元時系列データのアトラクタを再現する
      • 時間遅れ埋め込みはRなら"embed()"関数(それをもじった"Embed()"関数はこちら)
    • Delay embeddingによるアトラクタ再構成
      • 観察尺度数
        • 元データが多次元、観察データが1尺度
        • 元データが多次元、観察データが多尺度、どちらもある
      • Delay間隔をどうするか(最適化・推定)
      • Embedding次元をどうするか(次元検定)
    • Natural invariant measureというのがあって、これは、時系列データにある程度条件をつけると、観測値から、この値の近似値が適当な精度で求められるという性質がある
    • Natural invariant measure のWasserstein distanceを考えることにする
    • Wasserstein distance
      • ある分布をある分布に移し替えるときの総コストをWasserstein distanceとする
      • ある量をある位置からある位置まで移すことの足し合わせになる
      • ある位置からある位置まで移すにあたって、その距離を決める
        • ユークリッド距離だったり、マンハッタン距離だったり、色々なものが取れる
    • Transportation distanceの利用例と時系列データの特殊性
      • 画像解析、形の一致、物理学の逆問題に共通する
      • 時系列データの場合には、Dirac測度の和なので、重み付き点集合の凸最適化問題に限定できる(離散的な点の和で扱うと楽)
    • Wasserstein distanceの別称(少しずつ範疇にずれがあるが…)
  • 2.3 Implementation
    • Wasserstein distanceの計算
      • 離散的な値のセットを扱う
      • 一般的な線形処理で解けるが、さらに多項式時間で解くアルゴリズム(network simplex algorithm)も知られている(RではRcplexパッケージの中に"network simplex algorithm"があると書いてあるが、R.14.xではnot availableと表示された…)
    • Bootstrapping and binning
      • 計算できる、とは言っても、計算は重いので、工夫しよう
      • Resamplingを繰り返して、距離の推定値を出す。軽くなるだけでなく、正確さに関する情報も出るので使い勝手がよい
      • 複数の点を一か所にまとめることで処理する点の数を減らす。そのときに混入する誤差についても、想定するのが簡単なのが、「距離」のよいところ
    • Wasserstein distanceがペアワイズに計算しようとすると、その数も膨大なので、計算するペア数を端折ることも考えたい。その場合は、距離行列が不完全になる。不完全な距離行列の活用方法や、不完全な距離行列が全情報量のうちのどれくらいを持っているかの評価などが必要になる
    • 距離が『距離』でないとき
      • 距離には定義があるが、リサンプリングなどを介して得られる距離は、『距離の定義』を満足しないことがある(三角不等式を満足しない)
      • 三角不等式からの逸脱の程度それ自体も、解析対象に関する情報として意味がある(らしい)
      • 自身との距離もリサンプリングをすると0でなくなる。これはリサンプリングによるずれの情報として用いることができる
  • 2.4 Analysis
  • 2.5 Example: The Henon system
# Earth Mover's distanceを計算するemd2d()関数を有するパッケージemdist
library(emdist)
# Henon systemの変数を振る
as1 <- seq(from = 0.7, to = 1.4, by = 0.1)
bs1 <- seq(from =0.30, to = 0.30, length = 2)
abs <- expand.grid(as1,bs2)

# 点を発生させる
# 色々な時点からの時系列データを観測してものとする
hs <- list()
# n.discardは初期値依存の部分を捨てるため
n.discard <- 1000
n.sim <- 5000
np <- 200
for(i in 1:length(abs[,1])){
	a <- abs[i,1]
	b <- abs[i,2]
	hs[[i]] <- list(x=rep(0,np),y=rep(0,np))
	tmpx <- tmpy <- rep(0,n.discard + n.sim)
	for(j in 2:length(tmpx)){
		tmpx[j] <- 1 + tmpy[j-1] - a*tmpx[j-1]^2
		tmpy[j] <- b*tmpx[j-1]
	}
	s <- sample((n.discard+1):(n.discard+n.sim-np),1)
	hs[[i]]$x <- tmpx[s:(s+np-1)]
	hs[[i]]$y <- tmpy[s:(s+np-1)]
	titl <- paste("a=",a,",b=",b)
	#plot(hs[[i]]$x,hs[[i]]$y,main = titl)
}
# 試行に関するペアワイズ距離行列を計算する
d.mat <- matrix(0,length(abs[,1]),length(abs[,1]))
# Henonのx軸値に関して次元2で時間遅れembeddingする
emb.k <- 2
for(i in 1:(length(abs[,1]))){
	emb.1 <- embed(hs[[i]]$x,emb.k)
	for(j in (1):length(abs[,1])){
		emb.2 <- embed(hs[[j]]$x,emb.k)
# その上でemd2d()関数でEarth Mover's distanceを計算する
		d.mat[i,j] <- emd2d(emb.1,emb.2)
	}
}
# 距離行列からmdsしてその座標でプロットする
plot(cmdscale(d.mat,2))
    • テキストブックの絵のようにきれいになっていないのは、観測時刻数が少ないから?

  • 2.6 Example: Lung diseases
  • 2.7 Generalized Wasserstein distances
    • Wasserstein distanceが小さくなるように、分布を変型してみる話
    • 変型の種類
      • 平行移動、回転、拡縮
    • 複数の時系列データを併せるときに重みづけを変える
    • 変型すると、Wasserstein distanceが変わる。その変型の仕方と距離の変わり方に大小のルールがある。変化量を残差として評価できる
    • Wasserstein distance最小化に伴うコストも考慮する
  • 2.8 Nonmetric multidimensional scaling
    • 出来たWasserustein distanceの距離行列をNonmetric multidimensional scalingで評価する
      • 距離行列の中身を、距離の順序は守ったままで変えてやる
      • アトラクタの量的特性ではなく質的特性に興味があればそれもよい
  • 2.9 Conclusions