(前節もそのようにしており、これが、論文の表記とのずれになります)[4]の式(9)の各項は、今仮定している分布において、それぞれ式(10)と式(12)になっています。関するところを取り出すと、[2]の式(8)となります。これで、なぜ高速化できるのでしょうか。これは、単語一つずつに対してtopicを推定するのではなく、事前に文書毎に単語をカウントし、出現する単語の項のみを考慮することによって、単語に関するsoftmaxや内積計算を大幅に減らすことができるからです。これによって、高速化を達成しています。STMの使い方[2]に沿って、どのような場面で使われているかの例をご紹介します。中国に関する報道について、各メディアによってどのように異なっているのかを分析しています。著者は各トピックの頻度の高い単語とそのトピックの割り当てが大きい記事を読んで、トピックに名前づけをしています。Covariate(Y)の使い方[2]のFig6は、中国政府の政策に関するトピックについて、どのメディアかの情報をCovarianceとして付与した場合のトピックの単語の差異です。fowardと行った発展を想起させる単語が多く含まれています。Sciencesを一部改変Prevarence(X)の使い方[2]のFig7では、法輪功弾圧についての分析を行なっています。平均値になります(これは、ダミー変数を使用している場合、回帰係数の値と同じです)。このことから、法輪功弾圧についてもっとも述べているメディアはAPであることがわかります。以下では、アルゴリズム部分の実装について一部解説します。変分推論を行なっているため、基本的には、VB-EstepとVB-Mstepに分けています。属性情報毎にアルゴリズムが変わるため、抽象化を行なっています。VB-EstepVB-Estepでは、etaの更新とその後に必要なパラメータの計算を行なっています。[積分消去による高速化]の影響は以下の部分になります。indexの仕組みを利用し、行列の一部を切り出して計算を行います。i]自体は、準ニュートン法で更新しています。目的関数と勾配の計算はそれぞれ以下部分です。更新を行なっています。以下の計算をするのみです。以下の通り、平均をとります。以下の通り、回帰を行います。今回、回帰も変分推定で実装しています。self.Gamma)についてCovariateがない場合Estepで計算した、各トピックでのカウントの期待値を用いて、以下の通り確率にします。np.newaxis]Covariateがある場合SAGEのアルゴリズムを適用します。最適化計算をする前の前処理部分が長いので、目的関数と勾配部分のみ示します。文書ートピック分布と単語ートピック分布はLDAで初期化しています。LDAでの初期化およびその周辺のコードはこちらを使用しています本家のRの実装では、SAGE部分の実装をポアソン回帰を利用した実装になっています。同様に実装しましたが、発散してしまったため、SAGEの元論文のアルゴリズムで実装しています。Modelは、計量政治学から出てきた手法であるため、あまり知られてはいませんが、BoWでトピックモデルを行うのであれば、もっとも使い勝手の良い手法ではないかと思っています。文書に付与された属性情報と合わせて見ることができるので、既存のアルゴリズムより少ないデータでも、分析に耐えうるものと思われます。できるなどありましたらtwitterのメンションやDMなどでご連絡ください。»ABOUT株式会社レトリバの技術ブログです。レトリバのリサーチャー及びエンジニアが分担して技術的な記事を載せていこうと思います。Inc.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。