SlideShare a Scribd company logo
Latent Dirichlet Allocation入門

        @tokyotextmining
           坪坂 正志
内容
• NLPで用いられるトピックモデルの代表である
  LDA(Latent Dirichlet Allocation)について紹介
  する
• 機械学習ライブラリmalletを使って、LDAを使
  う方法について紹介する
Why LDA
• 白鵬が単独首位 琴欧洲敗れる
Why LDA
• 白鵬が単独首位 琴欧洲敗れる
• 人は上の文を見て相撲に関係する文である
  ことを理解できる
 – 文中に相撲という単語は出てこないのにもかか
   わらず
Why LDA
• 白鵬が単独首位 琴欧洲敗れる
• 人は上の文を見て相撲に関係する文である
  ことを理解できる
 – 文中に相撲という単語は出てこないのにもかか
   わらず
• 単語は独立に出現しているのではなく、潜在
  的なトピックを持ち、同じトピックを持つ単語
  は同じ文章に出現しやすい
Why LDA
• 文章/単語のトピックを推定すると何の役にた
  つか?
• 文章分類
• 次元削減
• 言語モデル
 – 情報検索[Wei and Croft 2006]
概要
• LDA
  – 確率モデル
  – 推論アルゴリズム
  – ハイパーパラメータの調整
  – 並列化
  – 高速化
• Mallet
  – Malletを使ったLDA
文章生成モデル
• トピック数Tはあらかじめ決める
• 各トピックごとに単語出現確率������������ を生成
 – ディリクレ分布から生成 ������������ ~Dir(������)
• 文章ごとにトピック確率������������ を生成する
 – ディリクレ分布から生成 ������������ ~Dir(������)
 – 各文章において以下のように単語を生成していく
   • ������������ ~Multi(������������ )と単語のトピックを生成する
   • ������������ ~Multi(������������������ )とトピックに応じた確率で単語を生成
パラメータは未知
• 実際にはパラメータは推定する必要がある




           [Steyvers and Griffiths 2007]より
推論アルゴリズム
• Bleiの元論文[Blei+ 2003]では変分ベイズを
  使ったパラメータ推定を行っている
• しかし、実用的には後にでたGibbs samplerを
  使ったパラメータ推定法がよく用いられる
  [Griffiths and Steyvers 2004]
 – 一回当たりの計算が軽い
 – 数式が簡単(実装コストが低い)
• 他にもcollapsed変分ベイズという方法もある
  [Teh+ 2007, Asuncion+ 2009]
Collapsed Gibbs sampler
• 文章中の各単語に対して、初期状態としてランダムなトピック
  を割り当てる
• 各単語に関してトピックを逐次更新する
 – 直感的には(文章中でのトピックtの割合) * (その単語におけるトピッ
   クtの割合)
 – 一つの文章では同じトピックがでやすい
 – 単語ごとに出やすいトピックと出にくいトピックがある




  ������������|������ : 文章dに出現するトピックtに属する単語の合計
  ������������|������ : トピックtに属する単語wの合計
  ������⋅|������ : トピックtに属する単語の合計
ハイパーパラメータの影響
• 多くの論文では������, ������を天下り的に設定するこ
  とが多い
 – 実際は������, ������の値によってPerplexityなど変わってく
   る [Asuncion+ 2009]
• また、������ = 0.1などと各トピックの事前パラメー
  タはすべて同じにすることが多い
でも実際は
• ������������ の値をトピックごとに差を設けることにより、
  トピックの出やすさを表現できる




              [Wallach+ 2009]より
他のストップワードへの対応方法
   [Wilson and Chew 2010]
• サンプリングの際の������������|������ などの計算で単語ご
  とに異なる重みづけを用いて計算する
 – 重み付けにはtf-idf, PMIなどを用いる
どうやって推定するか
                 [Wallach+ 2009]より

• 階層的なモデルを立てる




• 一定間隔でハイパーパラメータを最適化する
 – 実用上はこちらが階層的モデルと比べ精度も変
   わらず、高速
 – Malletではこちらを採用
並列化
• マルチコアとかグリッドとか流行ってる
• LDAにおいても並列化しようという話はいくつ
  かある
 – マルチコア[Newman+ 07]
 – グリッド (Mapreduce/MPIを使う)[Wang+ 2009]
 – GPGPU [Yan+ 2009]
並列化
• 更新式
並列化
• 更新式



      文章ごとに独立

• 文章を各プロセッサに分散して配置する
• ������������|������ , ������.|������ は各プロセッサで独立に持つ
  – 定期的にグローバルな値を計算し直し、同期する
  – グローバルな値をmemcachedに持つという話も
    ある[Smola and Narayanamurthy 2010]
