1. 程式人生 > >機器學習演算法之樸素貝葉斯(Naive Bayes)--第二篇

機器學習演算法之樸素貝葉斯(Naive Bayes)--第二篇

引言

這篇文章主要介紹將樸素貝葉斯模型應用到文字分類任務的技巧和方法。

詞袋模型(The Bag of Words Model)

對於機器學習演算法來說,特徵的選擇是一個很重要的過程。那麼如何從文字訓練集中選出好的特徵呢?在自然語言處理中,一個常見的模型就是詞袋模型。

這個模型很簡單,就是收集訓練集中所有的詞(重複地只保留一個詞),收集的這些詞中,每個詞都是一個特徵。這也叫做詞彙表。

當然,在把訓練集中的每個文件向量化的過程中,存在兩個模型。一個是統計詞在文件中出現的次數(多項式模型);一個是統計詞是否在文件中出現過(柏努利模型)。下面我會詳細解釋這兩個模型的。

關於文字處理的幾個技巧

  1. 移除文字中的標點符號並把所有字母轉換為小寫的
  2. 移除常用的單詞:
    • 在網上找到特定語言的常用詞列表
    • 自己建立一個常用詞列表,統計整個訓練集中每個詞出現的次數,並根據它排序,接著把前n個詞從詞彙表和每個訓練樣本中移除
  3. 詞幹提取(Stemming):它的意思就是把swim和swimming看作是一個單詞。它會把每個相近的詞提取主幹,並把它們當作一個詞。
  4. 詞元化(Lemmatization):它的目的是把讓單詞之間的語法符合規範。

機器學習演算法之樸素貝葉斯

在實際分類中,詞幹提取和詞元化對分類的效能幾乎不會產生什麼影響。上面的方法有的不適用於中文的情況。

Multi-variate Bernoulli Naive Bayes

這個模型我們只檢查詞彙表的詞是否在文件中出現。根據伯努利實驗,我們有如下公式:

P(x|ωj)=i=1mP(xi|ωj)b(1P(xi|ωj))(1b)(b0,1)

上式中的m是詞彙表中單詞的數量。

P(xi|ωj)=Nxi|wj+1Nwj+2
  • Nxi|wj:訓練集中包含特徵xi並屬於類別ωj樣本的數量
  • Nwj:訓練集中屬於類別ωj樣本的數量
  • +1+2是Laplace平滑引數

Multinomial Naive Bayes

這個模型我們檢查詞彙表的詞在文件中出現的次數。它也叫做詞頻(term frequency),記作(tf(t, d)),表示詞t在文件d中出現的次數。它也叫做自然頻率分佈(raw frequency)。在實際應用中,為了使演算法具有更好的效能,詞頻經常被標準化,公式如下:

tf(t,d)nd
  • tf(t,d):詞t在文件d中出現的次數
  • nd:文件d中詞的總數量

上述中的詞都是指詞彙表中的詞,並不是文件中所有出現的單詞。

基於詞彙間的獨立性假設,我們可得如下公式:

P(x|ωj)=P(x1|ωj)P(x2|ωj)P(x3|ωj)P(xn|ωj)=i=1mP(xi|ωj)

上式中的m是詞彙表中單詞的數量。

P(xi|ωj)=tf(xi,dωj)+αNdωj+αV
  • tf(xi,dωj):在所有屬於類別ωj的訓練樣本中,詞彙(特徵)xi的詞頻和
  • Ndωj:在所有屬於類別ωj的訓練樣本中,所有詞彙(特徵)的詞頻和
  • α:An additive smoothing parameter (α = 1 for Laplace smoothing).
  • V:詞彙表的大小

Term Frequency - Inverse Document Frequency (Tf-idf)

我們可以把Tf-idf理解成加權重的詞頻。如果我們並沒有把頻繁出現的詞(stop words)從詞彙表中移除,那麼它是非常有用的。Tf-idf認為詞的重要性與它在文件中出現的次數成反比。

Tf-idf可以通過樸素貝葉斯應用到文字分類中,公式如下:

Tfidf=tfn(t,d)idf(t)
  • tfn(t,d)是正則化後的詞頻
  • idf(t)可通過如下公式計算
