本文主要簡單研究一下樸素貝葉斯算法是如何對文本進行分類的。html
貝葉斯方法把計算「具備某特徵的條件下屬於某類」的機率轉換成須要計算「屬於某類的條件下具備某特徵」的機率,屬於有監督學習。算法
後驗機率 = 先驗機率 x 調整因子
這就是貝葉斯推斷的含義。咱們先預估一個"先驗機率",而後加入實驗結果,看這個實驗究竟是加強仍是削弱了"先驗機率",由此獲得更接近事實的"後驗機率"。機器學習
p(yi|x) = p(yi) * p(x|yi) / p(x)
p(所屬類別yi|某種特徵x) = p(所屬類別yi) * p(某種特徵x|所屬類別yi) /p(某種特徵x)
根據公式就能夠把計算「具備某種特徵的條件下屬於某個類別」的機率轉換爲:「屬於某種類別的條件下,具備某種特徵」的機率。函數
其中p(yi)稱爲先驗機率,即在x事件發生以前,發生yi事件的機率學習
p(yi|x)稱爲後驗機率,即在x事件發生以後,發生yi事件的機率,屬於可觀測的值ui
p(x|yi)/p(x)爲調整因子,也成爲可能性函數(Likelyhood
),使得預估機率更接近真實機率code
樸素貝葉斯理論源於隨機變量的獨立性:就文本分類而言,從樸素貝葉斯的角度來看,句子中的兩兩詞之間的關係是相互獨立的,即一個對象的特徵向量中每一個維度都是相互獨立的。這是樸素貝葉斯理論的思想基礎。其流程以下htm
- 第一階段,訓練數據生成訓練樣本集:TF-IDF。 - 第二階段,對每一個類別計算P(yi)。 - 第三階段,對每一個特徵屬性計算全部類別下的條件機率p(ai|yi)。 - 第四階段,對每一個類別計算p(x|yi)p(yi)。 - 第五階段,以p(x|yi)p(yi)的最大項做爲x的所屬類別。
假設x是一個待分類文本,其特徵爲{a1,a2,...,am};已知類別集合{y1,y2,...yn};求x所屬的類別對象
若是p(yi|x) = max{p(y1|x),p(y2|x),p(y3|x),...,p(yn|x)},則x屬於yi類別
利用貝葉斯公式blog
p(yi|x) = p(x|yi)*p(yi) / p(x)
問題轉換爲對每一個類別計算p(x|yi) p(yi),以p(x|yi)p(yi)的最大項做爲x的所屬類別
因爲樸素貝葉斯假定各個特徵是相互獨立的,所以
p(x|yi) = p(a1|yi)*p(a2|yi)...*p(am|yi)
p(x|yi)/p(x)爲調整因子
而p(ai|yi)則能夠經過訓練集(已經分好類
),統計各個類別下面各類特徵的條件機率p(ai|yi)獲得。
自此求x所屬的類別p(yi|x)被一步步化解,能夠經過計算訓練集中每一個類別下各類特徵的條件機率p(ai|yi)來求解獲得。
而訓練的過程則是根據訓練集去計算調整因子的影響因素p(x|yi)=p(a1|yi)p(a2|yi)...p(am|yi),所以訓練集的好壞直接影響預測結果的準確性。
TF-IDF( term frequency–inverse document frequency )是一種用於信息檢索與數據挖掘的經常使用加權方法。
TF-IDF = TF * IDF
TF-IDF的主要思想是:若是某個詞或短語在一篇文章中出現的頻率 TF 高,而且在其餘文章中不多出現(IDF值大),則認爲此詞或者短語具備很好的類別區分能力,適合用來分類。
意思是詞頻( Term Frequency ),即某個詞在文件中出現的頻率
TFi = Ndti / Ndt1..n
即該詞在文檔中出現的次數/該文檔全部詞出現的次數之和
意思是逆向文件頻率( Inverse Document Frequency ),它是一個詞語重要性的調整係數,衡量一個詞是否是常見詞。若是某個詞比較少見,可是它在這篇文章中屢次出現,那麼它極可能就反映了這篇文章的特性,正是咱們所須要的關鍵詞。
某一特定詞語的IDF,能夠由總文件數目除以包含該詞語之文件的數目,再將獲得的商取對數獲得
IDF = log(Nd/Ndt)
Nd爲總文件數,Ndt爲包含該詞語的文件數目
若是一個詞很是經常使用則Ndt變大,則IDF值會變小,於是TF-IDF值也會變小,這樣就很好地削弱了經常使用詞的特徵性。
樸素貝葉斯算法將問題一步步化解,最後經過訓練集求解,值得好好學習推敲。