在機器學習的監(jiān)督學習里,貝葉斯分類器算是很有名的一個方法了,而且這個方法效果還不錯移国。
貝葉斯方程
我們先來復習一下大學里高數(shù)的貝葉斯方程
只要記住這個方程,后面就都很容易理解 了道伟。
為什么要用貝葉斯
為什么一定是貝葉斯呢迹缀?就是因為貝葉斯可以根據(jù) 去推 。我們先看下面的數(shù)據(jù)集蜜徽。
現(xiàn)在你根據(jù)這個數(shù)據(jù)集去生成一個模型(現(xiàn)在還不知道怎么生成)祝懂,然后我給 ,你預測 時是 Bad 還是 Good拘鞋。如果用條件概率來表示應該就是求
和
兩個概率砚蓬,然后比一下哪個概率大,概率大的那個就是預測值嘍~∨枭現(xiàn)在看傻眼了灰蛙,這概率我怎么求呀,一點線索沒有隔躲。OK摩梧,現(xiàn)在貝葉斯就出來求這兩個概率了,這里就求上面的概率吧蹭越。
其中障本,已知 是有 個了,所以
整合一下概率為
以此類推我們把其它的概率都算出來,下面最右邊的表格就是我們對給定 X 值的預測概率驾霜,其中綠色為較高的概率案训,會分到那個類。
貝葉斯分類器就沒了粪糙,原理就是這么簡單强霎。不過,像上面使用貝葉斯在細節(jié)上會有一點問題蓉冈,下面來說說這些問題城舞。
Normalization
現(xiàn)在我們慢慢優(yōu)化上面的分類器。假設現(xiàn)在我們的特征值變成 3 個寞酿,分別是 A家夺,B,C 三個伐弹,數(shù)據(jù)集是這樣的
不錯呀拉馋,那么擼起袖子算預測值唄。但是你有沒有想到一種情況是 A惨好,B煌茴,C 對應的值是 0 呢?如下表日川。換句話說我的數(shù)據(jù)集里就沒 有一項是 蔓腐,那該怎么辦呢?
所以一般計算后的結果會加一個小數(shù)使其結果不為 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 來做月培,會出現(xiàn)預測概率為 0 的情況嘁字,這是很不好的。Naive Bayes 就可以避免這種結果杉畜,而且在實際使用中 Naive Bayes 效果還挺不錯的纪蜒,雖然它是一個估算值。
Gaussian Bayes
下面說說高斯貝葉斯分類器此叠。首先說下高斯模型霍掺,也就是正態(tài)分布模型。
這里面 表示平均數(shù)拌蜘, 表示方差杆烁,函數(shù)的公式是
為什么又搞這個玩意呢?因為有些特征值是服從高斯分布的(正態(tài)分布)简卧,我們首先可以通過數(shù)據(jù)集里的特征值算出這個特征值服從高斯分布的平均值和方差兔魂,然后就得到了對應的高斯分布方程。以后在給定特征值 時举娩,我們就可以用這個方程去求對應的概率了析校,如下面代入 ,這里假定已經(jīng)算出 和
這樣就不用去找總數(shù)是多少铜涉,符合條件的有多少個智玻,然后再一除得到概率值 。
錯誤率
最后應該要講講這個分類器的錯誤率了芙代。在分兩個種類時吊奢,一般使用下面的不等式去看屬于 1 類還是 0 類。
可視化這兩個概率會得到圖
這里有兩個相交的地方纹烹,紅色陰影表示 False Negative页滚,也就是本來應該判為 1 類的,這里判成了 0 類铺呵;藍色陰影表示 False Positive裹驰,本來應該判為 0 類,但是判成了 1 類片挂。所以我們有以下公式去算每個區(qū)域的概率
- True Positive Rate:
- False Positive Rate:
- False Negative Rate:
- True Negative Rate: