定義
學過機率的同學一定都知道貝葉斯定理:
這個在250多年前發明的算法,在信息領域內有著無與倫比的地位。貝葉斯分類是一系列分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。樸素貝葉斯算法(Naive Bayesian) 是其中套用最為廣泛的分類算法之一。
樸素貝葉斯分類器基於一個簡單的假定:給定目標值時屬性之間相互條件獨立。
通過以上定理和“樸素”的假定,我們知道:
P( Category | Document) = P ( Document | Category ) * P( Category) / P(Document)
詳細內容
分類是將一個未知樣本分到幾個預先已知類的過程。數據分類問題的解決是一個兩步過程:第一步,建立一個模型,描述預先的數據集或概念集。通過分析由屬性描述的樣本(或實例,對象等)來構造模型。假定每一個樣本都有一個預先定義的類,由一個被稱為類標籤的屬性確定。為建立模型而被分析的數據元組形成訓練數據集,該步也稱作有指導的學習。
在眾多的分類模型中,套用最為廣泛的兩種分類模型是決策樹模型(Decision Tree Model)和樸素貝葉斯模型(Naive Bayesian Model,NBC)。決策樹模型通過構造樹來解決分類問題。首先利用訓練數據集來構造一棵決策樹,一旦樹建立起來,它就可為未知樣本產生一個分類。在分類問題中使用決策樹模型有很多的優點,決策樹便於使用,而且高效;根據決策樹可以很容易地構造出規則,而規則通常易於解釋和理解;決策樹可很好地擴展到大型資料庫中,同時它的大小獨立於資料庫的大小;決策樹模型的另外一大優點就是可以對有許多屬性的數據集構造決策樹。決策樹模型也有一些缺點,比如處理缺失數據時的困難,過度擬合問題的出現,以及忽略數據集中屬性之間的相關性等。
套用
和決策樹模型相比,樸素貝葉斯分類器(Naive Bayes Classifier,或 NBC)發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際套用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。
解決這個問題的方法一般是建立一個屬性模型,對於不相互獨立的屬性,把他們單獨處理。例如中文文本分類識別的時候,我們可以建立一個字典來處理一些詞組。如果發現特定的問題中存在特殊的模式屬性,那么就單獨處理。
這樣做也符合貝葉斯機率原理,因為我們把一個詞組看作一個單獨的模式,例如英文文本處理一些長度不等的單詞,也都作為單獨獨立的模式進行處理,這是自然語言與其他分類識別問題的不同點。
實際計算先驗機率時候,因為這些模式都是作為機率被程式計算,而不是自然語言被人來理解,所以結果是一樣的。
在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。但這點有待驗證,因為具體的問題不同,算法得出的結果不同,同一個算法對於同一個問題,只要模式發生變化,也存在不同的識別性能。這點在很多國外論文中已經得到公認,在機器學習一書中也提到過算法對於屬性的識別情況決定於很多因素,例如訓練樣本和測試樣本的比例影響算法的性能。
決策樹對於文本分類識別,要看具體情況。在屬性相關性較小時,NBC模型的性能稍微良好。屬性相關性較小的時候,其他的算法性能也很好,這是由於信息熵理論決定的。
模型
樸素貝葉斯模型:
----
Vmap=arg max P( Vj | a1,a2...an)
Vj屬於V集合
其中Vmap是給定一個example,得到的最可能的目標值.
其中a1...an是這個example裡面的屬性.
這裡面,Vmap目標值,就是後面計算得出的機率最大的一個.所以用max 來表示
----
貝葉斯公式套用到 P( Vj | a1,a2...an)中.
可得到 Vmap= arg max P(a1,a2...an | Vj ) P( Vj ) / P (a1,a2...an)
又因為樸素貝葉斯分類器默認a1...an他們互相獨立的.
所以P(a1,a2...an)對於結果沒有用處. [因為所有的機率都要除同一個東西之後再比較大小,最後結果也似乎影響不大]
可得到Vmap= arg max P(a1,a2...an | Vj ) P( Vj )
然後
"樸素貝葉斯分類器基於一個簡單的假定:給定目標值時屬性之間相互條件獨立。換言之。該假定說明給定實力的目標值情況下。觀察到聯合的a1,a2...an的機率正好是對每個單獨屬性的機率乘積: P(a1,a2...an | Vj ) =Πi P( ai| Vj )
....
樸素貝葉斯分類器:Vnb =arg max P( Vj ) Π i P ( ai | Vj )
"
Vnb = arg max P ( Vj )
此處Vj ( yes | no ),對應天氣的例子。
----