1. 程式人生 > >主題模型(LDA)(一)--通俗理解與簡單應用

主題模型(LDA)(一)--通俗理解與簡單應用

這篇文章主要給一些不太喜歡數學的朋友們的,其中基本沒有用什麼數學公式。
目錄

  1. 直觀理解主題模型
  2. LDA的通俗定義
  3. LDA分類原理
  4. LDA的精髓
  5. 主題模型的簡單應用-希拉里郵件門

1.直觀理解主題模型

這裡寫圖片描述
聽名字應該就知道他講的是什麼?假如有一篇文章text,通過裡面的詞,來確定他是什麼型別的文章,如果文章中出現很多體育類的詞,比如,籃球,足球之類的,那麼主題模型就會把它劃分為體育類的文章。

因為主題模型涉及比較多的數學推導,所以我們先用一個小栗子,理解它要做的事。假設有這麼一個場景:

  • 一個資深HR收到一份應聘演算法工程師的簡歷,他想僅僅通過簡歷來看一下這個人是大牛,還是彩筆,他是怎麼判斷呢?

他的一般做法就是拿到這份簡歷,看這個人的簡歷上寫的內容包括了什麼?
在此之前呢,他也一定是接觸了很多演算法工程師的面試,他根據這些招進來的人判斷,一個大牛,有可能是:

  • 穿條紋襯衫
  • 曾在BAT就職
  • 做過大型專案

這個HR就會看這個面試者是不是穿條紋襯衫,有沒有在BAT就職過,做過什麼牛逼的專案,如果都滿足條件,那這個HR就會判斷這個人應該是大牛,如果他只是穿條紋襯衫,沒做過什麼拿得出手的專案,那就要猶豫一下了,因為他是彩筆的可能性比較大。

這個例子和主題模型的關係可以用這個圖表示:
這裡寫圖片描述
在LDA眼裡,相當於是詞袋,每個袋子裡都有一堆詞,用的時候就只管檢測這些詞出現與否就OK了。

用公式可以表示成:

P(|)=X

2.LDA的通俗定義

什麼是LDA?

  • 它是一種無監督的貝葉斯模型。
  • 是一種主題模型,它可以將文件集中的每篇文件按照概率分佈的形式給出。
  • 是一種無監督學習,在訓練時不需要手工標註的訓練集,需要的是文件集和指定主題的個數。
  • 是一種典型的詞袋模型,它認為一篇文件是由一組片語成的集合,詞與詞之間沒有順序和先後關係。

它主要的優點就是可以對每個主題,都找出一些詞來描述它。

3.LDA分類原理

先前詳細寫過貝葉斯模型的原理以及它所代表的思想,詳細請戳:神奇的貝葉斯思想

,這裡只簡單說一下它的原理,用在這裡的意思是:

P(|)=PP|PP|經過一系列推導,可以得到這樣一個鏈式的關係:P(|)=P|P|也就是:這樣的關係。

同一主題下,某個詞出現的概率,以及同一文件下,某個主題出現的概率,兩個概率的乘積,可以得到某篇文件出現某個詞的概率,我們在訓練的時候,調整這兩個分佈就可以了。
這裡寫圖片描述

由此可以定義LDA的生成過程:

  • 對每篇文件,在主題分佈中抽取一個主題;(相當於左圖)
  • 對抽到的主題所對應的單詞分佈中隨機抽取一個單詞;(在右圖中抽)
  • 重複上述過程直至遍歷整篇文件中的每個單詞

經過以上三步,就可以看一下兩個分佈的乘積,是否符合給定文章的分佈,以此來調整。

稍微具體點講: (w代表單詞;d代表文件;t代表主題; 大寫代表總集合,小寫代表個體。)
D中每篇文件d看作個單詞序列:

<w1,w2,...,wn>,wi表示第i個單詞。

D中涉及的所有不同單片語成一個詞彙表大集合V (vocabulary),LDA以文件集合D作為輸入,希望訓練出的兩個結果向量 (假設形成k個topic,V中共有m個詞):

  • 結果向量1:對每個D中的文件d,對應到不同主題的概率θd:<pt1,...,ptk>其中pti表示d對應k個主題中第i個主題的概率,計算的方法也很簡單:pti=did
  • 結果向量2:對每個Tt,生成不同單詞的概率向量ϕt<pw1,...,pwm>其中pwi表示主題t生成V中第i個單詞的概率。計算方法:pwi=tVit
