Site cover image

Site icon imageYet Another Blog

Yet Another Blog

Post title iconPRMLのアルゴリズムを実装しました

prml(Pattern Recognition and Machine Learning)に載っているアルゴリズムたちをpythonで実装しました。パターン認識と機械学習, 通称prmlはベイズ的な機械学習の教科書として有名ですがこの本に載っているアルゴリズムを実装しました。gitリポジトリにプログラムはおいてあります。まだ完璧にすべて実装したわけではないですが、とりあえず14章まで一通り実装し終わり、区切りがいいのでブログ記事を書きます。

なんで実装したのか

prmlを一通り読み演習問題も文中で示されているものは解いたもののやっぱり実装してほんとうにうまくいくのかとか試してみたかったからです。prmlは有名な本なので先人たちがいろいろと実装していますがそれを見るだけでは意味がないので自分で実装しようと思いました。

Image in a image block

よかったこと

意味がわからなかったところがわかるようになった

ハイブリッドモンテカルロのところやRVMなどの理解が深まりました。前にprmlを読んでいたときは結局ハイブリッドモンテカルロってどうやってサンプリングするんだ??となっていましたが実装するという観点で読み直すことでサンプリングの仕方や周辺の数学的なことの理解が深まりました。

またRVMは本当に予測に必要なデータ点がトレーニングデータの10%ぐらいになっていて感動します。

numpyの仕様にすこし慣れた

numpyのブロードキャストとかの仕組みをいまいち理解していなかったんですが、この実装をしていく上でブロードキャストがどういうふうに動くかがとてもわかるようになってきました。ほかにも axis とか4次元とかになると微妙に慣れづらいところも理解が進みました。

その他副次的なこと

sphinxでdocumentをつくったり, docstringの書き方やライセンスの種類などをほんのちょっとだけですが知ることができました。

Image in a image block

展望

ニューラルネットワークの章はまだ十分ではないと思うのでそのあたりといろいろとうまくいっていない実装があるのでそのあたりを直したいです(EP法, ロジスティック回帰の混合モデル, など)。

終わりに

ちょっと数学的に面白いと思ったところや工夫ポイントは別の記事に書こうかなと思っています。