idf(t)=log(ndnd(

相關推薦

機器學習演算法樸素Naive Bayes--第二

引言 這篇文章主要介紹將樸素貝葉斯模型應用到文字分類任務的技巧和方法。 詞袋模型(The Bag of Words Model) 對於機器學習演算法來說,特徵的選擇是一個很重要的過程。那麼如何從文字訓練集中選出好的特徵呢?在自然語言處理中,一個常見

機器學習演算法樸素Naive Bayes--第一

引言 先前曾經看了一篇文章,一個老外程式設計師寫了一些很牛的Shell指令碼,包括晚下班自動給老婆發簡訊啊,自動衝Coffee啊,自動掃描一個DBA發來的郵件啊, 等等。於是我也想用自己所學來做一點有趣的事情。我的想法如下: 首先我寫個scrapy指令碼來

機器學習實戰》學習筆記樸素Naive Bayes

原理 假如郵箱中有n個單詞, 如果returnVec[i]=0代表這個單詞在這封郵件中不出現, returnVec[i]=1代表這個單詞在郵件中出現了。 設訓練集中每個郵件都有標記為是垃圾郵件和不是垃圾郵件,是垃圾郵件的分類為1,不是垃圾郵件的分類為0。 演算法原理:

機器學習演算法樸素

樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。演算法的核心思想就是比較概率的大小,認定概率大的類別為所屬類別下面是公式推導下面是樸素貝葉斯的python程式碼實現import numpy as np from functools import reduce de

機器學習——樸素Naive Bayes詳細解讀

在機器學習中,樸素貝葉斯是一個分類模型,輸出的預測值是離散值。在講該模型之前首先有必要先了解貝葉斯定理,以該定理為基礎的統計學派在統計學領域佔據重要的地位,它是從觀察者的角度出發,觀察者所掌握的資訊量左右了觀察者對事件的認知。 貝葉斯公式

深入理解樸素Naive Bayes

之間 計算 else 不同 樸素 foo 防止 zeros 甜美 https://blog.csdn.net/li8zi8fa/article/details/76176597 樸素貝葉斯是經典的機器學習算法之一,也是為數不多的基於概率論的分類算法。樸素貝葉斯原理簡單,也很

樸素Naive Bayes分類和Gaussian naive Bayes

樸素貝葉斯(Naive Bayes)   參考資料:https://www.cnblogs.com/pinard/p/6069267.html   樸素貝葉斯最關鍵的就是 (強制認為每種指標都是獨立的)。   不同於其它分類器,樸素貝葉斯是一種基於概率理論的分類

機器學習系列樸素演算法監督學習-分類問題

''' @description :一級分類:監督學習,二級分類:分類(離散問題),三級分類:貝葉斯演算法 演算法優點: a 樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率 b 對缺失的資料不太敏感,演算法也比較簡

生成學習演算法樸素演算法

2  樸素貝葉斯演算法 在GDA中,特徵向量是連續的實值向量。現在讓我們討論一種不同的學習演算法,在這個演算法中,是離散值。 對於我們的激勵的例子,考慮使用機器學習建立一個電子郵件的垃圾郵件過濾器。這裡,我們希望根據它們是未經請求的商業(垃圾)電子郵件還是非垃圾郵件進行分

機器學習入門樸素

樸素貝葉斯法 樸素貝葉斯法是基於貝葉斯定理和特徵條件獨立假設分類方法。對於給定訓練集,首先基於特徵條件獨立性的假設,學習輸入/輸出聯合概率(計算出先驗概率和條件概率,然後求出聯合概率)。然後基於此模型,給定輸入x,利用貝葉斯概率定理求出最大的後驗概率作為輸出y

機器學習實戰樸素

問題1 來源:使用樸素貝葉斯過濾垃圾郵件 描述:spamTest()和textParse()讀檔案時編譯通不過 報錯:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal

【python】機器學習實戰樸素分類

一,引言   前兩章的KNN分類演算法和決策樹分類演算法最終都是預測出例項的確定的分類結果,但是,有時候分類器會產生錯誤結果;本章要學的樸素貝葉斯分類演算法則是給出一個最優的猜測結果,同時給出猜測的概率估計值。 1 準備知識:條件概率公式 相信學過概率論的同學對於概

機器學習演算法總結--樸素

這次需要總結的是樸素貝葉斯演算法,參考文章: 簡介 樸素貝葉斯是基於貝葉斯定理與特徵條件獨立假設的分類方法。 貝葉斯定理是基於條件概率來計算的,條件概率是在已知事件B發生的前提下,求解事件A發生的概率,即P(A|B)=P(AB)P(B),而貝葉

機器學習實戰樸素_程式碼註釋

#-*- coding: UTF-8 -*- from numpy import * def loadDataSet():#建立包含文件的訓練集和各文件對應的標籤列表 postinglist = [['my','dog','has','flea','problems',

利用樸素Navie Bayes進行垃圾郵件分類

判斷 ase create numpy water 向量 not in imp img 貝葉斯公式描寫敘述的是一組條件概率之間相互轉化的關系。 在機器學習中。貝葉斯公式能夠應用在分類問題上。這篇文章是基於自己的學習所整理。並利用一個垃圾郵件分類的樣例來加深對於理論的理解

樸素Naive Bayesian

tar 不可 https 獲得 現實 叠代 結構 步驟 無法 一、貝葉斯定理 機器學習所要實現的均是通過有限的訓練樣本盡可能的準確估計出後驗概率,也就是所說的結果情況。大題分為判別式模型和生成式模型。 1. 判別式模型:直接通過建模P(結果|特征)的方式來預測結果,典型代

樸素Nave Bayes

1.條件概率   事件A和事件B 事件A發生的前提下事件B發生的概率: P(AB) = P(B|A)P(A)   舉例:     十個球其中 3 黑 7白,做兩次不放回的取球,求兩次都拿到黑球的概率(事件A為第一次取,事件B為第二次取。)     事件A 發生的概率 P(A) = 3/7,事

機器學習分類演算法樸素

一、概念 樸素貝葉斯模型(Naive Bayesian Model,NBM)是以條件概率為基礎的分類器,是一種監督演算法,常被用於文字分類和垃圾郵件過濾。貝葉斯理論解決的是逆向概率問題,即通過已經發生的已知的概率來推測未發生的事將會發生的概率。    二、計算 樸素貝葉斯各個事件發

機器學習-分類演算法樸素

條件概率公式:P(A|B) = P(AB)/P(B) 貝葉斯定理:P(A|B) = P(B|A)P(A)/P(B) 樸素貝葉斯演算法思想:給定一個待分類的資料 X={a1,a2,……,aN},即N個特徵項,目標分類集合Y={y1,y2,……,yK},即有K個分類 通過計算P

機器學習經典演算法樸素分類

很多人都聽說過貝葉斯原理,在哪聽說過?基本上是在學概率統計的時候知道的。有些人可能會說,我記不住這些概率論的公式,沒關係,我儘量用通俗易懂的語言進行講解。 /*請尊重作者勞動成果,轉載請標明原文連結:*/ /* https://www.cnblogs.com/jpcflyer/p/11069659