一。貝葉斯基本理論
二。看一個簡單的例題,只有一個特征(長度)。
對於貝葉斯方法來說,首先要知道類別的先驗概率,和類概率。
對於上述例題來說,p(x=10|w1)和p(x=10|w2)是已知的,但是拿到別的例子來說,這個是需要我們自己計算的。通過多個樣本,計算類概率密度,其實就是訓練的過程。
例題只有一個特征,而大多數情況不止有一個特征,我們則需要計算p(X|wi)X={x1,x2,x3……xn}。X是特征向量,包括N個特征。每個特征有不同的取值。
通常來說,我們需要假設特征之間是相互獨立的,即朴素貝葉斯,P(X|wi)等價為P(x1|wi)*P(x2|wi)*P(x3|wi)……*P(xn|wi);
舉個例子:我們現在有貓和狗兩類,特征有高度(100和50兩個取值)和重量(100和50兩個取值)兩種。訓練樣本有2個(用於計算類概密),還有2個測試樣本。
根據所給樣本得到的類概密,去計算測試樣本的對應於不同類別的后驗概率,得到概率最高的類別,判定為結果,計算時,因為分母相同,所以可以忽略。
樣本1,2無法判定,樣本三為狗。
三。使用貝葉斯進行手寫數字識別。
准備條件:我下載了MNIST數據集,並轉化為了PNG圖片,分為0-9,10個類別。每張圖片28*28像素。
手動設定划分數和閾值。
比如長和寬各7划分,一個將28*28分成49個區域,每個區域看作一個特征,每個區域共有4*4=16個像素。閾值設定為0.18,意思是如果16個像素中,有超過3個像素中是有筆畫的,則這塊區域的特征值為1,否則為0;
和前面的例子比較,這里只是把2個特征(高度和體重),換成了49個特征。把取值100和50,換成了1和0;
通過轉換,可以得到圖像7*7的特征圖。
在這里p(x1=1|W1),為N個樣本中特征1為1的比率。p(x1=0|W1)=1-p(x1=1|W1);依次計算49個特征為1的比率,可以用一個數組來存放49個特征值為1概率。
分別計算10個類別的不同特征的概率,可以得到一個10x49的二維數組。
當測試一張新的圖片時,先根據前面的步驟,將28*28的轉換成一個7*7的特征圖,然后根據貝葉斯公式。可以計算p(wi|X),求Max(p(wi|X))
因為數組中只有特征值為1的概率,特征值為0的只需要用1減去當前特征值為1的概率。
原圖:28*28,特征圖14*14,寫程序時做了14划分,特征更多效果會好一點。