斯坦福大學深度學習公開課cs231n學習筆記1softmax函式理解應用

<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post"

我的機器學習之旅:回歸工程應用

多個 算法 ati function RR numpy pen 圖片 bsp 內容:線性回歸;邏輯回歸,應用場景。 一、線性回歸 有監督學習,根據學習樣本{x->y},學習一個映射f:X->Y(線性相關),輸出預測結果y_i。最簡單的例子:y=ax+b 重要組成

Elasticsearchelasticsearch索引資料簡單檢索GET一個文件

本文參考elasticsearch權威指南。 是一個學習筆記,按照裡面的示例進行學習,在此記錄跟蹤。 與elasticsearch互動的兩種方式 JAVA API 如果你和我一樣,使用java,在程式碼中你可以使用 Elasticsearch 內建的

深入淺出講解LDA主題模型

最近總是遇到主題模型LDA(Latent Dirichlet Allocation),網上的部落格寫的天花亂墜而不知所以然,無奈看了最厚的《LDA數學八卦》,觀完略通一二,記錄於此~順便放兩張遇到的圖,挺有意思的,共勉吧: 主題模型 首先我們來看

CNN筆記通俗理解卷積神經網路

   在深度學習中,有一個很重要的概念,就是卷積神經網路(CNN),是入門深度學習需要搞懂的東西。 1 卷積網路         也叫卷積神經網路(convolutional neural networ

模擬退火算法系列之通俗理解

為什麼我的眼裡常含淚水?因為我有一個演算法不會。為了節約點眼淚,今天我們就來介紹著名的模擬退火演算法,它是一種基於蒙特卡洛思想設計的近似求解最優化問題的方法。〇、一點歷史——如果你不感興趣,可以跳過美國

深入理解Java內存模型——鎖

運行 包含 示意圖 支持 ole img api turn before 本文轉自:http://www.infoq.com/cn/articles/java-memory-model-5 鎖的釋放-獲取建立的happens before 關系 鎖是java並發編程中最重要

深入理解Java內存模型——順序一致性

內存空間 寫入 方便 語言 body 一半 同步 java語言 post 本文轉自:http://www.infoq.com/cn/articles/java-memory-model-3 數據競爭與順序一致性保證 當程序未正確同步時,就會存在數據競爭。java內存模型規範

深入理解Java內存模型——volatile

繼續 表現 可能 class 之前 art 其他 reader int 本文轉自:http://www.infoq.com/cn/articles/java-memory-model-4 volatile的特性 當我們聲明共享變量為volatile後,對這個變量的讀/寫將會

java內存模型深入理解java內存模型的系列好文

總結 nal href ola down 深入理解 ati markdown vol 深入理解java內存模型(一)——基礎深入理解java內存模型(二)——重排序深入理解java內存模型(三)——順序一致性深入理解java內存模型(四)——volatile深入理解java

Linux塊設備IO子系統() _驅動模型轉載

validate per ring span () VC isp 設備 思路   塊設備是Linux三大設備之一,其驅動模型主要針對磁盤,Flash等存儲類設備,塊設備(blockdevice)是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊(所以叫塊設備)進行的,

斯坦福大學-自然語言處理入門 筆記 第十課 最大熵模型判別模型2

一、最大熵模型 1、模型介紹 基本思想:我們希望資料是均勻分佈的,除非我們有其他的限制條件讓給我們相信資料不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。 熵:表示分佈的不

隱馬爾可夫模型HMM和 jieba分詞原始碼的理解

在理解隱馬爾可夫模型(HMM)時,看到的很好的部落格,記錄一下: 1. 隱馬爾可夫模型(HMM) - 1 - 基本概念:http://blog.csdn.net/xueyingxue001/article/details/51435728 2.隱馬爾可夫模型(HMM) - 2 -

深入理解Java記憶體模型——final

與前面介紹的鎖和volatile相比較,對final域的讀和寫更像是普通的變數訪問。對於final域,編譯器和處理器要遵守兩個重排序規則: 在建構函式內對一個final域的寫入,與隨後把這個被構造物件的引用賦值給一個引用變數,這兩個操作之間不能重排序。 初次讀一個包含