並列化
• 1プロセッサあたりの時間/空間計算量
 – プロセッサの数をPとする
 – 各プロセッサには文章が均一に割り当てられて
   いるとする
         時間計算量     空間計算量
 LDA     O(NT)     O(N + (D + W) * T)
 PLDA    O(NT/P)   O(N / P + (D / P + W) * T)
高速化
• トピック数Tが多くなっていくとナイーブな実装
  だと、一回のGibbs samplerにかかる時間が
  O(T)であるため、計算にかかるコストが大きい
• 効率的なサンプリング方法が存在[Yao+ 2009]
更新式の展開
• 更新式を展開する



• 各項のトピックについての総和を保持
サンプリングの高速化
• 一様分布������ ∼ ������(������ + ������ + ������)から乱数を生成
• 経験的に90%以上が������の部分に落ちる
• トピック-単語カウントに相当する項に関して
  高速なサンプリングができればよい



   ������   ������         ������
サンプリングの高速化


• 上の式に従って高速にサンプリングするため
  に������������|������ の降順でトピックからサンプリングされ
  るかどうかを見ていく
高速化のためのデータ構造
• ������������|������ の頻度の降順でならんだ配列を維持する
 – ここで単語の総出現回数よりも非ゼロの要素数が
   少ないことを利用するとメモリが大幅に節約できる
 – Malletでは(トピックID,出現回数)の組を32bitのint
   の形で保持している
    • このため出現回数が多い単語に関してはオーバフロー
      する危険がある

トピックID   3   2   4    1
出現回数     8   6   6    3
高速化の効果
     データセットにはNIPS Dataset(1500文章, 約190万トークン) を使用
     plda(code.google.com/p/plda)とmalletでトピック数を変えたときの
      実行時間を測定
     反復回数は両方ともに100回とした

            3500


            3000


            2500


            2000
実行時間(sec)
                                                                     plda
            1500
                                                                     mallet

            1000


            500


              0
                   0   200   400      600        800   1000   1200
                                   # of topics
高速化の効果
• 前のグラフを対数領域でプロットしたもの
 10000




  1000




                               plda
  100
                               mallet




   10




     1
         1   10   100   1000
Malletとは
• MAchine Learning for LanguagE Toolkit
• Javaベースの統計的自然言語処理、文章分
  類、トピックモデリングなどのパッケージ
• Andrew McCallumを中心として開発が行われ
  ている
Instance
• Malletにおいてデータ一つ一つはInstanceと
  いうオブジェクトで表現される
 – 文章集合中の文章に相当する
• 4つのメンバ変数を持つ
 – Name (Instanceの名前 今回は使わない)
 – Data (入力データ)
 – Target/Label (出力 今回は使わない)
 – Source (Instanceのソース)
Iterator
• InstanceにはIteratorを経由して、アクセスされ
  る
 – XML,ディレクトリ配下のファイルなど様々な入力
   形式に対応できる
• 大抵の場合はCsvIteratorが使える
CsvIterator
CsvIterator(String fileName, Pattern lineRegex,
            int dataGroup, int targetGroup, int uriGroup)

• 対象のfileNameの各行に対してlineRegexで
  マッチを行い、data,target,uri(name)に指定さ
  れたグループの値を代入する
• Ex: name label dataと空白区切りで並んでい
  るデータから読み取る場合
  – new CsvIterator(fileName,
    "(¥¥w+)¥¥s+(¥¥w+)¥¥s+(.*)", 3, 2, 1)
Pipe
• CsvIteratorで読んだInstanceに入っているdata
  は単なるString
  – Malletで扱う形式に変換する必要がある
• Instance Pipe.pipe(Instance inst)
  – 与えられたInstanceを別のInstanceに変換して返す
  – TokenSequence2FeatureSequenceなど様々な変換
    用のPipeが存在する
• SerialPipe(List<Pipe>)
  – 指定されたlist中のpipeを順番に適応するPipe
InstanceList
• Instanceのリストを表現する
• InstanceList(Pipe pipe)
  – InstanceListに入ってくるInstanceを処理するpipe
    を指定する
• void InstanceList.addThruPipe(Iterator inst)
  – InstanceListにpipeを通しながらIterator経由で
    データをロードする
データのロード
    • PLDA形式のデータを読み込む
        a 2 is 1 character 1
        a 2 is 1 b 1 character 1 after 1

