オーストラリアで勉強してきたMLデザイナーの口語自由詩

主に、データ分析・機械学習・ベイズ・統計について自由に書く。

Chapter 1 統計モデリングとStanの概要 - pythonで『StanとRでベイズ統計モデリング』

f:id:yukinagae:20181031083449p:plain

1.1 統計モデリングとは

以前、「はじめに」でも触れた統計モデリングについてまとめてみます.

統計モデリングとは確率分布を取り入れたモデルをデータに当てはめて理解と予測をすることです.

整理すると, 確率分布を数理モデルに取り入れたモデルを 確率モデル と呼び, その確率モデルをデータに当てはめて理解と予測をすることを 統計モデリング と呼ぶようです.

このモデルにはパラメータがあり, その未知の値を推定することができれば, ある現象の理解と予測を行うことができる, というのが統計モデリングのコアの考えです.

例えば, 以前触れた人の歩幅と距離の例でいえば, 歩幅が平均1mに対して一歩一歩が±どの程度の誤差が起きるかというのもパラメータといえそうです. ある人は±30cmでずれるかもしれませんし, ある人は±5cmかもしれません. この誤差のパラメータも結果的に何mの距離を歩けたかという観測データを見れば推定できそうです.

1.2 統計モデリングの目的

統計モデリングの目的は主に2つあります.

  • 解釈: 現象をの理由や仕組みがわかること, 解釈できること
  • 予測: 過去のデータから未来の振る舞いを予測すること

また, 機械学習と古典的な統計分析と比較して場合の統計モデリングの特徴です.

  • 機械学習
    • 解釈: △/✕
    • 予測: ◯
  • 古典的な統計分析
    • 解釈: ◯
    • 予測: ✕
  • 統計モデリング
    • 解釈: ◯
    • 予測: ◯

とりあえず, 「統計モデリング最強」みたいな感じです(`・ω・´)

1.3 確率的プラグラミング言語

確率モデルのパラメータ推定の大変さとして主に以下の2つがありました.

  • 難解な数式を実装するのでバグりやすい
  • モデルが変わるたびにコードを修正しないといけない

これらの問題を解決するのが 確率プログラミング言語 で, Stanもその言語のうちの一つです.

1.4 なぜStanなのか?

確率プログラミング言語の主流としては, 以下の2つがありました.

そこでStanの登場.

  • Stan
    • 2012年ころからgithubで開発開始
    • R_Python_Matlabのインターフェースがある
    • エラーメッセージがわかりやすい
    • ドキュメントが充実
    • さまざまなパラメータ推定のアルゴリズムが使える
      • NUTS: MCMCというサンプリングアルゴリズムの一種のHamiltonian Monte Carloの一実装
      • ADVI: 変分ベイズ法の一実装. NUTSより50倍速いケースがあるらしい

1.5 なぜRStanなのか?

Rは可視化やデータ加工が得意なのでいろいろ捗るらしい(`・ω・´)

参考資料