私は、これはステップバイステップであることを理解 - トピックモデル(トピックモデル)、LDA

何1. LDAモデル

LDAは、以下の5つのステップに分けることができます。

  • 機能:ガンマ関数。
  • 4つの分布:二項分布、多項分布、ベータ分布、ディリクレ分布。
  • コンセプトやアイデア:共役前とベイズのフレームワーク。
  • 二つのモデル:PLSA、LDA。
  • サンプリング:ギブスサンプリング

LDAは、二つの意味を有するものは、線形判別分析(線形判別分析)であり、一つは確率トピックモデルについて:潜在的ディリクレ配分(潜在的ディリクレ配分、LDAと呼ぶ)、この論文では、後者を強調しています。

2003年にBLEI、デイビッドM.、呉、アンドリューY.、ヨルダンによって提案されたwikiに、LDAに従って、トピックモデルでは、各文書のテーマは確率分布の形で与えられているドキュメントを設定することができ、従って、それらのテーマ(分布)のうち、一部の文書を解析することにより、抽出された出てきた、それは(の分布)テーマ別クラスタリングまたはテキスト分類の主題かもしれません。同時に、文書は単語のグループで構成され、単語と単語の順番の間に関係がないことを、言葉モデルの典型的なバッグです。また、ドキュメントは、被験者結果の文書にワードで構成されそれぞれが、複数のテーマを含むことができます。

どのように人間が文書を生成していますか?最初にリストされているすべてのトピックの最初に、その後、対象に含まれる単語の特定の確率選択肢で、特定のテーマを選択する確率は、最終的に記事にまとめ。(単語が上記単語の図に対応するさまざまなトピックで異なる色である)を以下に示します。

その後、LDAは今のターンです:与えられた文書によると、そのトピックの分布反転器推力。

次のようにLDAモデルでは、文書が生成されました:

  • ディリクレの分布から\(\アルファ\)テーマサンプリング分布は、ドキュメントを生成するI \(\ theta_i \)
  • 多項式テーマの分布から\(\ theta_i \)に関するサンプリングされたj番目の世代のドキュメントIワード\を(Z_ {I、J} \)
  • ディリクレ分布\(\ベータ\)サンプリング発生トピック\(Z_ {I、J} \) の単語の分布に対応する\(\ Z_ phi_ {{I、J}} \)
  • 多項式単語の分布から\(\ phi_ {Z_ {I 、J}} \) サンプリング最終的に生成された単語を\(W_ {I、J} \)

ベータ分布は、二項分布共役事前確率分布と同様であり、ディリクレ分布(ディリクレ分布)多項式共役事前確率分布です。さらに、図LDAモデル構造は、(ベイジアンネットワーク構造と同様)を以下に示します:

理解の1.1 5配布

まず起こり上記の概念を説明します。

  1. 二項分布(二項分布)

    二項分布が進んでからベルヌーイ分布です。また、配布ポイント0-1又は分布としても知られているベルヌーイ分布は、ディスクリート型のランダム分布である確率変数、すなわち、非負のnの値の2つだけ種類{+、 - }。すなわち、二項分布ベルヌーイ試験では、N回繰り返すと呼ば\(X- \ SIM _} {B(N、P)\) 要するに、実験のみ、ベルヌーイ分布、繰り返しn回は、二項分布です。

  2. ディストリビューションの数

    二項分布は、多次元の場合に拡張されます。分布の数はもはや0-1確率変数単一テストの値が、可能離散値(1,2,3 ...、k)の様々ながあることを意味します。6例、サイコロを投げする実験、N、K =実験被験者分布6の数に直面しています。どこで:

    \ [\ sum_ {i = 1} ^ {K} P_I = 1、P_I> 0 \]

  3. 共役事前分布

    ベイズ統計、場合事後分布事前分布同種の、事後分布の事前分布と呼ばれる共役分布、事前分布と尤度関数と呼ばれる前のコンジュゲート

  4. ベータ分布

    二項共役事前分布。パラメータ指定された\(\アルファ> 0 \)\(\ベータ> 0 \)の範囲内の確率密度関数は、[0,1]確率変数Xです。

    \ [F(X; \アルファ、\ベータ)= \ FRAC {1} {B(\アルファ、\ベータ)} X ^ {\α-1}(1-x)^ {\ベータ-1} \]

    どこで:

    \ [\ FRAC {1} {B(\アルファ、\ベータ)} = \ FRAC {\ガンマ(\アルファ+ \ベータ)} {\ガンマ(\アルファ)\ガンマ(\ベータ)} \]

    \ [\ガンマ(Z)= \ {0} ^ {\ inftyのT} ^ {Z-1} E ^ INT_ { - T} DT \]

    注意:これは、いわゆるガンマ関数である、それを具体的に対処されます。

  5. ディリクレ分布

    ベータ版は、高次元の分布を促進することです。全く同じとベータ分布の分布の密度関数形式のディリクレ密度関数:

    \ [F(X_1、X_2、...、X_K; \ alpha_1、\ alpha_2、...、\ alpha_k)= \ FRAC {1} {B(\アルファ)} \ prod_ {i = 1} ^ {K } X_I ^ {\アルファ^ I-1} \]

    間で

    \ [B(\アルファ)= FRAC {\ prod_ {i = 1} ^ {K} \ガンマ(\アルファ^ I)} {\ガンマ(\ sum_ {i = 1} ^ {K} \アルファ^ I \ )}、\和_ {} X_I = 1 \]

