Naive Bayes Classifier - 樸素貝葉斯分類器

Naive Bayes Classifier - 樸素貝葉斯分類器

簡介

在機器學習中,樸素貝葉斯分類器是一系列基于“貝葉斯原理”和“特征之間獨立分布假設”的概率分類器的總稱。把它的名稱分成兩部分來看,一部分是“貝葉斯”對應的是“貝葉斯原理”;另一部分對應的是“樸素 Naive” 對應的是 “特征之間獨立分布假設”,因為在現實世界里這明顯是一個過于簡單的假設。

自20世紀50年代以來, 樸素貝葉斯一直受到廣泛的研究。它是在1960s,作為一種流行的文本分類方法進入人們的視野。經過適當的預處理, 它在文本分類領域甚至可以與更高級的算法(比如svm)取得相當的水平; 在自動醫療診斷中也有發現其應用價值。

數學原理

樸素貝葉斯本質上是一個條件概率模型,他首先要解決的問題是求出某個狀態X=(x1,…,xn)X=(x_1, \dots, x_n)X=(x1?,,xn?)下,發生事件CkC_kCk?的概率。數學表達式如下:
p(Ck∣x1,…,xn)p(C_k \mid x_1, \dots, x_n) p(Ck?x1?,,xn?)
根據“貝葉斯原理”,上述表達式可以轉化成如下表達式,其中X=(x1,…,xn)X=(x_1, \dots, x_n)X=(x1?,,xn?):

對于給定的x來說,p(x)其實是一定的,可以理解為是個常數。那么說明我們要求解的是上述等式的分子,分子可以用如下聯合概率(joint probability)表達式表示:
p(Ck,x1,…,xn)p(C_k , x_1, \dots, x_n) p(Ck?,x1?,,xn?)
根據條件概率定義,可以使用鏈式法則作如下推導:

到了這個時候,該’Naive Bayes’里的Naive出來表演了,Naive指的是簡單,樸素:假設X=(x1,…,xn)X=(x_1, \dots, x_n)X=(x1?,,xn?)里的所有xix_ixi?相互獨立。
根據這個前提假設我們可以知道:

因此,我們要求解的問題可以表達如下,其中∝\propto表示成正比:

可以進一步表達如下,其中

截止目前以上討論的都是 Naive Bayes 概率模型的推導問題,離我們要討論的 Naive Bayes Classifier 還差一步。要形成一個完整的 Naive Bayes Classifier,我們還需要一個判定法則。最通常用的一個法則是最大概率法則(MAP rule);

結合如上法則,我們可以形成一個完整的 Naive Bayes Classifier 了。

不同的 Naive Bayes Classifier 的不同之處主要體現在其對 P(xi∣y)P(x_i \mid y)P(xi?y) 的假設上,比如說 ‘Gaussian Naive Bayes’ 的假設是,P(xi∣y)P(x_i \mid y)P(xi?y) 服從高斯分布:

P(xi∣y)=12πσy2exp?(?(xi?μy)22σy2)P(x_i \mid y) = \frac{1}{\sqrt{2\pi\sigma^2_y}} \exp\left(-\frac{(x_i - \mu_y)^2}{2\sigma^2_y}\right)P(xi?y)=2πσy2??1?exp(?2σy2?(xi??μy?)2?)

在訓練一個 “Gaussian Naive Bayes Classifier” 的時候,我們的目的是計算出 y 的mean(μy\mu_yμy?)和std(σy2\sigma^2_yσy2?)。

優劣勢討論

樸素貝葉斯是一種基于概率理論的分類算法,其代碼實現和訓練都比較簡單,需要計算量較少。盡管它對于特征相互獨立這一假設不太符合實際,但是卻使其在在實際中更加實用。特征間關系的解耦,使得我們可以獨立地研究每個特征相對于類別的分布,有效避免了‘維度災難’(即需要處理的數據量隨著特征數量(維度)的增加呈指數級地增長)。

另一方面,盡管樸素貝葉斯在分類領域的效果不錯,是處理分類問題的一把好手,但卻不能準確預測事務的概率,它的機制設計是通過概率之間的比較輸出結果,更關注的是相對的大小。

參考文獻

維基百科 - Naive Bayes Classifier

scikit-learn - 1.9. Naive Bayes

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hello,My first blog!

這是我的第一個博客,之所以想開始寫博客主要有幾個原因: 1)剛剛畢業,想記錄自己在技術方面的成長; 2)不斷學習,不斷思考,活到老,學到老; 3)希望…

如何在Oracle官網上下載歷史版本的JDK

點擊下面鏈接: http://java.sun.com/products/archive/ 選擇對應的版本,然后它需要你注冊一個Oracle賬號,注冊一個然后登陸就行了

PL/SQL Developer調試Oracle存儲過程

1,選中存儲過程,右鍵,點擊Edit,會打開一個窗口,提示錯誤信息2,添加debug information3,開始調試4,點擊調試窗口上面的按鈕進行調試

Oracle復雜查詢

1、 列出至少有一個員工的所有部門編號、名稱,并統計出這些部門的平均工資、最低工資、最高工資。 1、確定所需要的數據表: dept表:部門名稱;emp表:統計信息; 2、確定已知的關聯字段: emp.de…

