でかいチーズをベーグルする

でかいチーズはベーグルすべきです。

無限潜在特徴モデルを実装した

引き続きノンパラベイズ。今回はノンパラベイズ本の7.4節で説明されてる無限潜在特徴モデル(Infinite latent feature model; ILFM)を実装した。

無限潜在特徴モデル

一言で言えば、潜在次元に無限次元を仮定する行列分解。

与えられたデータ行列 {Y \in \mathbb{R}^{N \times D}} をバイナリ行列 {Z \in \{0,1\}^{N \times K}} と特徴行列 {X \in \mathbb{R}^{K \times D}} の積に分解する。

バイナリ行列の要素 {z_{n,k}} はサンプル n が k 番目の潜在特徴を持つか持たないかを表している。k番目の潜在特徴は {X} のk番目の行ベクトル {x_k^T \in \mathbb{R}^D} で表されている。つまり、あるサンプルのデータベクトル {y_n} は無限個ある潜在特徴のうちのいくつかの和になっている。

通常の行列分解では分解後の行列の潜在次元数 K を予め決めなきゃいけないんだけど、このモデルはノンパラベイズなので決めなくて良い。データから勝手に決まる。さすがノンパラベイズ

モデルの説明とパラメータ推定の説明は上の本に詳しく書いてあるので割愛。

実装

特に注意すべき点はないと思うけど、強いて言うならサンプリングの事後分布を計算するときにunderflowしないように対数のまま正規化してやるくらい。

Infinite Latent Feature Model

実験

alphaを小さく設定してもどうしても真のKより大きな潜在次元数が推定されてしまう。何か間違ってるのかこういうもんなのか判断ができない。相対誤差は十分(?)小さくなってる。

ILFM experiment