class MyPipe extends Pipe{                         static InstanceList load(String fileName) {
  @Override                                           ArrayList<Pipe> pipeList = new ArrayList<Pipe>();
  public Instance pipe(Instance inst) {               pipeList.add(new MyPipe());
    String data = (String)inst.getData();             pipeList.add(new TokenSequence2FeatureSequence());
    String array[] = data.split("¥¥s+");              InstanceList list =
    TokenSequence ret = new TokenSequence();          new InstanceList(new SerialPipes(pipeList));
    for(int i = 0 ; i < array.length ; i += 2){       CsvIterator it = new CsvIterator(fileName, "(.*)",1, 0,0);
      String word = array[i];                         list.addThruPipe(it);
      int freq = Integer.parseInt(array[i + 1]);      return list;
      for(int f = 0 ; f < freq; ++f){               }
        ret.add(new Token(word));
      }
    }
    inst.setData(ret);
    return inst;
  }
}
ParallelTopicModel
• マルチスレッドなLDA実装
 static ParallelTopicModel train(int numberOfTopics , InstanceList training) {
    ParallelTopicModel ptm = new ParallelTopicModel(numberOfTopics);
    ptm.addInstances(training);
    ptm.estimate();
    return ptm;
  }
• 訓練後のデータの保存にはwrite(File f)を使う。
  – シリアライズされたParallelTopicModelが保存される
  – static ParallelTopicModel read(File f)で読み込める
マルチスレッドのパフォーマンス
• UCI Datasetのnytimesデータを使用
 – 30万文章, 10万単語
 – 約1億トークン
 – トピック数500, 反復回数 500回

 1スレッド                         276min 33sec
 4スレッド                         179min 45sec

   Core i7 920 , JDK 1.6.16 (-server –Xmx1500m)
トピックの代表的単語の抽出
• printTopWordsを使う
0 0.1847 algorithm learning function gradient convergence parameter error iteration vector
1 0.03452 map dominance ocular development pattern mapping organizing kohonen eye
2 0.01327 hint return data cost market stock prediction load subscriber
3 0.71807 case term result form consider general defined order paper
4 0.02225 face images recognition image faces representation hand video facial
5 0.42392 values line order point number high step result factor
6 0.01545 disparity gamma game play player partition games board operator
7 0.09096 local point region surface contour segment data field path
8 0.04591 prediction series error network predict training road predictor committee
9 0.12844 vector matrix linear space component dimensional point data transformation
...
新規文章に関する推論
• getInferencer()を呼びTopicInferencerを取得
  する
• TopicInferencerのgetSampledDistributionを使
  うと各トピックに帰属する確率を取得できる
参考文献
•   [Asuncion+ 2009] On smoothing and inference for topic models, UAI
•   [Blei+ 2003] Latent Dirichlet allocation, JMLR
•   [Griffiths and Steyvers 2004] Finding scientific topics, PNAS
•   [Newman+ 2007] Distributed inference for latent Dirichlet allocation, NIPS
•   [Smola and Narayanamurthy 2010] An architecture for parallel topic models, VLDB
•   [Steyvers and Griffiths 2007] Probabilistic topic models, In Handbook of Latent
    Semantic Analysis
•   [Teh+ 2007] A collapsed variational Bayesian inference algorithm for latent
    Dirichlet allocation, NIPS
•   [Wallach+ 2009] Rethinking LDA: Why Priors Matter, NIPS
•   [Wang+ 2009] PLDA: Parallel Latent Dirichlet Allocation for Large-scale Applications,
    AAIM
•   [Wilson and Chew 2010] Term Weighting Schemes for Latent Dirichlet Allocation,
    ACL
•   [Yan+ 2009] Parallel Inference for Latent Dirichlet Allocation on Graphics
    Processing Units, NIPS
•   [Yao+ 2009] Efficient methods for topic model inference on streaming document
    collections, SIGKDD
参考文献2
• [Bao and Chang 2010] AdHeat: an influence-based
  diffusion model for propagating hints to match ads
• [Chen+ 2009] Collaborative filtering for Orkut
  communities : discovery of user latent behavior
• [Lau+ 2010] Best topic word selection for topic
  labelling, Colling
• [Phan+ 2008] Learning to classify short and sparse text
  & web with hidden topics from large-scale data
  collections
• [Wei and Croft 2006] LDA-based document models for
  ad-hoc retrieval, SIGIR

More Related Content

What's hot

2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
Tatsuya Yokota
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
Masaharu Kinoshita
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
hoxo_m
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
Motokawa Tetsuya
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
y-uti
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
hoxo_m
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptx
Kouta Nakayama
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
Takahiro Kubo
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
gree_tech
 
Iclr2016 vaeまとめ
Iclr2016 vaeまとめIclr2016 vaeまとめ
Iclr2016 vaeまとめ
Deep Learning JP
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景
Masato Nakai
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 
BERT入門
BERT入門BERT入門
BERT入門
Ken'ichi Matsui
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 

What's hot (20)

2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptx
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
Iclr2016 vaeまとめ
Iclr2016 vaeまとめIclr2016 vaeまとめ
Iclr2016 vaeまとめ
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
Word2vecの理論背景
Word2vecの理論背景Word2vecの理論背景
Word2vecの理論背景
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
BERT入門
BERT入門BERT入門
BERT入門
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
 

