R語言數據分析與挖掘(第八章):判別分析(2)——貝葉斯(Bayes)判別分析

  • 2019 年 12 月 13 日
  • 筆記

在上一篇文章中(R語言數據分析與挖掘(第八章):判別分析(1

貝葉斯(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%。