BayesMLは,ベイズ統計学やベイズ決定理論に基づく機械学習の研究,教育,活用を促進し,社会に広く貢献することを目的としたライブラリです.
BayesMLは以下の特徴を持っています.
- データからの学習による事後分布の更新と,ベイズ基準のもとでの最適推定値の出力というベイズ統計学,ベイズ決定理論の理念がライブラリの構造に反映されています.
- 学習アルゴリズムの多くはデータ生成確率モデルと事前分布の共役性を効果的に用いているため,MCMC法などの汎用的なベイズ学習アルゴリズムと比べて非常に高速で,オンライン学習にも適しています.
- 2~3次元空間上で,データ生成確率モデル,生成された人工データ,学習された事後分布を可視化するメソッドが全てのパッケージに備わっています.そのため,人工データの生成と学習を通じて確率モデル,アルゴリズムの特性を効果的に把握することができます.
詳細はWebサイトをご覧ください.
- メタツリーモデルに対するアルゴリズムがAISTATS 2025に採択されました.サンプルコードはこちらをご覧ください.
以下のコマンドによりインストール可能です.
pip install bayesml
BayesMLの実行には以下が必要です.
- Python (>= 3.7)
- NumPy (>= 1.20)
- SciPy (>= 1.7)
- MatplotLib (>= 3.5)
- Scikit-learn (>= 1.1)
ベルヌーイ分布に従うデータの生成と,そのデータから学習についての例を示します.
まず,データ生成モデルを作成します.ここでは1の生成確率を表すパラメータtheta
を0.7としました.
from bayesml import bernoulli
gen_model = bernoulli.GenModel(theta=0.7)
以下のメソッドによって作成されたモデルの特徴を可視化できます.
gen_model.visualize_model()
theta:0.7
x0:[1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1]
x1:[1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0]
x2:[1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1]
x3:[1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1]
x4:[0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1]
1の出現頻度がtheta=0.7
程度であることを確認したら,サンプルを生成し変数x
に保存します.
x = gen_model.gen_sample(sample_size=20)
次に,事後分布学習用のモデルを作成します.
learn_model = bernoulli.LearnModel()
事後分布を可視化するメソッドも存在します.(ここではまだデータからの学習を行っていないので事前分布が表示されます.)
learn_model.visualize_posterior()
学習を行うことによって事後分布の密度が真のパラメータであるtheta=0.7
の周辺に集中することがわかります.
learn_model.update_posterior(x)
learn_model.visualize_posterior()
オプションとして損失関数を指定することで,その損失関数に基づくベイズリスク関数を評価基準とした最適な推定値が定まります.
print(learn_model.estimate_params(loss='squared'))
print(learn_model.estimate_params(loss='abs'))
print(learn_model.estimate_params(loss='0-1'))
0.7380952380952381
0.7457656349087012
0.7631578947368421
損失関数の設定が異なると,そのもとでの最適な推定値も異なることがわかります.
現在,以下のモデルに関するパッケージが利用可能です.本ライブラリでは,データ生成確率モデル,事前分布,事後分布(または近似事後分布),予測分布(または近似予測分布)を合わせてモデルと呼んでいます.
また,今後はより複雑な階層的モデルを取り扱うパッケージを追加していく予定です.
BayesMLへのコントリビューションを考えてくださってありがとうございます.詳細についてはこちらをご覧ください.
学術的な成果にBayesMLをご利用いただく際は以下の文献参照をお示しいただければ幸いです.
プレーンテキスト
Y. Nakahara, N. Ichijo, K. Shimada, Y. Iikubo,
S. Saito, K. Kazama, T. Matsushima, BayesML Developers, ``BayesML,''
Python package version 0.3.0,
[Online] https://github.com/bayesml/BayesML
BibTeX
@misc{bayesml,
author = {Nakahara, Yuta and Ichijo, Naoki and Shimada, Koshi and
Iikubo, Yuji and Saito, Shota and Kazama, Koki and
Matsushima, Toshiyasu and {BayesML Developers}},
title = {{BayesML}},
howpublished = {Python package version 0.3.0},
note = {\url{https://github.com/bayesml/BayesML}},
year = {2025}
}