iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

簡單貝氏分類器

簡單貝氏分類器(Naïve bayes, NB)為基於貝氏定理和隨機變數之間具有條件獨立的假設所建立的分類模型,可直接利用條件機率相乘算出聯合機率分佈。基於數學定理,因此可透過計算給定特定變數特徵下,該資料點在哪個分類下發生的機率最大,並藉此做到分類。

數學式表示

使用數學式可表示成
https://ithelp.ithome.com.tw/upload/images/20220924/20151279C4Afnkfidz.png
(1) 透過貝氏定理
https://ithelp.ithome.com.tw/upload/images/20220924/20151279cVR7Cm7Bfh.png
https://ithelp.ithome.com.tw/upload/images/20220924/20151279c319rabrh0.png
(2) 假設隨機變數之間具有條件獨立
https://ithelp.ithome.com.tw/upload/images/20220924/20151279pghhxcB2UP.png

藉由訓練資料,即可得到各個機率數值,因此便可計算

優點

  • 當樣本數夠多時,所計算出的機率不容易有偏差,可避免過度擬和的問題
  • 所需估計的特徵數量較少
  • 對於缺失資料並不敏感
  • 模型訓練快速且所得結果穩定

缺點

  • 模型對於特徵條件獨立的假設,在現實中是較難成立的

實作

R: e1071套件中的naiveBayes

library(e1071)
# 模型建立
model_nb <- naiveBayes(Activity ~ .,data = training)
# 預測
pred_nb <- predict(model_nb,testing)
# 衡量
confusionMatrix(pred_nb,reference = as.factor(testing$Activity))

https://ithelp.ithome.com.tw/upload/images/20220924/201512791XJWDC5BXT.png

Python: sklearn.naive_bayes套件中的GaussianNB

參考:連結

from sklearn.naive_bayes import GaussianNB
# 模型建立
model_nb = GaussianNB()
model_nb.fit(X_train, Y_train)
# 預測
pred_nb = model_nb.predict(X_test)
# 衡量
accuracy = metrics.accuracy_score(pred_nb,Y_test)
print(accuracy)  # 0.677584423920408

上一篇
[Day14] 決策樹(Decision tree)
下一篇
[Day16] 支持向量機(SVM, SVC)
系列文
人類行為數據分析- 以R和Python進行實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言