« トピックモデルの表記比較 (いつも思うんですが、専門家のみなさん記号を統一していただけませんかね) | メイン | 読了:佐藤(2017) 人工知能と政治 »
2017年9月13日 (水)
Roberts, M.E., Steward, B.M., Tingley, D. (in preparation) stm: R package for structural topic models.
構造的トピックモデルのRパッケージ stm のvignette。いつ書かれたものかもよくわからないのだが、J. Statistical Softwareの判型になっているから、投稿中かなにかなのかも。
いわく。
構造的トピックモデル(STM)とは、トピックモデルに文書に付与されたメタデータを統合したモデル。トピックを抽出すると同時に、トピックとメタデータとの関連性を推定する。
モデルの説明。
通常のトピックモデルと同じく、語のカウントの生成モデルを考える。なお、メタデータがなかったら、STMはBleiらの相関トピックモデルと同じである。
文書を$D_1, \ldots$, 単語を$w_1, \ldots$, トピックを$T_1, \ldots, T_k$とする。文書$d$のメタデータを$X_d$とする。メタデータは次の2種類に分けて指定できる。
- 文書とトピックの関連性の強さ(topical prevalence)を説明する共変量。[下記の生成モデルでいうと、$\mathbf{\theta}_d$の生成に使う共変量]
- 文書内の単語(topical content)を説明する共変量。[$\beta_{d,k}$の生成に使う共変量]
生成モデルは次の通り。
- 文書レベルのトピックへの注意をドローする。
$\mathbf{\theta}_d | X_d\gamma, \Sigma \sim LogisticNormal(\mu=X_d\gamma, \Sigma)$
[さっそくここで躓いてしまったんだけど... $\mathbf{\theta}_d$ (原文では太字ではなく上矢印)はカテゴリ数$k$の離散確率分布だと思うんだけど? これだと要素の和が1にならないのではないだろうか] - 文書ごとの単語分布をつくる。
$\beta_{d, k} = \exp(m + \kappa_k + \kappa_{g_d} + \kappa_{i = (k, g_d)})$
ただし、$m$はベースライン単語分布, $\kappa_k$はトピック$k$における偏差、$\kappa_{g_d}$は共変量グループ$g$における偏差, $\kappa_{i = (k, g_d)}$は交互作用。[ここもよくわからんのだが、$\beta_{d, k}$は語彙数の長さを持つ離散確率分布だろうに、なぜ$\theta$と同様に上矢印をつけないのか。和が1だという制約はどこでかかるのだろうか] - 以下、文書の各単語($n \in 1, \ldots, N_d$)ごとに、
- 単語ごとにトピックをドロー:
$z_{d,n} | \mathbf{\theta}_d \sim Multinomial(\mathbf{\theta})$ - 単語をドロー:
$w_{d,n} | z_{d,n}, \beta_{d, k=z} \sim Multinomial(\beta_{d, k=z})$
- 単語ごとにトピックをドロー:
推定はsemi EMアルゴリズムを用いた変分的推定である、とのこと。[よくわからんが変分ベイズ推定だということかしらん]
stmパッケージの使い方の説明。
初期値決定はスペクトル分解による決定論的方法がお勧めだが、まず崩壊型ギブスサンプラーでLDAモデルを推定するとか、ランダムに決めるというオプションもある。
ちゃんと読んでないので省略するか、データ準備からモデル評価、トピック数決定、結果の視覚化まで、これでもかっていうくらいにいろんなヘルパー関数がある。
云々, 云々...
他のパッケージとの比較。
相関トピックモデルはtopicmodelsパッケージでも推定できるけど、こっちのほうがパフォーマンスが良い。云々, 云々...
... とかなんとか。途中からはパラパラめくっただけだけど、いずれに必要になったらきちんと読もう。
論文:データ解析(2015-) - 読了: Roberts, Steward, Tingley (in preparation) 構造的トピックモデルのRパッケージ stm