Python
numpy
PRML
機械学習

PRMLのアルゴリズムをPython(ほぼNumpyだけ)で実装

More than 1 year has passed since last update.

自分の勉強(機械学習のアルゴリズムやPythonの勉強)のためにPRMLに掲載されている手法をPythonで実装していきます。

原則としては、アルゴリズムの部分ではPythonの標準ライブラリに加えてNumpyだけ使用可能としていきます。scikit-learnやtensorflowなどの機械学習パッケージは使いません。matplotlibなどの結果を図示するパッケージはアルゴリズムの実装と関係がない限りは使っていきます。また、必要になったらscipyなどの他のパッケージもたまに使っていきます(すでにディガンマ関数などに使用)。ただし、最適化ツール(例えばscipy.optimizeやtensorflowの自動微分機能)などの実装を著しく簡単にするものは使いません。

基本的には、章ごとに一つの手法を実装していきます。一通り終われば二周目に入るかもしれません。自分の勉強のためのものなので、なんでもかんでも詳しく説明していくことはしません。自分で見返すのに要らないと判断した説明は省いていきます。

記事

実装済みの記事へのリンク、実装予定の手法一覧です。

PRML 記事
第1章 序論 ベイズ曲線フィッティング
第2章 確率分布 スチューデントのt分布
第3章 線形回帰モデル エビデンス近似
第4章 線形識別モデル ベイズロジスティック回帰
第5章 ニューラルネットワーク 誤差逆伝播混合密度ネットワーク
第6章 カーネル法 ガウス過程回帰
第7章 疎な解を持つカーネルマシン 関連ベクトル回帰
第8章 グラフィカルモデル 積和アルゴリズム
第9章 混合モデルとEM 混合ガウス分布の最尤推定
第10章 近似推論法 変分混合ガウス分布
第11章 サンプリング法 マルコフ連鎖モンテカルロ
第12章 連続潜在変数 ベイズ的主成分分析
第13章 系列データ 隠れマルコフモデルの最尤推定
第14章 モデルの結合 条件付き混合モデル

終わりに

とりあえず最終章までモデルをひとつずつ選んで実装しました。この企画をする前にPRMLを一通り読んでいたのですが、そのときは理解があやふやだったものや飛ばした部分などをいくつか拾うことができたかなと思います。

この企画で実装したモデルは私のGithubアカウントのところでも公開していってます。記事にしていないモデル(SVMなど)の実装も公開していっているので、よかったら見ていってください。