深度/機器學習基礎知識要點:TFIDF、LDA、LSA

TFIDF

  • TF
    Term Frequency,即詞頻,它表示一個詞在文檔中出現的次數。

    計算公式:

    TFTF = \frac{某個詞在文檔中出現的次數}{文檔的總詞數}

    某個詞出現越多,表示它約重要。
    某個詞越少見,就越能表達一篇文章的特性,反之則越不能。

  • IDF

    Inverse Document Frequency,即逆文檔頻率,它是一個表達詞語重要性的指標。

    計算公式:

    IDFlog(+1) IDF=log( \frac{語料庫中的文檔數}{包含該詞的文檔數+1})

    如果所有文章都包涵某個詞,該詞的IDFlog(1)=0IDF=log(1)=0,即重要性爲零。停用詞的IDF約等於0。

    如果某個詞只在很少的文章中出現,則IDF很大,其重要性也越高。

  • TF-IDF

    計算公式:

    TFTF-IDFIDF TF×IDF= TF × IDF

    如果某個詞在一篇文章中出現的頻率高,並且在其他文章中很少出現,則認爲此詞具有很好的類別區分能力

LDA

  • LDA定義
    LDA(Latent Dirichlet Allocation)是一種文檔主題生成模型,也稱爲一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。

    所謂生成模型,就是說,我們認爲一篇文章的每個詞都是通過“以一定概率選擇了某個主題,並從這個主題中以一定概率選擇某個詞語”這樣一個過程得到。

    文檔到主題服從多項式分佈,主題到詞服從多項式分佈。

    LDA是一種非監督機器學習技術,可以用來識別大規模文檔集(document collection)或語料庫(corpus)中潛藏的主題信息。它採用了詞袋(bag of words)的方法,這種方法將每一篇文檔視爲一個詞頻向量,從而將文本信息轉化爲了易於建模的數字信息。

  • LDA生成過程

    對於語料庫中的每篇文檔,LDA定義瞭如下生成過程:
    1.對每一篇文檔,從主題分佈中抽取一個主題;
    2.從上述被抽到的主題所對應的單詞分佈中抽取一個單詞;
    3.重複上述過程直至遍歷文檔中的每一個單詞。

  • LDA整體流程

    定義:文檔集合D,主題(topic)集合T
    D中每個文檔d看作一個單詞序列<w1,w2,...,wn><w1,w2,...,wn>,wi表示第i個單詞,設d有n個單詞。
    D中涉及的所有不同單詞組成一個大集合VOCABULARY(簡稱VOC),LDA以文檔集合D作爲輸入,希望訓練出的兩個結果向量(設聚成k個topic,VOC中共包含m個詞):
    對每個D中的文檔d,對應到不同Topic的概率θd<pt1,...,ptk>θ_{d}<p_{t_{1}},...,p_{t_{k}}>,其中,ptip_{t_{i}}表示d對應T中第ii個topic的概率。計算方法:pti=ntinp_{t_{i}}=\frac{n_{t_{i}}}{n},其中ntin_{t_{i}}表示d中對應第i個topic的詞的數目,n是d中所有詞的總數。
    對每個T中的topic t,生成不同單詞的概率φt<pw1,...,pwm>φ_t<p_{w_{1}},...,p_{w_{m}}>,其中,pwip_{w_{i}}表示t生成VOC中第i個單詞的概率。計算方法同樣很直觀,pwi=NwiNp_{w_{i}}=\frac{N_{w_{i}}}{N},其中NwiN_{w_{i}}表示對應到topict的VOC中第i個單詞的數目,N表示所有對應到topict的單詞總數。

    LDA的核心公式如下:
    p(wd)=p(wt)p(td)p(w|d)=p(w|t)*p(t|d)

    直觀的看這個公式,就是以Topic作爲中間層,可以通過當前的θdθ_dφtφ_t給出了文檔d中出現單詞w的概率。其中p(td)p(t|d)利用θdθ_d計算得到,p(wt)p(w|t)利用φtφ_t計算得到。

    實際上,利用當前的θdθ_dφtφ_t,我們可以爲一個文檔中的一個單詞計算它對應任意一個Topic時的p(wd)p(w|d),然後根據這些結果來更新這個詞應該對應的topic。然後,如果這個更新改變了這個單詞所對應的Topic,就會反過來影響θdθ_dφtφ_t

LSA

  • 定義
    LSA(latent semantic analysis)潛在語義分析也可以稱爲 LSI(latent semantic index)。

    使用向量來表示詞(iterms)和文檔(documents),並通過向量間的關係來表示詞和文檔之間的相似度。

    LSA 的核心思想是將詞和文檔映射到潛在語義空間,再比較其相似性。

    在這裏插入圖片描述

    • 解釋
      矩陣U :每一行表示意思相關的一類詞,其中的每個非零元素表示這類詞中每個詞的重要性(或者說相關性),數值越大越相關。

      矩陣V :每一列表示同一主題一類文章,其中每個元素表示這類文章中每篇文章的相關性。

      矩陣D: 則表示類詞和文章類之間的相關性。

    我們只要對關聯矩陣X 進行一次奇異值分解(SVD),我們就可以同時完成了近義詞分類和文章的分類。(同時得到每類文章和每類詞的相關性)

  • 實例
    在這裏插入圖片描述
    圖中一共有10篇文章,選擇代表詞11個,矩陣中的數字代表橫座標中的詞對應的縱座標中的文章中出現的詞頻,對這個矩陣進行SVD分解:

    在這裏插入圖片描述

  • LSA的優點
    1)低維空間表示可以刻畫同義詞,同義詞會對應着相同或相似的主題。
    2)降維可去除部分噪聲,使特徵更魯棒。
    3)充分利用冗餘數據。
    4)無監督。
    5)與語言無關。

  • LSA的缺點
    1)LSA可以解決一義多詞問題
    2)SVD的優化目標基於L-2 norm 或者 Frobenius Norm 的,這相當於隱含了對數據的高斯分佈假設。而 term 出現的次數是非負的,這明顯不符合 Gaussian 假設,而更接近 Multi-nomial 分佈。
    3)特徵向量的方向沒有對應的物理解釋。
    4)SVD的計算複雜度很高,而且當有新的文檔來到時,若要更新模型需重新訓練。
    5)沒有刻畫term出現次數的概率模型。
    6)對於count vectors 而言,歐式距離表達是不合適的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章