ベイズ統計学のPythonライブラリ

 ベイズ統計学に関連するライブラリを紹介します。


1.概要

 ベイズ統計学に関するライブラリの一覧を紹介します。分類分けは一部正確でないところがありますのでご了承ください。

 ベイズ最適化やガウス過程回帰を学びたい方向けの記事も作成しておりますのでご参考までに。

2.ベイズ統計モデリング

 ベイズ統計モデリングのライブラリは下記の通りです。これらのライブラリは、ベイズの統計的手法を使用して複雑なデータモデルを構築することを可能にします。

  • PyMC3:Pythonで動作するベイズ統計モデリングライブラリで、MCMC(マルコフ連鎖モンテカルロ)というベイズ推論手法を利用して統計モデルを作成・評価できます。

  • PyStan: Stanは高度な統計モデリングを可能にするためのプログラミング言語で、PyStanはそのPythonインターフェースです。

  • ArviZ: ベイズ統計モデルの結果を視覚化することを目的としています。PyMC3やStanなど他のベイズモデリングライブラリと組み合わせて使用されます。

  • emcee: Pythonで実装された純粋なMCMCサンプリングのためのライブラリで、ベイズ統計学だけでなく、他の統計モデリングにも適用できます。

3.ガウス過程

 ガウス過程のライブラリは下記の通りです。ガウス過程は無限次元の確率分布で関数の挙動を確率的にモデリングします。これらのライブラリはガウス過程のモデリングを支援します

  • scikit-learn:機械学習で有名なPythonライブラリ

  • GPy: カーネル法とガウス過程を組み合わせて、データの非線形なパターンをキャプチャすることができます。

  • GPyOpt: GPy上で構築されベイズ最適化に特化しています。最適化問題を解く際に用いられます。

  • GPflow: ガウス過程モデリングに特化したライブラリで、TensorFlowをバックエンドに使用します。深層学習との組み合わせが可能です。

  • GPytorch:Wilsonにより開発されたPytorchをバックエンドに使用したガウス過程回帰モデリング用のライブラリ。

【実装用の参照記事】

4.ブラックボックス最適化/ベイズ最適化

 ブラックボックス最適化のライブラリは下記の通りです。ブラックボックス最適化は最適な解を見つけるために目的関数を評価する問題に対して使用されます。

  • Optuna: ハイパーパラメータのチューニングを自動化するためのライブラリです。ベイズ最適化等を含むいくつかのアルゴリズムを提供します。

  • Ray: Rayは大規模な分散型計算のためのフレームワークです。機械学習やその他の高度な計算を分散環境で効率的に行うためのツールを提供します。Tuneというサブパッケージは、ハイパーパラメータチューニングのためのライブラリで、ベイズ最適化を含む複数の最適化アルゴリズムを提供します。

  • BoTorch:BoTorchはFacebookが開発を主導するベイズ最適化用Pythonライブラリです。ガウス過程部分にはPyTorchを利用した実装であるGPyTorchを利用していますが、獲得関数や候補点提案などに関する最新の手法をサポートしており、最小限の労力で最新のベイズ最適化を実行できます。特に獲得関数の工夫により、複数点の同時提案や多目的最適化などに対応できる点が特徴です。

  • COMmon Bayesian Optimization Library ( COMBO ):機械学習で使われるベイズ最適化のPythonライブラリ。データ数に対して線形に計算コストが増大するので、大きな特徴空間でベイズ最適化を行うことが可能。ハイパーパラメータは第二種最尤推定に基づいてデータから自動的に学習される。

  • PHYSBO(optimization tool for PHYSics based on Bayesian Optimization):COMBO(COMmon Baysian Optimization)をもとに、主に物性分野の研究者をターゲットに開発されました。 物理、化学、材料分野において、データ駆動的な実験計画アルゴリズムによって科学的発見を加速する、という試みが多く行われています。

  • pyGPGO:-

5.確率的グラフィカルモデル(ベイジアンネットワーク等)

 確率的グラフィカルモデル(ベイジアンネットワーク)のライブラリは下記の通りです。確率的グラフィカルモデルは、確率変数間の複雑な依存関係を視覚化し分析するためのツールです。

  • BayesianNetworks: 事象間の因果関係を表現したネットワークを作成し、新たな観測データに対する予測を可能にします。

  • pgmpy(Probabilistic Graphical Models using Python): 確率的グラフィカルモデル(ベイジアンネットワークやマルコフネットワークなど)の学習と推論を行うためのライブラリです。

