mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
||||||||||||||||||||||||||||||||||||||||||||||
lda のページを修正。ファイルも新しくなっています。今日はちょっとつかれてるみたい なんで続きは後日..。
% make % ./lda -N 20 train modelのようにすれば使えます。 一つだけ注: 工藤君の plsi を使っていた方は, 基本的にそのまま使えますが (ということを意識して作ってある), featureのIDが 1始まり になっています (SVMlightと同じ。MATLAB版との整合性の意味もあります。)
"Note"に書いたけど, 完成してからたまたま Google で検索していて,
ほとんど同じ時期に Blei 自身がパッケージ
LDA-C
を公開しているのに気付いた。
ただ, 試してみると, かなり遅く感じる。具体的には, Cranfield 1397記事に対して,
同じ条件で(iteration の数を揃えているので, 少し速め),
lda-c% ./lda est 0.01 20 mysettings train random logs lda-c% cat logs/011.other num_topics 20 num_terms 1325 alpha 4.6451764357という感じで, どうもトピックの prior を均一な分布にして (Dir(α0,α0,..,α0) ということ)絶対値だけ推定しているような模様。最近の nonparametric Bayes の方向を考えると, これはちょっと?が付く感じ。 (Bleiがそのことを知らないはずはないので, 何か考えがあるのかも知れないけれど。)
static const double neginf = - 1.0/0;調べてみると, このコードは gcc 2.95 では通るが, gcc 3.2以降では warning を吐く 模様。
static const double neginf = - 1.0/0.0;0 は自動的に double に型変換されるので上でもいいはずなのだけど, 下のように /0.0 と double で割っている場合は自然な結果として, あるいは意図的に∞を返す のであろうのに対して, 上の場合はコーディングミスであることが多かろう ということではないか, という予想。 Minka が書いた時は gcc 2.95以前だったので, 警告にならなかったのかも。
というわけで, Cで数学的な性質上∞や不定値を返さなければいけない場合 (わかりやすい例だと, tan(x) で x = π/2 + nπ の場合など)では,
#define inf (1.0/0.0) #define nan (0.0/0.0)としておけば使えるようです。
めきめきと有力候補となってきたのが文書を代表する単語をとる学習器作成と それによる極少数のfeatureによる文書分類。ちょっと考えたらとりあえずできることに気付いた。
基本は, 「その単語を外したらどうなるか (Leave-one-out)」を考えること。 その際に, 何らかの評価値を最大化するような語を探す。
classification でやるなら, その語がある文書で出なかった場合, classification error の期待値が最大になるような語を求める, などするのだと思う。
ベイズ的にやるなら, Uber SVM で話した Latent Dirichlet kernel と同じ方法が
使える。ある語 $w$ を外した時に得られるトピックの分布 p(θ|d\w) と,
元のトピック分布 p(θ|d) の KL-divergence が最大になるような語 w を代表語
とすればよい(多分)。
VB-EMをやって得られるトピック分布はその文書の"意味"
(という言い方はあまり使いたくないが) のようなものを表しているので,
この KL-divergence 最大化は, 「ある語を外した時に文書の"意味"がどれくらい
ビット落ちするか」を表していることになる。
技術的に言うと, a とか the のような機能語はどの隠れクラスからも高い確率で
出るので, 外しても事後分布にはほとんど影響しないはず。そういう意味で,
このやり方で事後分布を支配するような単語 w がとれる。(回数も事後分布に
関して考慮されるので, salient な語が複数回出現していればそれだけ候補に
なりやすいことに注意。)
他にも方法はあるかと思うが, これはかなり自然な方法だと思う。
他にやることがあるので, 僕はやらないけど。
タイトル一覧 |