StatModeling Memorandum

StatModeling Memorandum

StanとRとPythonでベイズ統計モデリングします. たまに書評.

トピックモデル の検索結果:

統計・機械学習・R・Pythonで用途別のオススメ書籍

…しかし、主成分分析やトピックモデルなどの行列分解や、ガウス過程などのカーネル法のような様々なデータ解析の手法に一歩踏み込むと、きちんとした勉強が必要になります。理解しやすくて使いやすくて、統計や機械学習への応用を主眼においた線形代数の本はまだ見たことないです。機械学習シリーズとかで基礎から「The Matrix Cookbook」*1までを視野に入れた本が出てきてくれると良いのですが。 以下では個人的な好みの教科書を挙げておきます。「線形代数とその応用」です。ちなみにこれは第…

NUTSとADVI(自動変分ベイズ)の比較

…glm.fit.R トピックモデルのLDA データ(data2)とStanコードは以前の記事と同じものを使いました。時間も測り直しました。 NUTSの場合: 4900.91 seconds (Total) (iter=1000, warmup=500, chains=1, seed=123で実行) ADVIの場合: 116.31 seconds (Total) (output_samples=2000, seed=123で実行) 驚きの50倍近いスピードです。結果は以下になり…

変分法をごまかさずに変分ベイズの説明をする

… Kucukelbir, Jon D. McAuliffe (2016) Variational Inference: A Review for Statisticians. arXiv:1601.00670 [stat.CO] [URL] [3] C.M. ビショップ (2012) パターン認識と機械学習 下 [4] 佐藤一誠 (2015) トピックモデルによる統計的潜在意味解析 [5] 岩田具治 (2015) トピックモデル [6] 中島伸一 (2016) 変分ベイズ学習

「使える大学・使えない大学」の事例から考えるアンケートの解析方法

…分かりません。そこでトピックモデルの時と同じように大学のインデックスに対してsumming outする必要があります(summing outについてはこの記事参照)。各kごとにthetaが重みの混合正規分布から生成したと考えていることに相当します。このループはV*(W-10)*U回まわりますので時間がかかるようになります。 キックするRコードは以下になります。 library(rstan) rstan_options(auto_write = TRUE) options(mc…

分布から見た線形モデル・GLM・GLMM

…人数等のモデリング トピックモデルシリーズ 1 概要 階層ベイズモデルで勝敗データからプロ棋士の強さを推定する 最後にスライドを作成するにあたって使ったRコードとパラメータを載せます。 library(ggplot2) library(gamlss.dist) xaxis <- -50:50/10 amp <- 2 rot.m <- matrix(c(0, 1, -1, 0), 2, 2, byrow=T) beta0 <- 1 sigma <- 1 beta1 <- 1 x…

トピックモデルシリーズ 7 DTM (Dynamic Topic Model) の一種

最後はおまけでLDAに時系列を組み合わせた実装を試してみたので紹介します。 今まで「文書」と呼んできたものを「ユーザー」、「単語」と呼んできたものを「アクセスしたWebページ(≒アクション)」と考えます。ユーザーが1日目~31日目までV種類のWebページにアクセスしたデータがあるとします。そしてユーザーの興味のあるトピックの分布(トピック混合比)が時間によって変化すると考えます。ある人は興味が移りやすく、またある人は移りにくいでしょう。そんな状況をモデリングします。 この記事…

トピックモデルシリーズ 6 GaP (Gamma-Poisson Model)

この記事の表記は以下です。Wがbag-of-wordsの行列を表すことに注意してください。 右2列は定数については数値を、そうでないものについてはR内の変数名を書いています。データは前の記事参照。 LDAの記事で、『別の視点から見ると、LDAがやっていることは、文書の特徴を大きな単語次元(V)から小さなトピック次元(K)に圧縮していることに相当します』と書きました。少し一般化して考えますと、LDAとはM×Vの行列であるW(bag-of-words)を、M×K行列であるとK×V…

トピックモデルシリーズ 5 PAM (Pachinko Allocation Model)

LDAの不満点の一つとしましては、トピック間の関係性を全て無視しているところです。例えば、「政治」と「経済」なんかは相関ありそうですよね。そういうトピック間の相関を考慮したモデルとしてはCTM(Correlated Topic Model)があります。実はStanのマニュアルでもCTMは実装されています(githubではここ)が、サンプルデータとサンプルプログラムをそのまま実行しても全く収束する気配がなくて殺意がわきます。またCTMの弱点としては2つのトピックの間の関係しか考…

トピックモデルシリーズ 4 LDA (Latent Dirichlet Allocation)

このシリーズのメインともいうべきLDA([Blei+ 2003])を説明します。前回のUMの不満点は、ある文書に1つのトピックだけを割り当てるのが明らかにもったいない場合や厳しい場合があります。そこでLDAでは文書を色々なトピックを混ぜあわせたものと考えましょーというのが大きな進歩です。さてこの記事の表記法は以下になります。前回のUMの場合と同一です。 右2列は定数については数値を、そうでないものについてはR内の変数名を書いています。データは前の記事参照。 グラフィカルモデル…

トピックモデルシリーズ 3 UM (Unigram Mixtures)

次にUMを説明します。この記事の表記法は以下になります。 右2列は定数については数値を、そうでないものについてはR内の変数名を書いています。データは前の記事参照。 グラフィカルモデルは以下になります(左: UM, 右: 前回のNB)。 見比べてもらうと分かるのですが違う場所は文書ごとのトピックzがデータからパラメータ(潜在変数)になったところだけです。トピック情報を人手でつけるのは大変ですのでモデルの拡張としては非常に自然です。実はBUGSならば前回のNBのモデルのコードがそ…

トピックモデルシリーズ 2 NB (Naive Bayes)

…りたいところですが、トピックモデル全般的にパラメータが多めでデータが少なめな状況が多く、フルベイズはことごとく失敗しました。 最後にモデルのパラメータ数(Stanで出力される数です。ホントはsimplexの制限があるので実質的な数は少し減ります)や推定にかかった計算時間などは以下の通りです。 項目文書あたりの単語数NBUMLDALDA(Freq)PAMGaPパラメータ数少/多1450?????計算時間少5.5m?????収束具合少○?????lp__少-13892?????計…

トピックモデルシリーズ 1 概要

Stanでトピックモデルを実装するメリット・デメリットについて簡単に触れたいと思います。 メリット 実装がラク。LDAでも30行ぐらい ややこしい推論部分は一切実装しなくてOK。全部Stanのサンプリングにお任せ モデルの拡張が簡単 デメリット 計算が遅い。文書x単語種類が1000x1500・総単語数12000のケースでは トピック数が20, iter=1000で9時間, iter=10000で35時間でした データが少ないと収束しない。特に単語種類が多いのに1文書あたりに含…