Naive Bayesian Classifier Based On Gaussian Distribution
Section A 一些定理
樸素貝葉斯分類器是一系列以假設(shè)特征之間強(qiáng)獨(dú)立下運(yùn)用貝葉斯定理為基礎(chǔ)的簡(jiǎn)單分類器 —— 維基百科
貝葉斯定理

其中P(A|B)是在B發(fā)生的情況下A發(fā)生的可能性。
- P(A|B)是已知B發(fā)生后A的條件概率,也由于得自B的取值而被稱作A的后驗(yàn)概率。
- P(A)是A的先驗(yàn)概率(或邊緣概率)。之所以稱為"先驗(yàn)"是因?yàn)樗豢紤]任何B方面的因素。
- P(B|A)是已知A發(fā)生后B的條件概率,也由于得自A的取值而被稱作B的后驗(yàn)概率。
- P(B)是B的先驗(yàn)概率或邊緣概率。
以上可表述為
后驗(yàn)概率 = (可能性*先驗(yàn)概率)/標(biāo)準(zhǔn)化常量
高斯樸素貝葉斯
如果要處理的連續(xù)數(shù)據(jù)服從高斯分布(正態(tài)分布),那么概率密度可以通過(guò)下圖公式計(jì)算出來(lái)

Section B 一些實(shí)現(xiàn)代碼
(ns naive-bayesian.core
(:require [clojure.core.matrix :as mat]
[clojure.core.matrix.stats :as mats]))
(defn probability-density [x arr]
(let [variance (mats/variance arr)
mean (mats/mean arr)]
(* (/ 1 (Math/sqrt (* 2 Math/PI variance)))
(Math/pow Math/E (/ (- (Math/pow (- x mean) 2)) (* 2 variance)))) ))
(defn gaussian-probability-assumption [r rs]
(reduce *
(map
(fn [x]
(probability-density (x r)
(into-array Double/TYPE (map x rs))))
(map key r))))
在實(shí)現(xiàn)方式上面其實(shí)并不困難,注意不要寫錯(cuò)順序就可以了。就是簡(jiǎn)單的套用公式。
解釋
probability-density這個(gè)函數(shù)用來(lái)計(jì)算上述公式的,gaussian-probability-assumption這個(gè)是用來(lái)計(jì)算在給定了一條記錄,一組數(shù)據(jù)集下面的滿足下面公式的函數(shù)

用樸素的語(yǔ)言可以表述為

示例

以下給出一個(gè)待分類是男性還是女性的樣本

我們希望得到的是男性還是女性的后驗(yàn)概率。 以此可以判斷滿足該組數(shù)據(jù)的人是男性還是女性。
;;sample test case
; (def r {:a 6 :b 130 :c 8})
; (def rs [
; {:a 6 :b 180 :c 12}
; {:a 5.92 :b 190 :c 11}
; {:a 5.58 :b 170 :c 12}
; {:a 5.92 :b 165 :c 10}
; ])
; (def rs1 [
; {:a 5 :b 100 :c 6}
; {:a 5.5 :b 150 :c 8}
; {:a 5.42 :b 130 :c 7}
; {:a 5.75 :b 150 :c 9}
; ])
; (> (gaussian-probability-assumption r rs)
; (gaussian-probability-assumption r rs1))
思考
在給出一些奇怪條件的情況下,可以得到一個(gè)滿足這些條件的答案,看似不合常理,但是確實(shí)是這個(gè)道理。
舉個(gè)例子,一艘船上有26只綿羊和10只山羊,船上船長(zhǎng)幾歲?
上述示例其實(shí)就是一個(gè)類似的問(wèn)題,一個(gè)身高6英尺,體重130磅,腳長(zhǎng)8英尺的人是男還是女,乍一看之下是非常莫名其妙的,但是背后所包含的數(shù)學(xué)問(wèn)題其實(shí)非常簡(jiǎn)單且精妙,以至于我們似乎忘記了數(shù)學(xué)其實(shí)無(wú)處不在。