書籍「つくりながら学ぶ! Pythonによる因果分析」の紹介
6月30日に小川雄太郎さんの新しい著作「つくりながら学ぶ! Pythonによる因果分析」が出ていたことに気づき,早速読んでみたところ,とても素晴らしい本だったので紹介記事を書くことにしました.
ご存知の方も多いと思いますが,小川さんは以下の本の著者です (その他にも何冊か執筆されています). これらの本もとても評判が良く,私もとてもお世話になりました.
今回紹介する新しい本では,因果推論や因果探索が扱われています.因果推論とは,変数間の因果関係を推定するための統計学的な方法論です.また,因果探索とは,データから因果関係の向きを推定する方法論です.ご存知の方からすれば当たり前のことですが,データから因果関係を調べたい場合,単純に回帰分析をするようなやり方では,ほとんど全ての場合に不適切です.因果推論の理論をちゃんと勉強し,適切な手法を用いる必要があります.
因果推論は一般に敷居が高いと思います.初学者にはとても分かりにくく,面倒に感じると思います.しかし,そうした方も小川さんの本なら大丈夫です.今まで因果推論をちゃんと勉強しなきゃと思いつつ逃げていた多くの方に,おすすめしたい一冊です.この本を特におすすめしたい理由は以下の4点です.
- 事前知識ほぼゼロの初学者でも読めること.因果推論に関する本は数学的に高度な内容を含むものが多く,全く事前知識のない方におすすめできる本を私は知りません (因果探索に関する本なら,清水昌平先生の「統計的因果探索」がとても分かりやすいですが).一方,この本はまず,相関と因果の違いとは?という点からスタートし,初学者にも分かりやすく噛み砕いて説明してくれています.
- 因果推論から因果探索まで俯瞰的に学べること.伝統的な因果推論から,最近幅広い分野で応用されている因果探索まで,一冊で俯瞰的に解説した書籍は今までなかったと思います.
- ソースコードを自分で動かして体験できること.しかも,ただのパッケージユーザーではなく,中身が理解できるように工夫されています.
- 最先端の論文までカバーしていること.グラフニューラルネット,深層強化学習,GANなどを用いた因果探索手法が紹介されています.
と,ここまで書いて気づきましたが,著者の小川さん本人がQiitaに紹介記事を書かれていました.詳細はこちらをご覧下さい.
多次元Ornstein-Uhlenbeck過程の時間相関関数の導出メモ
状態変数の時間相関関数
系の定義については,前回の記事を参照して下さい.状態変数の時間相関関数を以下のように定義します.
\begin{align}
C(s) = E[\boldsymbol{x}(t+s)\boldsymbol{x}(t)^{\top}]
\end{align}
但し,ここで期待値は,定常状態 (とした場合) における期待値を意味します.このとき,この時間相関関数は以下のように書くことができます.
\begin{align}
C(s) &= - e^{sA} {\rm vec}^{-1}( (A \oplus A)^{-1} {\rm vec}(W) ) \quad & (s \ge 0) \tag{1} \\
C(s) &= - e^{-sA^{\top}} {\rm vec}^{-1}( (A \oplus A)^{-1} {\rm vec}(W) ) \quad & (s < 0) \tag{2}
\end{align}
式(1), (2)の導出
以下のようにモーメント方程式を導くことができます.
\begin{align}
\frac{d}{ds} C(s) = \frac{d}{ds} E[\boldsymbol{x}(t+s)\boldsymbol{x}(t)^{\top}] = AC(s)
\end{align}
したがって,初期条件の下でこの式を時間順方向に解くことにより,式(1)を得ることができます.また,の定義よりなので,式(2)を導くことができます.
多次元Ornstein-Uhlenbeck過程の確率密度関数の導出メモ
はじめに
この記事では,多次元Ornstein-Uhlenbeck過程と呼ばれる確率過程について,ある初期値からこの確率過程に従って時間発展する状態変数の確率密度関数を導出します.
多次元Ornstein-Uhlenbeck過程
Ornstein-Uhlenbeck (OU) 過程は,ブラウン運動する粒子の振る舞いを記述するために提案された確率過程であり,線形な確率微分方程式によって記述されます*1.多次元の状態変数を持つOU過程を,ここでは多次元OU過程と呼び,以下の (伊藤型) 確率微分方程式で定義します.
但し,はこの系の状態を表す状態変数であり,点は時間による微分を表します.は系のダイナミクスを特徴付ける行列であり,異なる個の固有値を持ち,全ての固有値の実部は負であるとします.は
\begin{align}
E[\boldsymbol{w}(t)] = 0, \ E[\boldsymbol{w}(t)\boldsymbol{w}(s)^{\top}] = W\delta(t-s)
\end{align}
を満たす白色ガウスノイズとします (はDiracのデルタ関数です).
状態変数の確率密度関数
状態変数がある初期値から式(1)に従って時間発展するとします.このとき,時刻の状態変数は,ガウス分布の再生性より多次元ガウス分布に従います.この多次元ガウス分布の平均,共分散行列を以下のように定義します.
\begin{align}
\boldsymbol{m}(t) &= E[\boldsymbol{x}(t)] \\
V(t) &= E[(\boldsymbol{x}(t) - \boldsymbol{m}(t)) (\boldsymbol{x}(t) - \boldsymbol{m}(t))^{\top}]
\end{align}
このとき,との時間発展は以下のように記述されます.
\begin{align}
\boldsymbol{m}(t) &= e^{tA} \boldsymbol{x}(0) \tag{2} \\
V(t) &= {\rm vec}^{-1}\left( \int_0^t e^{s(A \oplus A)} {\rm vec}(W) ds \right) \tag{3}
\end{align}
但し,はある行列について
\begin{align}
{\rm vec}(M) = [M_{1,1}, \ldots, M_{n,1}, M_{1,2}, \ldots, M_{n,2}, \ldots, M_{1,n}, \ldots, M_{n,n}]^{\top}
\end{align}
と定義される関数であり,はKronecker和*2を表します.また特に,のとき,
\begin{align}
\boldsymbol{m}(t) &\to \boldsymbol{0} \\
V(t) &\to -{\rm vec}^{-1}\left( (A \oplus A)^{-1} {\rm vec}(W) \right)
\end{align}
となります.
式(2), (3)の導出
以下のように,との時間発展を記述する方程式を得ることができます.なお,式(5)の導出には伊藤の補題*3を利用します.
\begin{align}
\dot{\boldsymbol{m}}(t) &= \frac{d}{dt} E[\boldsymbol{x}(t)] = A \boldsymbol{m}(t) \tag{4} \\
\dot{V}(t) &= \frac{d}{dt} E[(\boldsymbol{x}(t) - \boldsymbol{m}(t)) (\boldsymbol{x}(t) - \boldsymbol{m}(t))^{\top}] = AV(t) + V(t)A^{\top} + W \tag{5}
\end{align}
式(4)を初期条件の下で解くことにより,式(2)を導くことができます.また,式(5)はKronecker和を用いることにより,以下のように書き直すことができます.
\begin{align}
\frac{d}{dt} {\rm vec}(V(t)) = (A \oplus A) {\rm vec}(V(t)) + {\rm vec}(W)
\end{align}
この式を初期条件の下で解くことにより,式(3)を導くことができます.
青森市周辺の観光スポットを紹介
私の結婚式で青森市を訪れる友人たち向けに、青森市周辺の観光地をまとめました。 青森は私たちの大好きな場所なので、ぜひ楽しんで行ってもらえればと思います。 青森といえば、やはり魚介類と温泉です。
青森市街地
戦災により歴史的な建造物はほとんど残っていません。 なので、あまり観光向きではありませんが、青森の新鮮な魚介類を楽しむことができます。
- 古川魚菜センター: 市場の中を回って自分の好きな海鮮丼を作る「のっけ丼」が有名。青森に来たら是非食べて行って欲しい。http://nokkedon.jp/
- A-FACTORY: お洒落なお土産もの屋さん。シードル試飲可。カフェ併設。http://www.jre-abc.com/wp/afactory/index/
- 想咲季節料理 たか野: 青森の新鮮な食材を使った創作和食。新郎のイチオシ。https://tabelog.com/aomori/A0201/A020101/2009810/
- 一八寿司: 新郎行きつけのお寿司屋さん。新郎はここで1回目のプロポーズをした(玉砕)。https://tabelog.com/aomori/A0201/A020101/2000497/
- 青森まちなか温泉: 青森駅すぐそばの天然温泉。露天風呂あり。https://aomori.atinnhotels.com/onsen.html
- ねぶたの家「ワラッセ」: ねぶたの展示を見て、太鼓演奏を聞くことができる。http://www.nebuta.jp/warasse/
弘前市街地 (青森からJR奥羽線で40分)
弘前は、お城とその城下町や、明治期の洋館が残る美しい街です。 漫画・アニメ「ふらいんぐうぃっち」の聖地でもあります。 http://www.hirosaki-kanko.or.jp/web/edit.html?id=fc_flyingwitch
- 弘前公園(弘前城址): 石垣修復のため、天守閣を移動する「曳家」を実施中。とても珍しいので一見の価値あり。http://www.hirosakipark.jp/ishigaki.html
- 藤田記念庭園 洋館: 「ふらいんぐうぃっち」に登場する魔女のカフェ。実際にカフェとして営業中。
- 石場家住宅:「ふらいんぐうぃっち」で同級生なおさんが住む酒屋さん。実際に酒屋さんとして営業中。
- 津軽藩ねぷた村: 弘前のねぶた(ねぷた)展示、津軽三味線の生演奏あり。http://neputamura.com/
- ポルトブラン: 地元の食材を生かしたフランス料理が食べられるレストラン。https://tabelog.com/aomori/A0202/A020201/2000048/
弘前・岩木山 (青森から自動車で1.5時間)
霊峰・岩木山は、古くから津軽の人々の信仰の対象でした。 美しい景色、極上の釜飯に、最高の温泉をお楽しみ下さい。 (※レンタカーの利用を推奨します)
- 獄(だけ)温泉「山のホテル」: 300年の歴史を持つ名湯。薫りの良い青森ヒバを贅沢に使った浴場です。また、マタギ飯という豊かな山菜を使った釜飯が有名です。マタギ飯は調理に時間がかかるため、温泉に入る前に注文しておきます。http://www.yamanohotel.com/onsen.html
- 岩木山神社: 霊峰・岩木山を祀る神々しい雰囲気の神社です。https://www.aptinet.jp/Detail_display_00000019.html
- メープルハウス山村: 最近Twitterで一躍有名になったメープルシロップのお店。http://nakosan.com/?p=810
八甲田山・奥入瀬渓流・十和田湖 (青森からバスで1〜1.5時間)
青森観光のメインストリートです。 青森市街地から南へ山道を進むと、順に八甲田山、奥入瀬渓流、十和田湖があります。 (※バス移動も可能ですがレンタカーがあると便利です)
バス情報: http://www.jrbustohoku.co.jp/route/detail/?RID=1
- 酸ヶ湯(すかゆ)温泉: 300年の歴史を持つ名湯。http://www.sukayu.jp/Tops/index
- 奥入瀬渓流: 柱状節理の岩肌と、一面に生した苔が作り出す、まるでジブリ映画のような美しい景観が魅力です。http://towadako.or.jp/sansaku-map/oirase-nenokuchi/
- 十和田湖: 透明度が高い神秘的な巨大カルデラ湖。「瞰湖台」と呼ばれる展望台からの壮麗な眺めをぜひ。http://towadako.or.jp/towadako-oirase/
以上、青森市街地から1時間程度で行くことのできる範囲をざっと紹介しました。より詳しいことについても、もしよければご相談に乗ります。是非、青森を楽しんで行って下さい!
追記(2018/6/11): @yamas4kiさんや@takatoh1さんに「浅虫温泉が入っていない!」というお叱り(?)をいただいたので追記します。
夏泊半島 (青森から青い森鉄道で30分)
- 浅虫温泉 (「道の駅ゆ〜さ浅虫」など) 「道の駅ゆ〜さ浅虫」では、温泉浴場からむつ湾を一望できます。http://www.yu-sa.jp/
- 鶴亀屋食堂: マグロやウニが大盛りの定食で有名。https://tabelog.com/aomori/A0201/A020102/2000724/
- ほたて広場: ホタテの街として名高い平内が誇るホタテ料理や、ホタテ漁業の体験コーナーなど。http://www.hotate-hiroba.com/