この時点で、我々は二項分布と個数分布は、ベータ分布に非常に似ており、ディリクレ分布は非常に似ていることがわかります。

あなたはその原則の下に取得したい場合に参照することができます。人気の理解LDAトピックモデル、またはあなたがダウンして行くことができ、最後の詳細な式を振り返り、より良い理解します。

要約すると、以下の情報を得ることができます。

  • ベータ分布事前確率分布は二項分布を共役:非負実数の場合は\(\アルファ\)\(\ベータ\) 我々は次のような関係を持っています:

    \ [ベータ版(P | \アルファ、\ベータ)+カウント(M_1、M_2)=ベータ版(P | \アルファ+ M_1、\ベータ+ M_2)\]

    前記\((M_1、M_2)\ ) 二項分布に対応する\(B(M_1 + M_2、 P)\) 記数。このような二項事後分布パラメータに準拠することが観察されたデータのための事前分布はベータ分布の場合は、ベータ二項共役です。"

  • ディリクレ分布(ディリクレ分布)多項式共役分布事前確率分布は、次の一般式です。

    \ [ディレクトリ(\開始{P} | \ VECの\アルファ)+ MultCount(\ {M}を開始)= DIR(P | \開始{\アルファ} + \ {M}開始)\]

    これは、観測データのコンプライアンス多項分布に向けられて、事後分布と事前分布のパラメータは、ディリクレ分布であるディリクレ、多項複合体です。"

  • バイユーSpiraxは問題固定パターンを考えます:

    事前分布の\(\ PI(\シータ)\) +サンプル情報\(X- \)事後分布の後に= \(\ PI(\シータ| X)\)

モデル3 1.2理解基礎

ユニグラムモデル、ユニグラムモデルの混合物、および最も近いとPLSA LDAモデル:基本モデルの漸進的な理解、その後、LDAモデルの前に言えば。説明を容易にするため、最初のいくつかの変数を定義します。

  • \(W \) 単語を表す\(Vの\)は、すべての単語の数(固定値)を表します。
  • \(Z \)はトピックを表し、\(K \)トピックの数(所定の固定値)です。
  • \(D =(W_1、... 、W_M)\) Mはコーパス(固定値)内の文書の数であり、コーパスを表します。
  • \(W =(W_1、W_2 、...、W_N)\) Nは、ドキュメント内の(ランダム変数)の単語の数を表す文書、ことを示しています。
  1. ユニグラムモデル

    ドキュメントの\(W =(W_1、W_2、...、W_N)\)\(P(W_N)\)ワードを表し\(W_N \)事前確率、次のようにwの文書を生成する確率:

    \ [P(W)= \ prod_ {N = 1} ^ {N} P(W_N)\]

  2. ユニグラムモデルの混合物

    モデル生成プロセスである:最初のトピックzに文書を選択し、テーマに基づいて文書を生成する、文書内のすべての単語がテーマからのものです。仮定トピック\(Z_1、...、Z_N \) 次のようにワットの文書を生成する確率:

    \ [P(W)= P(Z_1)\ prod_ {N = 1} ^ {N} P(W_N | Z_1)+ ... + P(z_k)\ prod_ {N = 1} ^ {N} P( W_N | z_k)= \ sum_ {Z} P(Z)\ prod_ {N = 1} ^ {N} P(W_N | Z)\]

  3. PLSAモデル

    PLSAモデルを理解した後、LDAモデルは離れるだろう - PLSAプラスベイズの枠組みに、それは、LDAです。

    ユニグラムモデルの、我々は文書は上記の混合物で生成されただけで一つのテーマを持っていることを前提とし、記事を練習することができ、多くの場合、複数のテーマを持っていますが、いくつかのトピックのそれぞれは、文書のサンプルサイズで表示されている確率。例えば、文書が複数のテーマがそうで、教育、経済、交通手段を導入したことが多いから、国を記述する。その後PLSAは、文書はそれを生成する方法ですか?

    あなたはKの任意のテーマの合計と仮定すると、Vの任意の言葉は、のは、ゲームをプレイするためにサイコロを投げてみましょう。

    まず、サイコロ(Kにこのテーマのいずれかを取得するためにサイコロを投げる)、およびK V-顔「テーマ-用語」ダイス-あなたは文書がすべてのK「がテーマのドキュメントを」直面している生成される書き込みと仮定(テーマは、テーマに対応するK Kの前にダイス、ダイスの各々に対応し、かつ各用語がV V任意ワードの顔であると、ダイスを選択する必要がある面)。

    例えば、それは3「は、文書のテーマに含有させること、つまり、K = 3を作ることができます - テーマ「サイコロを、これらの3つのトピックは次のようになります。教育、経済、交通機関。三面大学、教師、カリキュラム、経済的なテーマのサイコロ: - 「用語のテーマ」サイコロの三つの言葉面が教育のテーマとなる可能性がでサイコロ、そして、V = 3にする、の3つの3の側面をしました言葉ができ:市場、ビジネス、金融、交通のテーマサイコロの三つの言葉の面があることができます:高速鉄道、自動車、飛行機。

    第二に、それぞれが最初に投げ、単語を書き、「文書を-テーマ」サイコロは、トピックを選択し、使用し、対応するテーマ沈没「テーマ-用語」の結果得られた結果の話題サイコロは、サイコロを投げるには、単語を書くことを選択します。

    まずスロー「ドキュメント - テーマ」サイコロの、(いくつかの確率で)テーマを想定し得る教育なので、次のステップでは、教育のふるいのテーマに対応する単語を取得するために(一定の確率で)教育ふるいのテーマをスローすることです:大学。

    このローリングサイコロワード作成プロセスの上の下に簡略化されている:「一定の確率、特定の単語を選択する、その後確率で選ばれた最初のテーマ」

    三、最后,你不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法M次,则完成M篇文档。

    上述过程抽象出来即是PLSA的文档生成模型。在这个过程中,我们并未关注词和词之间的出现顺序,所以pLSA是一种词袋方法。生成文档的整个过程便是选定文档生成主题,确定主题生成词。

    反过来,既然文档已经产生,那么如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。

    文档d和词w是我们得到的样本,可观测得到,所以对于任意一篇文档,其 \(P(w_j|d_i)\) 是已知的。从而可以根据大量已知的文档-词项信息 \(P(w_j|d_i)\),训练出文档-主题 \(P(z_k|d_i)\) 和主题-词项 \(P(w_j|z_k)\),如下公式所示:

    \[P(w_j|d_i)=\sum_{k=1}^{K}P(w_j|z_k)P(z_k|d_i)\]

    故得到文档中每个词的生成概率为:

    \[P(d_i,w_j)=P(d_i)P(w_j|d_i)=P(d_i)\sum_{k=1}^{K}P(w_j|z_k)P(z_k|d_i)\]

    由于 \(P(d_i)\) 可事先计算求出,而 \(P(w_j|z_k)^{}\)\(P(z_k|d_i)\) 未知,所以 \(\theta=(P(w_j|z_k),P(z_k|d_i))\) 就是我们要估计的参数(值),通俗点说,就是要最大化这个θ。

    用什么方法进行估计呢,常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。详细的EM算法可以参考之前写过的 EM算法 章节。

1.3 LDA模型

事实上,理解了pLSA模型,也就差不多快理解了LDA模型,因为LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本(正因为LDA被贝叶斯化了,所以才需要考虑历史先验知识,才加的两个先验参数)。

下面,咱们对比下本文开头所述的LDA模型中一篇文档生成的方式是怎样的:

  • 按照先验概率 \(P(d_i)\) 选择一篇文档 \(d_i\)
  • 从狄利克雷分布(即Dirichlet分布)\(\alpha\) 中取样生成文档 \(d_i\) 的主题分布 \(\theta_i\),换言之,主题分布 \(\theta_i\) 由超参数为 \(\alpha\) 的Dirichlet分布生成。
  • 从主题的多项式分布 \(\theta_i\) 中取样生成文档 \(d_i\) 第 j 个词的主题 \(z_{i,j}\)
  • 从狄利克雷分布(即Dirichlet分布)\(\beta\) 中取样生成主题 \(z_{i,j}\) 对应的词语分布 \(\phi_{z_{i,j}}\),换言之,词语分布 \(\phi_{z_{i,j}}\) 由参数为 \(\beta\) 的Dirichlet分布生成。
  • 从词语的多项式分布 \(\phi_{z_{i,j}}\) 中采样最终生成词语 \(w_{i,j}\)

