PRMLの機械学習アルゴリズムを実装してみた

最終更新日:

PRMLこと、「パターン認識と機械学習」 のアルゴリズムをPython (numpyと必要に応じてscipy)でほぼスクラッチで実装する方法を解説した記事です。
対応するjupyter notebookは筆者のgithubのリポジトリ からご覧いただけます。
各記事へのリンク
第3章 線型回帰モデル
ベイジアン線型回帰/エビデンス近似
第4章 線型識別モデル
ロジスティック回帰
第5章 ニューラルネットワーク
フィードフォワードニューラルネットワーク
第6章 カーネル法
Gauss過程回帰
第7章 疎な解を持つカーネルマシン
Support vector分類
第8章 グラフィカルモデル
第9章 混合モデルとEM
混合ガウス分布に対するEM algorithm
第10章 近似推論法
混合ガウス分布に対する変分推論
第11章 サンプリング法
Metropolis-Hastings algorithm
第12章 連続潜在変数
確率的主成分分析
第13章 系列データ
隠れマルコフモデル
第14章 モデルの結合
バギングとブースティング
決定木分類
方針
数式部分はPRMLを読んで理解しているものと仮定します。ですので、この記事ではあまり数式の詳細は解説しません。
その代わり、数式をコードに落とし込む部分について事細かに解説します。(e.g.) 数式のどの変数がコード内のどの変数に対応していて、どういう形のarrayにしているか、など。
python3を用います(3.5以上を仮定しています)。
numpyと、必要に応じてscipyを利用します。scipyを利用するのは主に特殊函数や最適化, 線型代数の部分の予定です。scikit-learnはデータセットを持ってくるときに使用することもあります。
関連記事
既に同じ趣旨の記事として@ctgk さんのPRMLのアルゴリズムをPython(ほぼNumpyだけ)で実装という人気記事があります。
ただ、扱うアルゴリズムに違いがあったり、アプローチも異なったりしますので、新しく書く価値はゼロじゃないかなと思います。
筆者の記事に興味を持った方は、ぜひ@ctgkさんの記事もご覧いただければと思います!
この記事を書き始めた理由
以下、与太話。
実はこの記事の中身は、既にだいぶ前に自分の勉強用にjupyter not

サイト名: Qiita
2018年9月20日

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する