Viewers also liked

関東CV勉強会 Kernel PCA (2011.2.19)
関東CV勉強会 Kernel PCA (2011.2.19)関東CV勉強会 Kernel PCA (2011.2.19)
関東CV勉強会 Kernel PCA (2011.2.19)
Akisato Kimura
 
LDAを用いた教師なし単語分類
LDAを用いた教師なし単語分類LDAを用いた教師なし単語分類
LDAを用いた教師なし単語分類
Kouhei Nakaji
 
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
wl820609
 
Methods of Manifold Learning for Dimension Reduction of Large Data Sets
Methods of Manifold Learning for Dimension Reduction of Large Data SetsMethods of Manifold Learning for Dimension Reduction of Large Data Sets
Methods of Manifold Learning for Dimension Reduction of Large Data Sets
Ryan B Harvey, CSDP, CSM
 
Topic Models
Topic ModelsTopic Models
Topic Models
Claudia Wagner
 
Manifold learning with application to object recognition
Manifold learning with application to object recognitionManifold learning with application to object recognition
Manifold learning with application to object recognition
zukun
 
The Gaussian Process Latent Variable Model (GPLVM)
The Gaussian Process Latent Variable Model (GPLVM)The Gaussian Process Latent Variable Model (GPLVM)
The Gaussian Process Latent Variable Model (GPLVM)
James McMurray
 
Self-organizing map
Self-organizing mapSelf-organizing map
Self-organizing map
Tarat Diloksawatdikul
 
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
Shuyo Nakatani
 
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender SystemsWSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
Kotaro Tanahashi
 
Visualizing Data Using t-SNE
Visualizing Data Using t-SNEVisualizing Data Using t-SNE
Visualizing Data Using t-SNE
Tomoki Hayashi
 
AutoEncoderで特徴抽出
AutoEncoderで特徴抽出AutoEncoderで特徴抽出
AutoEncoderで特徴抽出
Kai Sasaki
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデル
Mathieu Bertin
 
トピックモデルの話
トピックモデルの話トピックモデルの話
トピックモデルの話
kogecoo
 
Recsys2016勉強会
Recsys2016勉強会Recsys2016勉強会
Recsys2016勉強会
正志 坪坂
 
KDD 2016勉強会 Deep crossing
KDD 2016勉強会 Deep crossingKDD 2016勉強会 Deep crossing
KDD 2016勉強会 Deep crossing
正志 坪坂
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
正志 坪坂
 
Twitterテキストのトピック分析
Twitterテキストのトピック分析Twitterテキストのトピック分析
Twitterテキストのトピック分析
Nobuyuki Kawagashira
 
最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)
IMJ Corporation
 
Machine Learning Bootstrap
Machine Learning BootstrapMachine Learning Bootstrap
Machine Learning Bootstrap
Takahiro Kubo
 

Viewers also liked (20)

関東CV勉強会 Kernel PCA (2011.2.19)
関東CV勉強会 Kernel PCA (2011.2.19)関東CV勉強会 Kernel PCA (2011.2.19)
関東CV勉強会 Kernel PCA (2011.2.19)
 
LDAを用いた教師なし単語分類
LDAを用いた教師なし単語分類LDAを用いた教師なし単語分類
LDAを用いた教師なし単語分類
 
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
Dimension Reduction And Visualization Of Large High Dimensional Data Via Inte...
 
Methods of Manifold Learning for Dimension Reduction of Large Data Sets
Methods of Manifold Learning for Dimension Reduction of Large Data SetsMethods of Manifold Learning for Dimension Reduction of Large Data Sets
Methods of Manifold Learning for Dimension Reduction of Large Data Sets
 
Topic Models
Topic ModelsTopic Models
Topic Models
 
Manifold learning with application to object recognition
Manifold learning with application to object recognitionManifold learning with application to object recognition
Manifold learning with application to object recognition
 
The Gaussian Process Latent Variable Model (GPLVM)
The Gaussian Process Latent Variable Model (GPLVM)The Gaussian Process Latent Variable Model (GPLVM)
The Gaussian Process Latent Variable Model (GPLVM)
 
Self-organizing map
Self-organizing mapSelf-organizing map
Self-organizing map
 
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
 
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender SystemsWSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
WSDM2016読み会 Collaborative Denoising Auto-Encoders for Top-N Recommender Systems
 
Visualizing Data Using t-SNE
Visualizing Data Using t-SNEVisualizing Data Using t-SNE
Visualizing Data Using t-SNE
 
AutoEncoderで特徴抽出
AutoEncoderで特徴抽出AutoEncoderで特徴抽出
AutoEncoderで特徴抽出
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデル
 
トピックモデルの話
トピックモデルの話トピックモデルの話
トピックモデルの話
 
Recsys2016勉強会
Recsys2016勉強会Recsys2016勉強会
Recsys2016勉強会
 
KDD 2016勉強会 Deep crossing
KDD 2016勉強会 Deep crossingKDD 2016勉強会 Deep crossing
KDD 2016勉強会 Deep crossing
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
 
Twitterテキストのトピック分析
Twitterテキストのトピック分析Twitterテキストのトピック分析
Twitterテキストのトピック分析
 
最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)最新事例にみるサービスデザインという新潮流(I・CON2014)
最新事例にみるサービスデザインという新潮流(I・CON2014)
 
Machine Learning Bootstrap
Machine Learning BootstrapMachine Learning Bootstrap
Machine Learning Bootstrap
 

Similar to LDA入門

12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
Yusaku Kawaguchi
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
Nobuaki Oshiro
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニング
Kazuya Sato
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
Shohei Yokoyama
 
Abstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminarAbstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminar
Kodaira Tomonori
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
Amazon Web Services Japan
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
 
programming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithmprogramming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithm
Hiro Yoshioka
 

Similar to LDA入門 (20)

12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
 
10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712 10分で分かるr言語入門ver2.8 14 0712
10分で分かるr言語入門ver2.8 14 0712
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
Python opt
Python optPython opt
Python opt
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニング
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
 
Abstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminarAbstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminar
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
programming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithmprogramming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithm
 

More from 正志 坪坂

Recsys2018 unbiased
Recsys2018 unbiasedRecsys2018 unbiased
Recsys2018 unbiased
正志 坪坂
 
WSDM2018Study
WSDM2018StudyWSDM2018Study
WSDM2018Study
正志 坪坂
 
WSDM 2016勉強会 Geographic Segmentation via latent factor model
WSDM 2016勉強会 Geographic Segmentation via latent factor modelWSDM 2016勉強会 Geographic Segmentation via latent factor model
WSDM 2016勉強会 Geographic Segmentation via latent factor model
正志 坪坂
 
Deeplearning勉強会20160220
Deeplearning勉強会20160220Deeplearning勉強会20160220
Deeplearning勉強会20160220
正志 坪坂
 
OnlineMatching勉強会第一回
OnlineMatching勉強会第一回OnlineMatching勉強会第一回
OnlineMatching勉強会第一回
正志 坪坂
 
Recsys2015
Recsys2015Recsys2015
Recsys2015
正志 坪坂
 
KDD 2015読み会
KDD 2015読み会KDD 2015読み会
KDD 2015読み会
正志 坪坂
 
Recsys2014 recruit
Recsys2014 recruitRecsys2014 recruit
Recsys2014 recruit
正志 坪坂
 
EMNLP2014_reading
EMNLP2014_readingEMNLP2014_reading
EMNLP2014_reading
正志 坪坂
 
Tokyowebmining ctr-predict
Tokyowebmining ctr-predictTokyowebmining ctr-predict
Tokyowebmining ctr-predict
正志 坪坂
 
KDD2014_study
KDD2014_study KDD2014_study
KDD2014_study
正志 坪坂
 
Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計
正志 坪坂
 
Contexual bandit @TokyoWebMining
Contexual bandit @TokyoWebMiningContexual bandit @TokyoWebMining
Contexual bandit @TokyoWebMining
正志 坪坂
 
Introduction to contexual bandit
Introduction to contexual banditIntroduction to contexual bandit
Introduction to contexual bandit
正志 坪坂
 
確率モデルを使ったグラフクラスタリング
確率モデルを使ったグラフクラスタリング確率モデルを使ったグラフクラスタリング
確率モデルを使ったグラフクラスタリング
正志 坪坂
 
Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
正志 坪坂
 
static index pruningについて
static index pruningについてstatic index pruningについて
static index pruningについて
正志 坪坂
 
NIPS 2012 読む会
NIPS 2012 読む会NIPS 2012 読む会
NIPS 2012 読む会
正志 坪坂
 
WSDM 2012 勉強会資料
WSDM 2012 勉強会資料WSDM 2012 勉強会資料
WSDM 2012 勉強会資料
正志 坪坂
 

More from 正志 坪坂 (20)

Recsys2018 unbiased
Recsys2018 unbiasedRecsys2018 unbiased
Recsys2018 unbiased
 
WSDM2018Study
WSDM2018StudyWSDM2018Study
WSDM2018Study
 
WSDM 2016勉強会 Geographic Segmentation via latent factor model
WSDM 2016勉強会 Geographic Segmentation via latent factor modelWSDM 2016勉強会 Geographic Segmentation via latent factor model
WSDM 2016勉強会 Geographic Segmentation via latent factor model
 