6.ベイズ機械学習

 ベイズ機械学習のライブラリは下記の通りです。ベイズ機械学習では、不確実性を考慮しながらモデルを学習・改善します。下記のライブラリは深層学習とベイズ推論を組み合わせて予測モデルを作成できます。

  • Pyro: Uber AI LabsからリリースされたPyroは、深層学習と確率的プログラミングを統合するためのライブラリです。これにより、ベイズ推論と深層学習を組み合わせた複雑なモデリングが可能になります。

  • numpyro: Pyroの派生ライブラリで、JAX(Googleが開発した数値計算ライブラリ)上で動作します。numpyroは軽量で、大規模なベイズモデルを高速に実行することが可能です。

  • BayesPy: ベイズ推論のためのPythonライブラリで、変分推論アルゴリズム(事後分布を近似する手法の一つ)を提供しています。

  • InferPy: TensorFlowを使用した確率的ディープラーニングモデルのための高レベルAPIを提供します。ベイズ統計学の知識を持つデータサイエンティストがディープラーニングのモデルを構築するのを支援します。

  • Bambi:Python用の統計モデル構築ライブラリで、ベイジアンネットワークを構築・推論するのに使用されます。

  • Edward: TensorFlowをバックエンドとして使用し、深層学習とベイズ推論を組み合わせて複雑なモデリングを行うライブラリです。



ベイズ統計学の用語

 用語一覧(メモ用※間違いがあるかもしれないので追って確認)

【基礎知識】

  1. 事前確率(Prior Probability):新しいデータが観測される前の、ある事象が発生する確率。

  2. 尤度(Likelihood):ある事象が起こる確率を、別の事象が与えられたときに評価します。

  3. 事後確率(Posterior Probability):新しいデータが観測された後の、ある事象が発生する確率。

  4. 最大事後確率推定(Maximum A Posteriori, MAP):事後確率が最大となるパラメータを探す推定方法。

【ベイズ関係】

  1. ベイズの定理(Bayes' Theorem):ある事象Bが起こったときに別の事象Aが起こる確率を求めるための定理。

  2. ベイズ線形回帰(Bayesian Linear Regression):線形回帰モデルにベイズ推定を適用した手法。

  3. ベイズ推論:事前分布とデータから事後分布を求めるプロセスのことをベイズ推論と言います。これは、新しいデータを取得するたびに事後分布を更新しその事後分布を次の事前分布として使用します。

  4. ナイーブベイズ:特徴間の依存性を無視し、すべての特徴が互いに独立であると仮定する単純なベイズ分類器です。その仮定は"ナイーブ(単純)"であることから名付けられました。

  5. 変分ベイズ:事後確率分布を近似的に求める手法の一つで、具体的には、計算上扱いやすい形の分布を使って真の事後分布を近似します。

  6. ベイズネットワーク(Bayesian Network):確率的な事象間の依存関係を視覚的に表現するためのグラフです。各ノードが変数をエッジが変数間の確率的な関係を表します。

  7. ベイジアンモデル比較(Bayesian Model Comparison):ベイズ因子を使って異なるモデルを比較する手法です。モデル間でのトレードオフ(例えば、複雑さと適合度の間のトレードオフ)を考慮することができます。

  8. ベイズ因子(Bayes Factor):異なる統計モデルを比較するための指標で、どちらのモデルがデータをより良く説明できるかを定量的に評価します。

  9. ベイズ更新(Bayesian Update):新たに得られたデータに基づいて事後確率を更新するプロセスです。これは新しい情報を用いて我々の信念を更新する手段となります。

  10. 階層ベイズモデル(Hierarchical Bayesian Model):複数のパラメータが複数の階層を持つベイズ統計モデルです。高いレベルのパラメータが低いレベルのパラメータに影響を与えるという構造を持ちます。

  11. ガウス過程(Gaussian Process):関数の形状を無数のガウス分布(正規分布)で表現する手法です。データに対する不確実性を考慮しながら滑らかな関数を推定することが可能です。

  12. ベイズ最適化(Bayesian Optimization):複雑な関数の最適な入力を効率的に見つけるための手法です。関数の評価が高価であったり、明示的な形が不明であるときなどに特に有用で、探索と活用のバランスを取りながら最適化を進めます。

  13. マルコフ連鎖モンテカルロ法(Markov Chain Monte Carlo, MCMC):ベイズ統計学における事後分布の計算などによく使われるアルゴリズム。

  14. ベイズ情報規準(Bayesian Information Criterion, BIC):モデル選択の際に用いられる規準の一つ。

  15. ベイズ信頼区間(Bayesian Confidence Interval):パラメータの不確定性を評価するための区間。

参考資料

あとがき

 思ってた以上に多い。どれを攻めるのが、汎用性が高いのだろうか・・・・。
 可能性としてはPystan、GPy・GPyOpt, Edward/Pryoあたりかな・・・

この記事が気に入ったらサポートをしてみませんか?