【目次】
・トピックモデルとは
・トピックモデルの歴史
・トピックモデルでできること
・トピックモデルを理解するために必要な知識
・トピックモデルの手法について
・トピックモデルの実行方法について(R言語)
・トピックモデルの評価方法について
・Correlated Topic Models (CTM)について
・PAM:Pachinko Allocation Modelについて
・Relational Topic Models(RTM)について
・参考文献
トピックモデルとは
・一つの文書に複数の潜在的なトピック(話題・分野・文体・著者など)、文書ごとのトピック分布、トピックごとの単語分布を仮定して、テキストからトピックを推定するモデル。文書に限らず、様々な離散データに隠された潜在的なトピックを推定するベイジアンモデル。幅広いドメインでの離散データで有効とされている。
トピックモデルの歴史
1998年:pLSA(probabilistic Latent Semantic Analysis)
2003年:LDA(Latent Dirichlet Allocation)
2004年〜:拡張モデル
2007年〜:大規模データのための高速化
トピックモデルでできること
・人を介することなく、大量の文書集合から話題になっているトピックを抽出できる。
・文書データだけでなく、画像処理、推薦システム、ソーシャルネットワーク解析、バイオインフォマティクス、音楽情報処理などにも応用されている。
・確率過程を用いて、ノイズを取り除き、本質的な情報を抽出できる。
トピックモデルを理解するために必要な知識
・確率
-確率分布
-ベルヌーイ分布
-カテゴリ分布
-ベータ分布・ガンマ分布
-ディリクレ分布
・ラグランジュ未定乗数法
・ユニグラム
-BOW(Bag of words)
-ユニグラムモデル
・混合ユニグラムモデル
・混合モデル
・EMアルゴリズム
・最尤推定
・ベイズの定理
-ベイズ推定
-ベイズ予測分布
-ハイパーパラメータ推定
-モデル選択
-変分ベイズ推定
-ギブスサンプリング
トピックモデルの手法について
推定方法としては以下の三つが提案されている。
・最尤推定
・変分ベイズ推定
・ギブスサンプリング
一部のパラメータを積分消去して、トピック集合の事後分布を推定
↓
文書集合とトピック集合の同時分布を導出
↓
単語ごとにトピックをサンプリングする
↓
サンプリングされたトピックからトピック分布と単語分布を推定
↓
周辺同時尤度を最大化させるハイパーパラメータαとβを推定する
※LDAのギブスサンプリングはLDAが共役性に基づいたモデリングであるため効率的な計算が可能とされる。
ハイパーパラメータを適切にデータから学習すれば、MAP推定・変分ベイズ推定・ギブスサンプリングの性能の差は大きく出ないという研究結果があるらしい。(なお、MAP推定だと、クロスバリデーションを行い、尤度を最大化させるハイパーパラメータを見つけなければならない。)
トピックモデルの実行方法について(R言語)
以下のパッケージで実行可能だが、新しい手法などにはまだ対応していない。
lda(CRANのPDF)
topicmodels(CRANのPDF)
以下はtopicmodelsパッケージの実行コードであるが、BOW形式のデータがあれば、実行はすぐにできる。
ただし、パープレキシティなどを計算しながら、ハイパーパラメータのチューニングをする必要がある。
1 2 3 4 |
library(topicmodels) k <- 10 #トピック数 LDA_estimate <- LDA(bagofwords, k, method="Gibbs",control=list(alpha=alpha,verbose=1, iter=10000,burnin=1000,delta=delta)) |
時間があれば、ソースコードを見て自分で書けるようにしたい。
ちなみに、HDP-LDAはPythonのgensimに用意されているようです。(gensimへのリンク)
トピックモデルの評価方法について
-確率モデルの性能を評価する尺度として、テストデータを用いて計算する。
-負の対数尤度から計算できる。
-低いパープレキシティはテストデータを高い精度で予測できる良い確率モデルであることを示す。
-全ての語彙が一葉の確率で出現するモデルのパープレキシティは語彙数Vになり、性能が悪いと考えることができる。
-このパープレキシティが小さくなるようなトピック数やパラメータの設定が必要。
Correlated Topic Models (CTM)について
トピックモデルは 「各トピック k の間には相関がない」という前提のもとに成り立つ手法ですが、本当にトピック間に相関はないのでしょうか。「本当は相関のあるトピック」を無理やり「相関のないトピック」に分割している可能性が高いので、相関を加味したモデルが必要です。そこで、トピックの生成割合を決める際に、トピック間の相関を持つように多次元の正規分布を用います。ただし、その代わりに共役的な分布を持たないため、従来のギブスサンプリングではサンプリングが非効率になることから変分ベイズを用いる必要があります。
PAM:Pachinko Allocation Modelについて
CTMは各トピックが同じレベルにあるため、トピック間の階層構造を表すことができません。
自動車にとっての、セダンやトラック、あるいはお酒にとってのワインやビールのようにトピックに関しても階層構造があることは想像に難くありません。トピック間の関係・相関を一般的に表現するモデルで、トピック間の階層構造を基本として、パチンコ玉が落ちるように単語を生成します。パチンコ玉が落ちるというのは、向きが一方行の有向かつ非巡回ノードが連想されます。分布に関しても共役なので、ギブスサンプリングでサンプリングが可能です。
2016/04/24の段階ではまだGensimでモデルの開発はなされていないようです。
Pachinko Allocation Model
ちなみに、論文はこちらです。
Pachinko Allocation: DAG-Structured Mixture Models of Topic Correlations
Relational Topic Models(RTM)について
文書の中身だけでなく、文書間のリンクの生成過程も同時に確率モデル化する手法。論文や特許データに対して活用できる。過去の購買行動に応じた、顧客のセグメント解析や商品のレコメンデーションに活用できるかもしれない。
参考文献
『トピックモデル (機械学習プロフェッショナルシリーズ)』
『トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)』
Tokyo Webmining 46th 『トピックモデルことはじめ』
machine_learning_python/topic.md