其中,|C|表示樣本的類別數據。
小數溢出
在計算類概率密度時多個條件概率(小數)連乘,會存在著超過計算機能夠表示的最小數可能,為避免小數溢出問題,一般將類概率密度計算轉成成對數累和的形式。
另外,如果在計算p(ti | Cj)時過小,取對數后將會得到一個負無窮的值,需要對p(ti | Cj)截斷處理:小于某個閾值(如1E-6)時,采用該閾值替代。
算法預測
本節(jié)將結合前面三節(jié)內容,給出算法具體的計算預測過程。為簡化問題,我們假設字典為:[拉面,七天,牛肉,館],并且只有火鍋和快餐兩個品類,兩類樣本的數量均為8個。以“好 利 來 牛肉 拉面 館為例”:
對測試樣本做中文分詞,判斷”牛肉“屬于品類詞,丟棄品類詞”牛肉“前面的部分,并提取樣本的特征詞集合得到:[牛肉 拉面 館]
根據字典,建立向量空間模型:x = [1, 0, 1, 1]
利用Naive Bayes模型分類預測,我們給出在“火鍋” 、 “快餐”兩類的計算過程(計算時做了加1平滑):
特征詞品類火鍋(C1)快餐(C2)
樣本屬于快餐的概率高于屬于火鍋概率4倍,預測樣本屬于快餐置信度明顯高于火鍋概率。
算法隨機抽取2000條未校準的POI數據進行評測,算法的評測指標有兩個:覆蓋度和準確率。覆蓋度是指算法可預測的樣本數量在整個測試樣本集中的比例。由于采用特征選擇后,一些POI名稱因不包含特征詞集合而無法預測,算法的評測的覆蓋度為84%。算法的準確率是指,可預測正確樣本在整個測試樣本集中的比例,算法評測的正確率為91%。
總結
機器學習解決問題最關鍵的一步是找準問題:這種問題能否用機器學習算法解決?是否存在其他更簡單的方法?簡單的如字符串匹配,利用正則就可以簡單解決,才機器學習方法反而很麻煩,得不償失。
如果能機器學習算法,如何去表示這個機器學習問題,如何抽取特征?又可能歸類哪類機器模式(分類、聚類、回歸?)
找準問題后,可以先嘗試一些開源的機器學習工具,驗證算法的有效性。如果有必要,自己實現一些機器算法,也可以借鑒一些開源機器學習算法實現。
Reference
Introduction to Information Retrieval:Scoring, term weighting and the vector space model
Lucene SmartCn
A framework of feature selection methods for text categorization
A Comparison of Event Models for Naive Bayes Text Classification
原文地址:http://outofmemory.cn/wr/?u=http%3A%2F%2Fblog.chedushi.com%2Farchives%2F10004 感謝原作者分享。