跳轉到內容

R 中的資料探勘演算法/分類/樸素貝葉斯

來自華夏公益教科書,開放的書籍,面向開放的世界

本章介紹了用於分類的樸素貝葉斯演算法。樸素貝葉斯 (NB) 基於對貝葉斯定理(來自機率論)的應用,並帶有強烈的(樸素的)獨立性假設。它特別適合輸入維度很高的情況。儘管它很簡單,但樸素貝葉斯通常可以勝過更復雜的分類方法。


樸素貝葉斯

[編輯 | 編輯原始碼]

樸素貝葉斯分類器可以處理任意數量的獨立變數,無論它們是連續的還是分類的。給定一組變數, = {}, 我們希望為事件 在可能的結果集合 = {} 中構建後驗機率。用更熟悉的語言來說, 是預測器, 是因變數中存在的分類級別集。使用貝葉斯規則

其中 是類成員資格的後驗機率,即 屬於 的機率。

實際上,我們只對該分數的分子感興趣,因為分母不依賴於,並且特徵的值是給定的,因此分母實際上是常數。分子等價於聯合機率

這裡引入了“樸素”條件獨立假設:假設每個特徵在條件上與其他任何特徵統計獨立,當。這意味著

,因此聯合模型可以表示為

這意味著在以上獨立性假設下,類變數上的條件分佈可以表示為

其中 (證據)是一個僅依賴於 的縮放因子,即,如果特徵變數的值已知,則為常數。

最後,我們可以用一個類別等級 對一個新案例 F 進行標記,該等級實現最高的後驗機率。


可用實現

[edit | edit source]

CRAN 上至少有兩個 R 實現的樸素貝葉斯分類可用

安裝和執行樸素貝葉斯分類器

[edit | edit source]

E1071 是一個 CRAN 包,因此可以從 R 中安裝。

> install.packages('e1071', dependencies = TRUE)

安裝後,可以將 e1071 載入為庫。

> library(class) 
> library(e1071) 

它附帶了一些著名的資料集,可以作為 ARFF 檔案(Weka 的預設檔案格式)載入。我們現在載入一個示例資料集,著名的鳶尾花資料集 [1],並使用預設引數學習一個樸素貝葉斯分類器。首先,讓我們看一下鳶尾花資料集。

資料集

[edit | edit source]

鳶尾花資料集包含 150 個例項,對應於三種等頻的鳶尾花品種(山鳶尾、雜色鳶尾和維吉尼亞鳶尾)。下圖展示了雜色鳶尾,來自維基共享資源。

雜色鳶尾

每個例項包含四個屬性:萼片長度(釐米)、萼片寬度(釐米)、花瓣長度(釐米)和花瓣寬度(釐米)。下一張圖片顯示了每個屬性與其他屬性的對比圖,不同類別用顏色區分。

> pairs(iris[1:4], main = "Iris Data (red=setosa,green=versicolor,blue=virginica)",
      pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
鳶尾花屬性的繪圖

執行和結果

[edit | edit source]

首先,我們需要指定要使用的基數。

> data(iris)
> summary(iris)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50  

之後,我們就可以使用前 4 列建立資料集的樸素貝葉斯模型,來預測第五列。(透過以下方式對目標列進行因子化:dataset$col <- factor(dataset$col) )

            
> classifier<-naiveBayes(iris[,1:4], iris[,5]) 
> table(predict(classifier, iris[,-5]), iris[,5])
            
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         47         3
  virginica       0          3        47

分析

[edit | edit source]

這個簡單的案例研究表明,樸素貝葉斯分類器在資料集上犯的錯誤很少,儘管資料集很簡單,但它不是線性可分的,如散點圖所示,並且透過檢視混淆矩陣也可以看出,所有誤分類都在雜色鳶尾和維吉尼亞鳶尾例項之間。

參考文獻

[edit | edit source]
  1. ^ Fisher, R.A. (1936); The use of multiple measurements in taxonomic problems. Annual Eugenics, 7, Part II, 179-188.
華夏公益教科書