Deeplearning勉強会20160220
Deeplearning勉強会20160220Deeplearning勉強会20160220
Deeplearning勉強会20160220
 
OnlineMatching勉強会第一回
OnlineMatching勉強会第一回OnlineMatching勉強会第一回
OnlineMatching勉強会第一回
 
Recsys2015
Recsys2015Recsys2015
Recsys2015
 
KDD 2015読み会
KDD 2015読み会KDD 2015読み会
KDD 2015読み会
 
Recsys2014 recruit
Recsys2014 recruitRecsys2014 recruit
Recsys2014 recruit
 
EMNLP2014_reading
EMNLP2014_readingEMNLP2014_reading
EMNLP2014_reading
 
Tokyowebmining ctr-predict
Tokyowebmining ctr-predictTokyowebmining ctr-predict
Tokyowebmining ctr-predict
 
KDD2014_study
KDD2014_study KDD2014_study
KDD2014_study
 
Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計Riak Search 2.0を使ったデータ集計
Riak Search 2.0を使ったデータ集計
 
Contexual bandit @TokyoWebMining
Contexual bandit @TokyoWebMiningContexual bandit @TokyoWebMining
Contexual bandit @TokyoWebMining
 
Introduction to contexual bandit
Introduction to contexual banditIntroduction to contexual bandit
Introduction to contexual bandit
 
確率モデルを使ったグラフクラスタリング
確率モデルを使ったグラフクラスタリング確率モデルを使ったグラフクラスタリング
確率モデルを使ったグラフクラスタリング
 
Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
 
Tokyowebmining2012
Tokyowebmining2012Tokyowebmining2012
Tokyowebmining2012
 
static index pruningについて
static index pruningについてstatic index pruningについて
static index pruningについて
 
NIPS 2012 読む会
NIPS 2012 読む会NIPS 2012 読む会
NIPS 2012 読む会
 
WSDM 2012 勉強会資料
WSDM 2012 勉強会資料WSDM 2012 勉強会資料
WSDM 2012 勉強会資料
 

LDA入門

  • 1. Latent Dirichlet Allocation入門 @tokyotextmining 坪坂 正志
  • 2. 内容 • NLPで用いられるトピックモデルの代表である LDA(Latent Dirichlet Allocation)について紹介 する • 機械学習ライブラリmalletを使って、LDAを使 う方法について紹介する
  • 4. Why LDA • 白鵬が単独首位 琴欧洲敗れる • 人は上の文を見て相撲に関係する文である ことを理解できる – 文中に相撲という単語は出てこないのにもかか わらず
  • 5. Why LDA • 白鵬が単独首位 琴欧洲敗れる • 人は上の文を見て相撲に関係する文である ことを理解できる – 文中に相撲という単語は出てこないのにもかか わらず • 単語は独立に出現しているのではなく、潜在 的なトピックを持ち、同じトピックを持つ単語 は同じ文章に出現しやすい
  • 6. Why LDA • 文章/単語のトピックを推定すると何の役にた つか? • 文章分類 • 次元削減 • 言語モデル – 情報検索[Wei and Croft 2006]
  • 7. 概要 • LDA – 確率モデル – 推論アルゴリズム – ハイパーパラメータの調整 – 並列化 – 高速化 • Mallet – Malletを使ったLDA
  • 8. 文章生成モデル • トピック数Tはあらかじめ決める • 各トピックごとに単語出現確率������������ を生成 – ディリクレ分布から生成 ������������ ~Dir(������) • 文章ごとにトピック確率������������ を生成する – ディリクレ分布から生成 ������������ ~Dir(������) – 各文章において以下のように単語を生成していく • ������������ ~Multi(������������ )と単語のトピックを生成する • ������������ ~Multi(������������������ )とトピックに応じた確率で単語を生成
  • 10. 推論アルゴリズム • Bleiの元論文[Blei+ 2003]では変分ベイズを 使ったパラメータ推定を行っている • しかし、実用的には後にでたGibbs samplerを 使ったパラメータ推定法がよく用いられる [Griffiths and Steyvers 2004] – 一回当たりの計算が軽い – 数式が簡単(実装コストが低い) • 他にもcollapsed変分ベイズという方法もある [Teh+ 2007, Asuncion+ 2009]
  • 11. Collapsed Gibbs sampler • 文章中の各単語に対して、初期状態としてランダムなトピック を割り当てる • 各単語に関してトピックを逐次更新する – 直感的には(文章中でのトピックtの割合) * (その単語におけるトピッ クtの割合) – 一つの文章では同じトピックがでやすい – 単語ごとに出やすいトピックと出にくいトピックがある ������������|������ : 文章dに出現するトピックtに属する単語の合計 ������������|������ : トピックtに属する単語wの合計 ������⋅|������ : トピックtに属する単語の合計
  • 12. ハイパーパラメータの影響 • 多くの論文では������, ������を天下り的に設定するこ とが多い – 実際は������, ������の値によってPerplexityなど変わってく る [Asuncion+ 2009] • また、������ = 0.1などと各トピックの事前パラメー タはすべて同じにすることが多い
  • 14. 他のストップワードへの対応方法 [Wilson and Chew 2010] • サンプリングの際の������������|������ などの計算で単語ご とに異なる重みづけを用いて計算する – 重み付けにはtf-idf, PMIなどを用いる
  • 15. どうやって推定するか [Wallach+ 2009]より • 階層的なモデルを立てる • 一定間隔でハイパーパラメータを最適化する – 実用上はこちらが階層的モデルと比べ精度も変 わらず、高速 – Malletではこちらを採用
  • 16. 並列化 • マルチコアとかグリッドとか流行ってる • LDAにおいても並列化しようという話はいくつ かある – マルチコア[Newman+ 07] – グリッド (Mapreduce/MPIを使う)[Wang+ 2009] – GPGPU [Yan+ 2009]
  • 18. 並列化 • 更新式 文章ごとに独立 • 文章を各プロセッサに分散して配置する • ������������|������ , ������.|������ は各プロセッサで独立に持つ – 定期的にグローバルな値を計算し直し、同期する – グローバルな値をmemcachedに持つという話も ある[Smola and Narayanamurthy 2010]
  • 19. 並列化 • 1プロセッサあたりの時間/空間計算量 – プロセッサの数をPとする – 各プロセッサには文章が均一に割り当てられて いるとする 時間計算量 空間計算量 LDA O(NT) O(N + (D + W) * T) PLDA O(NT/P) O(N / P + (D / P + W) * T)
  • 20. 高速化 • トピック数Tが多くなっていくとナイーブな実装 だと、一回のGibbs samplerにかかる時間が O(T)であるため、計算にかかるコストが大きい • 効率的なサンプリング方法が存在[Yao+ 2009]
  • 22. サンプリングの高速化 • 一様分布������ ∼ ������(������ + ������ + ������)から乱数を生成 • 経験的に90%以上が������の部分に落ちる • トピック-単語カウントに相当する項に関して 高速なサンプリングができればよい ������ ������ ������
  • 23. サンプリングの高速化 • 上の式に従って高速にサンプリングするため に������������|������ の降順でトピックからサンプリングされ るかどうかを見ていく
  • 24. 高速化のためのデータ構造 • ������������|������ の頻度の降順でならんだ配列を維持する – ここで単語の総出現回数よりも非ゼロの要素数が 少ないことを利用するとメモリが大幅に節約できる – Malletでは(トピックID,出現回数)の組を32bitのint の形で保持している • このため出現回数が多い単語に関してはオーバフロー する危険がある トピックID 3 2 4 1 出現回数 8 6 6 3
  • 25. 高速化の効果  データセットにはNIPS Dataset(1500文章, 約190万トークン) を使用  plda(code.google.com/p/plda)とmalletでトピック数を変えたときの 実行時間を測定  反復回数は両方ともに100回とした 3500 3000 2500 2000 実行時間(sec) plda 1500 mallet 1000 500 0 0 200 400 600 800 1000 1200 # of topics
  • 27. Malletとは • MAchine Learning for LanguagE Toolkit • Javaベースの統計的自然言語処理、文章分 類、トピックモデリングなどのパッケージ • Andrew McCallumを中心として開発が行われ ている
  • 28. Instance • Malletにおいてデータ一つ一つはInstanceと いうオブジェクトで表現される – 文章集合中の文章に相当する • 4つのメンバ変数を持つ – Name (Instanceの名前 今回は使わない) – Data (入力データ) – Target/Label (出力 今回は使わない) – Source (Instanceのソース)
  • 29. Iterator • InstanceにはIteratorを経由して、アクセスされ る – XML,ディレクトリ配下のファイルなど様々な入力 形式に対応できる • 大抵の場合はCsvIteratorが使える
  • 30. CsvIterator CsvIterator(String fileName, Pattern lineRegex, int dataGroup, int targetGroup, int uriGroup) • 対象のfileNameの各行に対してlineRegexで マッチを行い、data,target,uri(name)に指定さ れたグループの値を代入する • Ex: name label dataと空白区切りで並んでい るデータから読み取る場合 – new CsvIterator(fileName, "(¥¥w+)¥¥s+(¥¥w+)¥¥s+(.*)", 3, 2, 1)
  • 31. Pipe • CsvIteratorで読んだInstanceに入っているdata は単なるString – Malletで扱う形式に変換する必要がある • Instance Pipe.pipe(Instance inst) – 与えられたInstanceを別のInstanceに変換して返す – TokenSequence2FeatureSequenceなど様々な変換 用のPipeが存在する • SerialPipe(List<Pipe>) – 指定されたlist中のpipeを順番に適応するPipe
  • 32. InstanceList • Instanceのリストを表現する • InstanceList(Pipe pipe) – InstanceListに入ってくるInstanceを処理するpipe を指定する • void InstanceList.addThruPipe(Iterator inst) – InstanceListにpipeを通しながらIterator経由で データをロードする
  • 33. データのロード • PLDA形式のデータを読み込む a 2 is 1 character 1 a 2 is 1 b 1 character 1 after 1 class MyPipe extends Pipe{ static InstanceList load(String fileName) { @Override ArrayList<Pipe> pipeList = new ArrayList<Pipe>(); public Instance pipe(Instance inst) { pipeList.add(new MyPipe()); String data = (String)inst.getData(); pipeList.add(new TokenSequence2FeatureSequence()); String array[] = data.split("¥¥s+"); InstanceList list = TokenSequence ret = new TokenSequence(); new InstanceList(new SerialPipes(pipeList)); for(int i = 0 ; i < array.length ; i += 2){ CsvIterator it = new CsvIterator(fileName, "(.*)",1, 0,0); String word = array[i]; list.addThruPipe(it); int freq = Integer.parseInt(array[i + 1]); return list; for(int f = 0 ; f < freq; ++f){ } ret.add(new Token(word)); } } inst.setData(ret); return inst; } }
  • 34. ParallelTopicModel • マルチスレッドなLDA実装 static ParallelTopicModel train(int numberOfTopics , InstanceList training) { ParallelTopicModel ptm = new ParallelTopicModel(numberOfTopics); ptm.addInstances(training); ptm.estimate(); return ptm; } • 訓練後のデータの保存にはwrite(File f)を使う。 – シリアライズされたParallelTopicModelが保存される – static ParallelTopicModel read(File f)で読み込める
  • 35. マルチスレッドのパフォーマンス • UCI Datasetのnytimesデータを使用 – 30万文章, 10万単語 – 約1億トークン – トピック数500, 反復回数 500回 1スレッド 276min 33sec 4スレッド 179min 45sec Core i7 920 , JDK 1.6.16 (-server –Xmx1500m)
  • 36. トピックの代表的単語の抽出 • printTopWordsを使う 0 0.1847 algorithm learning function gradient convergence parameter error iteration vector 1 0.03452 map dominance ocular development pattern mapping organizing kohonen eye 2 0.01327 hint return data cost market stock prediction load subscriber 3 0.71807 case term result form consider general defined order paper 4 0.02225 face images recognition image faces representation hand video facial 5 0.42392 values line order point number high step result factor 6 0.01545 disparity gamma game play player partition games board operator 7 0.09096 local point region surface contour segment data field path 8 0.04591 prediction series error network predict training road predictor committee 9 0.12844 vector matrix linear space component dimensional point data transformation ...
  • 37. 新規文章に関する推論 • getInferencer()を呼びTopicInferencerを取得 する • TopicInferencerのgetSampledDistributionを使 うと各トピックに帰属する確率を取得できる
  • 38. 参考文献 • [Asuncion+ 2009] On smoothing and inference for topic models, UAI • [Blei+ 2003] Latent Dirichlet allocation, JMLR • [Griffiths and Steyvers 2004] Finding scientific topics, PNAS • [Newman+ 2007] Distributed inference for latent Dirichlet allocation, NIPS • [Smola and Narayanamurthy 2010] An architecture for parallel topic models, VLDB • [Steyvers and Griffiths 2007] Probabilistic topic models, In Handbook of Latent Semantic Analysis • [Teh+ 2007] A collapsed variational Bayesian inference algorithm for latent Dirichlet allocation, NIPS • [Wallach+ 2009] Rethinking LDA: Why Priors Matter, NIPS • [Wang+ 2009] PLDA: Parallel Latent Dirichlet Allocation for Large-scale Applications, AAIM • [Wilson and Chew 2010] Term Weighting Schemes for Latent Dirichlet Allocation, ACL • [Yan+ 2009] Parallel Inference for Latent Dirichlet Allocation on Graphics Processing Units, NIPS • [Yao+ 2009] Efficient methods for topic model inference on streaming document collections, SIGKDD
  • 39. 参考文献2 • [Bao and Chang 2010] AdHeat: an influence-based diffusion model for propagating hints to match ads • [Chen+ 2009] Collaborative filtering for Orkut communities : discovery of user latent behavior • [Lau+ 2010] Best topic word selection for topic labelling, Colling • [Phan+ 2008] Learning to classify short and sparse text & web with hidden topics from large-scale data collections • [Wei and Croft 2006] LDA-based document models for ad-hoc retrieval, SIGIR