タグ

ブックマーク / qiita.com/Gordian_knot (4)

  • PRML第12章 ベイズ的主成分分析 Python実装 - Qiita

    今回の記事ではベイズ的主成分分析を実装します。対象とするデータが存在する観測空間(高次元)から潜在空間(低次元)への射影を求めるというのが主成分分析(PCA: Principal Component Analysis)の主な使い方だと思います。可視化が目的ならば潜在空間を2(もしくは3)次元にしますが、データの前処理としてだと潜在空間の次元をいくつに設定すればいいのかわかる状況は稀だと思います。寄与率を計算してという方法もありますが、結局そのときの閾値は私たちが設定しないといけません。そこで、ベイズ的主成分分析では関連度自動決定によって自動的に潜在空間の次元を決定します。 確率的主成分分析 主成分分析を確率的に解釈することで、後々ベイズ的な取り扱いができるようになります。 確率的主成分分析では、私たちが観測したデータ$x$(D次元)は、潜在空間からサンプルされた$z$(M次元)を行列$W$

    PRML第12章 ベイズ的主成分分析 Python実装 - Qiita
  • PRML第11章 マルコフ連鎖モンテカルロ Python実装 - Qiita

    今回はマルコフ連鎖モンテカルロ(MCMC)の代表例であるメトロポリスアルゴリズムを実装しました。ガウス分布や一様分布などの有名な確率分布だけでなく、もっと形が複雑な分布からもサンプリングしたいときによく用いられる手法です。 メトロポリスアルゴリズム ある確率分布$p(x)={1\over Z_p}\tilde{p}(x)$からサンプリングすることを考えます。規格化定数$Z_p$は分からなくても構いません。ベイズの定理とかで確率分布を求めるときに規格化定数が分からないことがよくあります。 分かっているのは規格化されていない関数$\tilde{p}(\cdot)$だけなのでここから直接サンプリングはできません。そこで提案分布と呼ばれる直接サンプリングできる別の確率分布(例えば、ガウス分布)を用意します。ただし、提案分布は対称なものとします。 メトロポリス法の流れ 1. 初期値$x_1$を設定

    PRML第11章 マルコフ連鎖モンテカルロ Python実装 - Qiita
  • PRML第10章 変分混合ガウス分布 Python実装 - Qiita

    今回は前回の記事の最後に言っていた変分混合ガウス分布を実装しました。前回はEMアルゴリズムを用いて混合ガウス分布のパラメータを最尤推定しましたが、今回は変分ベイズ法を使って混合ガウス分布のパラメータをベイズ推定します。前回の実装では混合ガウス分布の混合要素数をこちらが設定していましたが、変分ベイズ法を用いることで自動的に混合要素数を決定してくれます。他にもベイズ的に扱う利点がいくつかあります。 通常の混合ガウス分布の最尤推定では混合係数$\pi_k$、平均$\mu_k$、共分散$\Sigma_k$(もしくは精度$\Lambda_k$)を最尤推定しましたが、今回はそれら全てが確率変数だとしてその確率分布を推定します。 今回用いるモデルをグラフィカルモデルにしたものが下の図(PRML図10.5より抜粋)です。 これらの確率変数全ての同時分布は p({\bf X}, {\bf Z}, {\bf

    PRML第10章 変分混合ガウス分布 Python実装 - Qiita
  • PRML第9章 混合ガウス分布 Python実装 - Qiita

    でフィッティングすると、 このようになってしまい、このケースでは単峰のガウス分布は適切なモデルではありません。データ点が3つの群に分かれていることに着目すると、今回の場合は3つのガウス分布を用いた混合ガウス分布 が適切なモデルであると考えられます。ただし、$\sum_k\pi_k=1$とします。それぞれ${\bf\mu}_1$が上、${\bf\mu}_2$が右下、${\bf\mu}_3$が左下のデータ点の塊の平均のようにします。よって塊ごとにガウス分布でフィッティングすればいいのですが、どのデータ点がどの塊に属するのかは私たち人間には一目瞭然ですが、機械にはそんなことは分かりません。 N個のデータ点の座標$\{{\bf x}_n\}_{n=1}^N$を観測変数として、どのデータ点がK個の塊のうちどれに属するかを1-of-k符号化で表す潜在変数$\{{\bf z}_n\}_{n=1}^N$と

    PRML第9章 混合ガウス分布 Python実装 - Qiita
  • 1