斯坦福大學-自然語言處理入門 筆記 第六課 文本分類與樸素貝葉斯

一、文本分類任務概述

1、應用領域

  • 歸類
  • 垃圾郵件識別
  • 作者識別
  • 性別/年齡識別
  • 等等

2、定義

  • 輸入:一個文檔d,一系列固定的類型C={c1,c2,…,cj}
  • 輸出:預測類別c ∈ C

3、分類方法

  • 手工規則:很精確但是代價很高
  • 監督機器學習:
    • 輸入:一個文檔d,一系列固定的類型C={c1,c2,…,cj},一個訓練集包含m個樣本,每個樣本是手工標記的文檔(d1,c1)…(dm,cm)
    • 輸出:γ:d→c
    • 可以使用的分類方法:樸素貝葉斯,邏輯迴歸,支持向量機,k近鄰

二、樸素貝葉斯

  • 樸素貝葉斯的思想:基於貝葉斯規則的簡單分類方法,分類的依據是文本的簡單代表,詞袋(bag of words)
  • 把文本抽象成一個個單詞以及對應的次數的特徵
  • 如下在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

三、定義樸素貝葉斯分類

1、應用於文檔和類別的貝葉斯規則

  • 公式:
    在這裏插入圖片描述
  • 其中,d表示文檔,c表示類別

2、樸素貝葉斯分類

  • 公式推導1:我們需要求的是使得P(c|d)最大的類別c。利用貝葉斯規則可以得到第二行的公式,因爲第二行的分母對任何類別都是一樣的,不影響argmax的計算。所以,可以忽略掉分母。
    在這裏插入圖片描述
  • 公式推導2:把d用x1,x2等特徵表示
    在這裏插入圖片描述
  • 基於上述公式進行估計的話,需要估計的參數量級很大,因此對樣本數量的要求會很高。
    • 參數量級
      在這裏插入圖片描述
  • 因此,我們需要進行一些假設來簡化模型
    • 詞袋(bag of words)假設:單詞的文職不重要
    • 條件獨立(conditional independence):對於特徵而言,基於c的條件概率是相互獨立的
    • 基於上述兩點,上述公式可以推導爲
      在這裏插入圖片描述

四、樸素貝葉斯的訓練

1、極大似然估計

  • 樸素貝葉斯的訓練的一個方法是極大似然估計,利用數據的頻率進行計算
    在這裏插入圖片描述
  • 極大似然估計的問題:如果在訓練集中沒有出現單詞的話這個單詞的P(w|c)就是0,那麼對應的基於下面公式的c也是0,就無法進行分類
    在這裏插入圖片描述
  • 基於上述的問題,我們就需要使用加一平滑也就是拉普拉斯平滑來解決,解決的公式是
    在這裏插入圖片描述
  • 對於一個訓練語料庫而言,訓練公式如下
    在這裏插入圖片描述
  • 如果遇到未知(unknown)的單詞的處理方法,公式如下
    在這裏插入圖片描述

五、樸素貝葉斯:和語言模型的關係

  • 樸素貝葉斯的每一個類別就是一個條件於類別的一元語言模型
    • 對每個單詞而言,他們的概率是P(word|c)
    • 對每個句子而言,他們的概率是P(s|c)=∏ P(word|c)
    • 貝葉斯最後的結果而言,就是選擇比較大的P(s|c)的類別
      在這裏插入圖片描述

六、關於多元樸素貝葉斯的例子

  • 實例:
    在這裏插入圖片描述
  • 在垃圾郵件檢測領域,寫有效的應用於貝葉斯的特徵:
    在這裏插入圖片描述
  • 關於樸素貝葉斯的總結
    • 非常快,並且對內存的要求低
    • 對不相關的特徵十分穩健
    • 在有很多同等重要的特徵的時候表現得比較好
    • 如果獨立假設存在的話是最好的
    • 是文本分類一個很好的可依靠的底線

七、precision,recall and f measure

  • 依據預測的結果(selected)與實際的分類(correct)可以將樣本分爲四類
    在這裏插入圖片描述
  • 因爲準確率在估計樣本不均衡的時候並不是有效的,所以需要引入下面的度量
    • precision:表示預測的結果是正確的百分比 tp/(tp+fp)
    • recall:表示實際分類中被預測到的百分比 tp/(tp+fn)
    • F值:是precision和recall的加權調和平均數,調和平均數會更加接近比較小的數
      在這裏插入圖片描述
      人們一般會使用f1值來估計,是上面的計算公式中β爲1,α爲1/2的度量
      在這裏插入圖片描述

八、文本分類評估

1、用於評估的數據集

在這裏插入圖片描述
在這裏插入圖片描述

2、混淆矩陣(confusion matrix)C

  • 對所有的類別建立混淆矩陣,列表示實際的類別,行表示預測的類別
    在這裏插入圖片描述
  • recall:在類別i中的文檔被預測正確的比例
  • precision:被分爲類別i的文檔中實際爲i分類的類別的比例
  • accuracy:被正確分類的文檔比例
  • 當分類大於兩類的時候,我們用下面兩種方法把多個指標合併
    • 宏平均(macroaveraging):單獨計算每個類別的度量,然後平均
    • 微平均(microaveraging):把每個類別的結果歸入下面列聯表中,然後計算
      在這裏插入圖片描述
    • 舉例:
      在這裏插入圖片描述

3、發展測試集(development test set)與交叉檢驗

  • 一般會把數據分爲三類,一類是訓練集,一類是發展測試集,一類是測試集。
    在這裏插入圖片描述
  • 測試集:避免過擬合、估計更保守
  • 發展測試集:用來調整算法
  • 交叉檢驗:發展測試集的存在可能會導致測試集過小,所以我們可以使用交叉驗證的方法來構造發展測試集。
    在這裏插入圖片描述

九、文本分類:實際中會遇到的問題

  • 沒有訓練數據怎麼辦?
    • 人工寫規則:需要非常小心並且十分費時(兩天一個類)
  • 數據很少怎麼辦?
    • 使用樸素貝葉斯:樸素貝葉斯是一個高誤差(high-bias)的算法,不容易現過擬合問題
    • 獲得更多的標記數據
    • 嘗試半監督訓練方法:bootstrapping或者是針對非標記文本的EM算法
  • 合理的數據量
    • 對更“聰明”的分類方法會更好:SVM,正則邏輯迴歸
    • 使用解釋性更強的決策樹
  • 有很多很多的數據
    • 可以得到很高的正確率
    • 代價是:svm的訓練時間和knn的測試時間都會很長;正則邏輯迴歸可能會好一點
    • 樸素貝葉斯的速度在這種情況就是優勢
  • 當數據足夠的時候,算法就不重要了
    在這裏插入圖片描述
  • 其他的要點:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
發佈了11 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章