Skip to content

Latest commit

 

History

History
162 lines (114 loc) · 7 KB

README_jp.md

File metadata and controls

162 lines (114 loc) · 7 KB
メタツリーモデルに対するアルゴリズムがAISTATS 2025に採択!詳細はこちら

目的

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]
bernoulli_example1

1の出現頻度がtheta=0.7程度であることを確認したら,サンプルを生成し変数xに保存します.

x = gen_model.gen_sample(sample_size=20)

次に,事後分布学習用のモデルを作成します.

learn_model = bernoulli.LearnModel()

事後分布を可視化するメソッドも存在します.(ここではまだデータからの学習を行っていないので事前分布が表示されます.)

learn_model.visualize_posterior()

bernoulli_example2

学習を行うことによって事後分布の密度が真のパラメータであるtheta=0.7の周辺に集中することがわかります.

learn_model.update_posterior(x)
learn_model.visualize_posterior()

bernoulli_example3

オプションとして損失関数を指定することで,その損失関数に基づくベイズリスク関数を評価基準とした最適な推定値が定まります.

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}
}