TCP三次握手和四次揮手以及11種狀態

TCP三次握手和四次揮手以及11種狀態 1、三次握手 置位概念:根據TCP的包頭字段,存在3個重要的標識ACK、SYN、FIN ACK:表示驗證字段 SYN:位數置1,表示建立TCP連接 FIN:位數置1,表示斷開TCP連…

計算機網絡體系結構——各層的功能

OSI七層架構 物理層主要功能:實現比特流的透明傳輸。基本單位:比特。 數據鏈路層主要功能 :封裝成幀 。把幀從原MAC傳到目的MAC(相鄰節點之間幀的透明傳輸) 差錯檢測 循環冗余檢測法。只檢測有沒有比特錯誤&#xf…

HTTP報文分析

一、HTTP請求報文解剖 HTTP請求報文由3部分組成(請求行請求頭請求體): 下面我們基于socket編寫一個簡單的HTTP server import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.Inp…

SSM框架整合一(springmvc+spring+mybatis+maven+tomcat)

一,環境說明 jdk1.7.0_07(cmd命令行輸入java -version查看),點擊下載 eclipse Kepler Service Release 2 apache-maven-3.3.9(cmd命令行輸入mvn -v查看),點擊下載 apache-tomcat-7.0.52,點擊下載 mysql-5.5.28-winx64&#xff0c…

如何在windows機器上安裝apache ab

為什么要使用apache ab,apache ab的是用來干嘛的,apache ab的命令? 如果您是來找上面這些問題的答案,那么請立刻關掉當前頁面,因為這篇文章是純粹的安裝教程,避免浪費時間。 一,安裝環境 win…

apache log4j入門

學習一項新東西之前,我常常問自己: 這項技術是什么? 這項技術為我們做了什么? 為什么不用其他類似的技術? 如何使用這項技術? 于是我帶著這些問題開始學習apache log4j 一,apache log4j是…

低版本Eclipse如何快速設置黑色主題

低版本的Eclipse(例如Kepler Service Release 2),沒有自帶的黑色主題,并且在線安裝黑色主題會報錯 去網上找了一圈結果都是騙人的,這個時候別著急,只需三個簡單的步驟即可完成黑色主題配置。 下面是設置完…

tomcat-maven插件熱部署(簡潔版)

最近在學ssm框架,為了提高學習效率,想使用tomcat-maven插件熱部署,網上有很多關于這方面的文章,但是有很多坑。 自己總結了一下,簡化了多余的配置,還有運行過程中發生異常的原因。 環境:apach…

eclipse中配置jad反編譯插件

1 下載Eclipse支持jad插件的jar包 將下載得到的net.sf.jadclipse_3.3.0.jar放到eclipse》plugins目錄下 2 eclipse配置jad插件 下載jad.exe 3 設置文件關聯

SpringCloud學習之路(一)-簡單Demo

首先,我們先在C:\Windows\System32\drivers\etc路徑下的hosts最后添加兩個地址用于模擬服務端以及消費端的IP 127.0.0.1 dept-8001.com #微服務端127.0.0.1 client.com #消費端 SpringCloud的一個最基礎Demo,本地真實模擬環境(服務的創建者以及消費者),這是我們Demo截圖: 分為一…

Oracle數據庫數據泵導入導出

由于開發過程中有時候無法直接連數據庫,這時候需要將數據庫導入開發環境中,故此總結一個完整的數據庫導入導出過程。 注意expdp和impdp命令末尾都不能加分號 1 導出某個用戶的所有數據庫對象 1.1 Linux導出 su - oracle 授權用戶grant exp_full_data…

eclipse工作區打不開的解決方案

今天上班的時候發現eclipse打開總是閃退,剛開始以為是eclipse的問題,后來才發現是工作區的問題。 分享出來,希望能夠幫助遇到同樣問題的人。 1 設置詢問打開的工作區 eclipse安裝目錄\configuration\.settings\org.eclipse.ui.ide.prefs&a…

日期時間總結

今天總結一下日期時間如何處理,方便以后查看。 1 Oracle 1.1 日期格式參數及其含義說明 Oracle不區分大小寫,所以下面參數大小寫都可以 D 一周中的星期幾 DAY 天的名字,使用空格填充到9個字符 DD …

Oracle對象被鎖如何處理

1 查看被鎖住的對象 select object_name,machine,s.sid,s.SERIAL# from v$locked_object l,dba_objects o ,v$session s where l.object_id  o.object_id and l.session_ids.sid; 2 解鎖 將1中查詢出的sid和serial#,作為參數 alter system kill session 2400,…

BeycondCompare3破解綠色版下載

鏈接: https://pan.baidu.com/s/1GBtkLdqU7wTAzjvn2QfHrw 提取碼: rzcw 復制這段內容后打開百度網盤手機App,操作更方便哦

Oracle rowid和rownum的區別

rowid和rownum在本質上有區別: rowid rowid是物理結構上的,每插入一行數據,都會生成一條唯一的編號。可以說默認排序是根據rownum升序的,但是本質上還是根據rowid升序排列的。 rownum rownum可以說是偽列,并不存在&a…