R語言數據分析與挖掘(第八章):判別分析(2)——貝葉斯(Bayes)判別分析
- 2019 年 12 月 13 日
- 筆記
貝葉斯(Bayes)判別分析
Bayes判別,它是基於Bayes準則的判別方法,判別指標為定量資料,它的判別規則和最大似然判別、Bayes公式判別相似,都是根據概率大小進行判別,要求各類近似服從多元正態分布。
1. Bayes準則:尋求一種判別規則,使得屬於第k類的樣品在第k類中取得最大的後驗概率。
基於以上準則,假定已知個體分為g類,各類出現的先驗概率為P(Yk),且各類均近似服從多元正態分布,當各類的協方差陣相等時,可獲得由m個指標建立的g個線性判別函數Y1,Y2,…,Yg,分別表示屬於各類的判別函數值:

其中Cjk即為判別係數,通過合併協方差陣代入即可計算得各個指標的判別係數,而C0k中則加以考慮了先驗概率P(Yk):
2. 先驗概率的確定:若未知各類的先驗概率時,一般可用:
(1)等概率(先驗無知):P(Yk)= 1/g(all groups equal)。
(2)頻率:P(Yk)= nk/N (當樣本較大且無選擇偏倚時用,compute from sample size)
3. 判別規則:
(1)計算樣品屬於各類的判別函數值,把對象判別為Y值最大的類。
(2)根據所得Y值,我們亦可以進一步計算屬於k類的後驗概率,再將對象判給後驗概率最大的一類。
以上兩種判別規則的結果是完全一致的。
函數介紹
實現Bayes判別可以調用程式包klaR中NaiveBayes()函數,其調用格式為:
NaiveBayes(x,grouping,prior,usekernel =FALSE,fL = 0, ...)
x為訓練樣本的矩陣或數據框,grouping表示訓練樣本的分類情況,prior可為各個類別指定先驗概率,默認情況下用各個類別的樣本比例作為先驗概率,usekernel指定密度估計的方法,默認情況下使用標準的密度估計,設為TRUE時,則使用核密度估計方法;fL指定是否進行拉普拉斯修正,默認情況下不對數據進行修正,當數據量較小時,可以設置該參數為1,即進行拉普拉斯修正。
例子:利用Iris數據集進行Bayes判別
> install.packages("klaR") > X<-iris[1:100,1:4] > G<-as.factor(gl(2,50)) > library(klaR) > x<-NaiveBayes(X,G) > predict(x) $class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 91 92 93 94 95 96 97 98 99 100 2 2 2 2 2 2 2 2 2 2
由分析結果可知,根據已知分類的訓練樣品建立的判別規則,出現了0個樣本錯判,回代的判別正確率為100%。