LDA中,选主题和选词依然都是两个随机的过程,依然可能是先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后再从该主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。

那PLSA跟LDA的区别在于什么地方呢?区别就在于:

PLSA中,主题分布和词分布是唯一确定的,能明确的指出主题分布可能就是{教育:0.5,经济:0.3,交通:0.2},词分布可能就是{大学:0.5,老师:0.3,课程:0.2}。
但在LDA中,主题分布和词分布不再唯一确定不变,即无法确切给出。例如主题分布可能是{教育:0.5,经济:0.3,交通:0.2},也可能是{教育:0.6,经济:0.2,交通:0.2},到底是哪个我们不再确定(即不知道),因为它是随机的可变化的。但再怎么变化,也依然服从一定的分布,即主题分布跟词分布由Dirichlet先验随机确定。正因为LDA是PLSA的贝叶斯版本,所以主题分布跟词分布本身由先验知识随机给定。

换言之,LDA在pLSA的基础上给这两参数 \((P(z_k|d_i)、P(w_j|z_k))\) 加了两个先验分布的参数(贝叶斯化):一个主题分布的先验分布Dirichlet分布 \(\alpha\),和一个词语分布的先验分布Dirichlet分布 \(\beta\)

综上,LDA真的只是pLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布(即两者本质都是为了估计给定文档生成主题,给定主题生成词语的概率),只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。

所以,pLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想。

LDA参数估计:Gibbs采样,详见文末的参考文献。

2. 怎么确定LDA的topic个数?

  1. 基于经验 主观判断、不断调试、操作性强、最为常用。
  2. 基于困惑度(主要是比较两个模型之间的好坏)。
  3. 使用Log-边际似然函数的方法,这种方法也挺常用的。
  4. 非参数方法:Teh提出的基于狄利克雷过程的HDP法。
  5. 基于主题之间的相似度:计算主题向量之间的余弦距离,KL距离等。

3. 如何用主题模型解决推荐系统中的冷启动问题?

推荐系统中的冷启动问题是指在没有大量用户数据的情况下如何给用户进行个性化推荐,目的是最优化点击率、转化率或用户 体验(用户停留时间、留存率等)。冷启动问题一般分为用户冷启动、物品冷启动和系统冷启动三大类。

  • 用户冷启动是指对一个之前没有行为或行为极少的新用户进行推荐;
  • 物品冷启动是指为一个新上市的商品或电影(这时没有与之相关的 评分或用户行为数据)寻找到具有潜在兴趣的用户;
  • 系统冷启动是指如何为一个 新开发的网站设计个性化推荐系统。

解决冷启动问题的方法一般是基于内容的推荐。以Hulu的场景为例,对于用 户冷启动来说,我们希望根据用户的注册信息(如:年龄、性别、爱好等)、搜 索关键词或者合法站外得到的其他信息(例如用户使用Facebook账号登录,并得 到授权,可以得到Facebook中的朋友关系和评论内容)来推测用户的兴趣主题。 得到用户的兴趣主题之后,我们就可以找到与该用户兴趣主题相同的其他用户, 通过他们的历史行为来预测用户感兴趣的电影是什么。

同样地,对于物品冷启动问题,我们也可以根据电影的导演、演员、类别、关键词等信息推测该电影所属于的主题,然后基于主题向量找到相似的电影,并将新电影推荐给以往喜欢看这 些相似电影的用户。可以使用主题模型(pLSA、LDA等)得到用户和电影的主题。

以用户为例,我们将每个用户看作主题模型中的一篇文档,用户对应的特征 作为文档中的单词,这样每个用户可以表示成一袋子特征的形式。通过主题模型 学习之后,经常共同出现的特征将会对应同一个主题,同时每个用户也会相应地 得到一个主题分布。每个电影的主题分布也可以用类似的方法得到。

那么如何解决系统冷启动问题呢?首先可以得到每个用户和电影对应的主题向量,除此之外,还需要知道用户主题和电影主题之间的偏好程度,也就是哪些主题的用户可能喜欢哪些主题的电影。当系统中没有任何数据时,我们需要一些先验知识来指定,并且由于主题的数目通常比较小,随着系统的上线,收集到少量的数据之后我们就可以对主题之间的偏好程度得到一个比较准确的估计。

4. 参考文献

通俗理解LDA主题模型

5. 代码实现

LDA模型应用:一眼看穿希拉里的邮件


作者:@mantchs

GitHub:https://github.com/NLP-LOVE/ML-NLP

欢迎大家加入讨论!共同完善此项目!群号:【541954936】NLP面试学习群

おすすめ

転載: www.cnblogs.com/mantch/p/11259347.html