Python機(jī)器學(xué)習(xí)基礎(chǔ)教程學(xué)習(xí)筆記(7)——樸素貝葉斯分類(lèi)器

Python機(jī)器學(xué)習(xí)基礎(chǔ)教程學(xué)習(xí)筆記(7)——樸素貝葉斯分類(lèi)器

樸素貝葉斯分類(lèi)器(Naive Bayesian Classifier)

  • 樸素貝葉斯分類(lèi)器比線(xiàn)性模型訓(xùn)練速度更快
  • 代價(jià)是泛化能力要比線(xiàn)性更稍差

樸素貝葉斯模型如此高效的原因在于:

  • 它通過(guò)單獨(dú)查看每個(gè)特征來(lái)學(xué)習(xí)參數(shù),并從每個(gè)特征中收集簡(jiǎn)單的類(lèi)別統(tǒng)計(jì)數(shù)據(jù)

sk-learn中實(shí)現(xiàn)了三種樸素貝葉斯分類(lèi)器:

  • GaussianNB:應(yīng)用于任意連續(xù)數(shù)據(jù)。
  • BernoulliNB:假定輸入的數(shù)據(jù)為二分類(lèi)數(shù)據(jù)。
  • MultifomialNB:假定輸入數(shù)據(jù)為計(jì)數(shù)數(shù)據(jù)。

BernoulliNB和MultifomialNB主要用于文本數(shù)據(jù)分類(lèi)。

BernoulliNB分類(lèi)器計(jì)算每個(gè)類(lèi)別中每個(gè)特征不為0的元素個(gè)數(shù)。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import mglearn
# 4個(gè)數(shù)據(jù)點(diǎn),每個(gè)點(diǎn)有4個(gè)二分特征
X = np.array([
    [0,1,0,1], # 類(lèi)別0:
    [1,0,1,1], # 類(lèi)別1:
    [0,0,0,1], # 類(lèi)別0:
    [1,0,1,0]  # 類(lèi)別1:
])
# 一共有兩個(gè)類(lèi)別:0和1
y = np.array([0,1,0,1])
counts = {}
# 計(jì)算每個(gè)類(lèi)別中每個(gè)特征不為0的元素個(gè)數(shù)
for label in np.unique(y):
    counts[label]=X[y==label].sum(axis=0)
print("Feature counts:\n{}".format(counts))
Feature counts:
{0: array([0, 1, 0, 2]), 1: array([2, 0, 2, 1])}
  • MultifomialNB計(jì)算每個(gè)類(lèi)別中每個(gè)特征的平均值。
  • GaussianNB會(huì)保存每個(gè)類(lèi)別中每個(gè)特征的平均值和標(biāo)準(zhǔn)差。
  • 要想做出預(yù)測(cè),需要將數(shù)據(jù)點(diǎn)與每個(gè)類(lèi)別的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行比較,并將最匹配的類(lèi)別作為預(yù)測(cè)結(jié)果。
  • MultifomialNB和BernoulliNB預(yù)測(cè)公式的形式都與線(xiàn)性模型完全相同。
  • 樸素貝葉斯模型coef_的含義與線(xiàn)性模型稍有不同,因?yàn)閏oef_不同與w。

優(yōu)點(diǎn)、缺點(diǎn)和參數(shù)

  • MultinomialNB和BernoulliNB都有一個(gè)參數(shù)alpha,用于控制模型復(fù)雜度。

  • alpha的工作原理是,算法向數(shù)據(jù)中添加alpha那么多的數(shù)據(jù)點(diǎn),這些點(diǎn)對(duì)所有特征都取正值。這可以將統(tǒng)計(jì)數(shù)據(jù)“平滑化”(smoothing)。

  • alpha越大,平滑性越強(qiáng),模型復(fù)雜度就越低。

  • 算法性能對(duì)alpha值的魯棒性相對(duì)較好,也就是說(shuō),alpha值對(duì)模型性能并不重要。

  • 但是調(diào)整這個(gè)參數(shù)通常都會(huì)使精度略有提高。

  • GaussianNB主要用于高維數(shù)據(jù),而另外兩種樸素貝葉斯模型則廣泛用于稀疏計(jì)數(shù)數(shù)據(jù),比如文本。

  • MultinomialNB的性能通常要優(yōu)于BernoulliNB,特別是在飲食很多非零特征的數(shù)據(jù)集(即大型文檔)上。

  • 樸素貝葉斯模型的許多優(yōu)點(diǎn)和缺點(diǎn)都與線(xiàn)性模型相同。

  • 它的訓(xùn)練和預(yù)測(cè)速度都很快,訓(xùn)練過(guò)程也很容易理解。

  • 該模型對(duì)高維稀疏數(shù)據(jù)的效果很好,對(duì)參數(shù)的魯棒性也相對(duì)較好。

  • 樸素貝葉斯 模型是很好的基準(zhǔn)模型,常用于非常大的數(shù)據(jù)集,在這些數(shù)據(jù)集上即使訓(xùn)練線(xiàn)性模型可能也要花費(fèi)大量時(shí)間。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容