在機器學習的監督學習里,貝葉斯分類器算是很有名的一個方法了,而且這個方法效果還不錯。
貝葉斯方程
我們先來復習一下大學里高數的貝葉斯方程
只要記住這個方程,后面就都很容易理解 了。
為什么要用貝葉斯
為什么一定是貝葉斯呢?就是因為貝葉斯可以根據 去推
。我們先看下面的數據集。
現在你根據這個數據集去生成一個模型(現在還不知道怎么生成),然后我給 ,你預測
時是 Bad 還是 Good。如果用條件概率來表示應該就是求
和
兩個概率,然后比一下哪個概率大,概率大的那個就是預測值嘍~。現在看傻眼了,這概率我怎么求呀,一點線索沒有。OK,現在貝葉斯就出來求這兩個概率了,這里就求上面的概率吧。
其中,已知 是有
個了,所以
整合一下概率為
以此類推我們把其它的概率都算出來,下面最右邊的表格就是我們對給定 X 值的預測概率,其中綠色為較高的概率,會分到那個類。
貝葉斯分類器就沒了,原理就是這么簡單。不過,像上面使用貝葉斯在細節上會有一點問題,下面來說說這些問題。
Normalization
現在我們慢慢優化上面的分類器。假設現在我們的特征值變成 3 個,分別是 A,B,C 三個,數據集是這樣的
不錯呀,那么擼起袖子算預測值唄。但是你有沒有想到一種情況是 A,B,C 對應的值是 0 呢?如下表。換句話說我的數據集里就沒 有一項是 ,那該怎么辦呢?
所以一般計算后的結果會加一個小數使其結果不為 0 就好了,這個過程叫做 Normalization.
Naive Bayes
Naive Bayes 分類器應該都很耳熟了,它主要解決的問題是貝葉斯的計算問題。剛剛也就三個特征值,那如果再多一點那計算量就很大了。公式可能寫成這樣
而且我們不能保證所有特征值都會有對應的 值,如有可能存在
沒有對應的
值。那這樣就計算不了了。所以我們“大概地”,“理想化地”把所有特征值都看成是獨立的,于是計算預測概率時就有
將上面的式子整理一下
再代回原來的公式變成
因為我們只是每次對給定相同的特征值去對比預測值,所以分母是一樣的,我們只需要關注分子就可以了。因此,我們直接把分母去掉,只比較分子
因為這只是我們假想所有特征值是獨立的,因此這個方法很 Naive,也就叫成了 Naive Bayes Classifier.
Naive Bayes vs Joint Bayes
下面通過一個例子來對比一下這兩個方法
Naive Bayes
因為特征值是獨立的,所以 不是 0 而是
和
的乘積。
Joint Bayes
Joint Bayes 也就是之前的 Bayes 啦。這里特征值不是獨立的,而且我們找不到 的條件下
和
同時成立的樣本,因此
。
從上面例子可以看到,如果不用 Naive Bayes 來做,會出現預測概率為 0 的情況,這是很不好的。Naive Bayes 就可以避免這種結果,而且在實際使用中 Naive Bayes 效果還挺不錯的,雖然它是一個估算值。
Gaussian Bayes
下面說說高斯貝葉斯分類器。首先說下高斯模型,也就是正態分布模型。
這里面 表示平均數,
表示方差,函數的公式是
為什么又搞這個玩意呢?因為有些特征值是服從高斯分布的(正態分布),我們首先可以通過數據集里的特征值算出這個特征值服從高斯分布的平均值和方差,然后就得到了對應的高斯分布方程。以后在給定特征值 時,我們就可以用這個方程去求對應的概率了,如下面代入
,這里假定已經算出
和
這樣就不用去找總數是多少,符合條件的有多少個,然后再一除得到概率值 。
錯誤率
最后應該要講講這個分類器的錯誤率了。在分兩個種類時,一般使用下面的不等式去看屬于 1 類還是 0 類。
可視化這兩個概率會得到圖
這里有兩個相交的地方,紅色陰影表示 False Negative,也就是本來應該判為 1 類的,這里判成了 0 類;藍色陰影表示 False Positive,本來應該判為 0 類,但是判成了 1 類。所以我們有以下公式去算每個區域的概率
- True Positive Rate:
- False Positive Rate:
- False Negative Rate:
- True Negative Rate: