貝葉斯定理與條件獨立假設:樸素貝葉斯分類方法深度解讀

今天給大家分享的是樸素貝葉斯算法,這個算法在實際使用中不是很多,因為現在很多算法已經發展的很好,性能上也比樸素貝葉斯算法的好很多,因此在實際中我們其實看到在實際應用中樸素貝葉斯算法的使用已經比較少,即使出現,最終的效果也是不及其他算法的,但是作為簡單、基礎的算法之一,我們掌握該算法的原理還是非常有必要的,同時在實際論文研究中也經常會使用貝葉斯算法的改進版,所以大家可以多了解了解。

樸素貝葉斯算法是基于貝葉斯定理與特征條件獨立假設的分類方法。基本的思路就是給定訓練數據集,首先基于特征條件獨立假設學習輸入輸出的聯合概率分布;然后基于此模型,對給定的輸入x,利用貝葉斯定理求出后驗概率最大的輸出y。在介紹樸素貝葉斯算法之前,我們先做一些基礎知識的鋪墊——貝葉斯定理,該定理匯總比較重要的兩個數學公式就是先驗概率分布和條件概率分布,先驗概率分布公式如下:

條件概率分布如下:

大家可以從公式中可以看出,先驗概率分布其實就是訓練數據中的不同類別數據占總體數據的比例(在實際中,頻率近似概率),條件概率分布就是指在確定數據是某個類別的條件下,樣本集X為指定值的概率,條件概率分布中的參數是非常多的,不僅涉及類別,還涉及特征以及特征的不同取值,假設X^{j}表示第j個特征,該特征可能的取值有S_{j},j=1,2.....n,Y表示可取的類別,這樣的類別有K個,那么參數個數為K\prod_{j=1}^{n}S_{j},因此在實際中是不可取的。從而產生了樸素貝葉斯算法中對條件概率分布做出的條件獨立性假設,如果大家對獨立性理解不了的話,請上網搜索答案,條件獨立性假設如下:

大家可以將該公式和沒有獨立的公式進行對比,可以發現,獨立之后的結果就是可特征進行了拆分,條件獨立假設等于是說分類的特征在類確定的條件下都是條件獨立的。這一假設使樸素貝葉斯算法變得簡單,但是會損失一定的分類準確率。

根據訓練數據,模型學習到了先驗分布和條件獨立概率分布,從而可以根據輸入的X計算得出后驗概率分布P(Y=c_{k}|X=x),該公式表示在知道特征X的情況下,類別為c_{k}的概率,因此我們將該結果最大的類輸出即可。后驗概率公式為:

再結合特征條件獨立性假設,公式變換為:

綜上,樸素貝葉斯分類器可以表示為:

該公式表示我們將數據特征X使用樸素貝葉斯算法公式計算了在不同類別上的后驗概率,最終選擇這些概率中最大的一個概率,將其對應的類別輸出,即判定為特征X對應的類別,在該公式中由于分母都是相同的,分母為什么是相同的,大家可以去網上查看簡化版的好理解,實際在計算不同類別的時候,大家分母上的計算都是使用了所有的類別和所有的特征進行計算,因此在分母結果都是一樣,從而該公式可以簡化為:

?大家可能會比較好奇,為什么這里需要使用后驗概率最大化來選擇類結果,后驗概率最大化代表類什么實際含義以及這個選擇是怎么來的?大家如果學習過其他算法其實都了解,每一種算法都會有一個目標函數,樸素貝葉斯算法也不例外,假設存在一個0-1損失函數,表達式為:

?期望風險函數為:

取條件期望得:

?

我們的目標就是追求期望損失最小話,從而可得 :

?我相信大家對這幾個等式應該還是比較好理解,可能稍微有難度就是第二等式,為什么直接將損失函數轉換為類別不等的條件概率,是因為在上一個式子損失函數中,只有類別不等的時候我們才會存在損失函數同時損失函數為1,因此,我們下面直接轉換成在確定樣本X的條件下,類別不等的概率,最終的結果就轉換成我們前面說的后驗概率最大化,從而我們后驗概率最大化是為了追求我們期望損失最小化得出來的。

樸素貝葉斯算法的總結如下:

我先使用簡單直觀的理解給大家講解一下樸素貝葉斯算法的流程,后續將會使用一個實際案例給大家展示,我們首先計算先驗概率,即不同類別在總數據中所占比例,接著,計算條件獨立概率分布,即在不同類別下,不同特征取某個特征值的概率,遍歷所有類別、所有特征以及所有特征取值,?最后新的輸入數據,計算其所有特征后驗概率,將最大后驗概率最大的類別作為該數據的類別。??

fbsrestecgoutput
101
011
000
010

以上是給出的訓練數據,前兩列代表特征,最后一列代表分類,我們將會給出測試集數據(1,1)作為案例用于算法測試,算法運行結果如下:

從計算數據可以看出,最終的結果判定為1類別。在這個實際計算過程中,大家看到了以上我們使用極大似然估計得出的概率可能為0,為了處理這種情況,于是對樸素貝葉斯算法進行了改進,得到了貝葉斯估計,條件概率的貝葉斯估計概率公式為:

?和樸素貝葉斯算法相比就是在分子分母上加上了一個正數\lambda>=0,確保了計算出的概率不會等于0,當\lambda==0時就是樸素貝葉斯使用的極大似然估計,當\lambda==1時就是拉普拉斯平滑,貝葉斯估計的先驗分布為:

大家也可以根據貝葉斯定理的前驗分布和條件概率分布求出某個數據特征的后驗概率,從而可以得出數據的類別,大家可以指定\lambda==1,即拉普拉斯平滑系數計算一下上面的案例,這里我就不再計算結果了,以上就是貝葉斯算法相關全部內容,大家如果對其他內容感興趣,關注公眾號“明天科技屋”,?更多精彩內容為您推薦!!!

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

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

相關文章

HotFix原理學習 IL2CPP 學習

原文鏈接:Unity 游戲用XLua的HotFix實現熱更原理揭秘-CSDN博客 本文通過對XLua的HoxFix使用原理的研究揭示出來這樣的一套方法。這個方法的 第一步:通過對C#的類與函數設置Hotfix標簽。來標識需要支持熱更的類和函數。第二步:生成函數連接器…

好視通視頻會議系統存在任意文件讀取漏洞復現 [附POC]

漏洞簡介 好視通視頻會議是由深圳市華視瑞通信息技術有限公司開發,其在國內率先推出了3G互聯網視頻會議,并成功應用于SAAS領域。 資產 FOFA:app"好視通-視頻會議" POC GET /register/toDownload.do?fileName../../../../../../../../../.…

代碼隨想錄-回溯算法

組合 //未剪枝 class Solution {List<List<Integer>> ans new ArrayList<>();Deque<Integer> path new LinkedList<>();public List<List<Integer>> combine(int n, int k) {backtracking(n, k, 1);return ans;}public void back…

MySql安全加固:可信IP地址訪問控制 設置密碼復雜度

MySql安全加固&#xff1a;可信IP地址訪問控制 & 設置密碼復雜度 1.1 可信IP地址訪問控制1.2 設置密碼復雜度 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 1.1 可信IP地址訪問控制 當您在創建用戶時使用’%作為主機部分&#xff0c;…

【C語言】字符型變量and整型變量的類型轉換

一、將字符型變量轉換為整型變量 char c A; int i (int)c; 二、將整型變量轉換成字符型變量 int i 65; char c (char)i;

Unity 實戰一:這幾年被廣告刷屏的沙雕跑酷游戲

姐就是女王&#xff0c;功夫跑酷&#xff0c;揀槍干架跑酷等 核心不用說了吧&#xff1a; 就是一個人不斷地跑&#xff0c;獲取不同屬性&#xff0c;判斷是否過關 好的&#xff0c;以下是一篇基于Unity 開發簡易版有障礙物的跑酷游戲的教程博客&#xff1a; 在這篇博客中&…

static在c語言中的作用

1、關鍵字static的作用是什么&#xff1f; 這個簡單的問題很少有人能回答完全。在C語言中&#xff0c;關鍵字static有三個明顯的作用&#xff1a; 1). 在函數體&#xff0c;一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。 2). 在模塊內(但在函數體外)&#xf…

Linux tload 命令教程:實時監控系統負載(附案例詳解和注意事項)

Linux tload 命令介紹 tload 是一個用于監控系統負載的命令行工具。它以圖形化的方式顯示系統的負載情況&#xff0c;幫助你了解 CPU 和內存的使用情況。 Linux tload 命令適用的 Linux 版本 tload 在大多數 Linux 發行版中都可用。如果你在某些特定的 Linux 發行版上找不到…

java數據結構與算法刷題-----LeetCode437. 路徑總和 III(前綴和必須掌握)

java數據結構與算法刷題目錄&#xff08;劍指Offer、LeetCode、ACM&#xff09;-----主目錄-----持續更新(進不去說明我沒寫完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目錄 1. 深度優先2. 前綴和 1. 深度優先 解題思路&#xff1a;時間復…

kibana7.17.7 將數據導出csv文件

配置kibana文件 首先先配置kibana.yaml內容如下&#xff0c;這里假設我的服務器ip地址為192.168.130.128&#xff0c;elasticsearch的ip地址為&#xff1a;192.168.130.129:9200&#xff0c;192.168.130.130:9200&#xff1a; server.host: "192.168.130.128" serv…

每日OJ題_分治歸并③_力扣315. 計算右側小于當前元素的個數

目錄 315. 計算右側小于當前元素的個數 解析代碼 力扣315. 計算右側小于當前元素的個數 315. 計算右側小于當前元素的個數 難度 困難 給你一個整數數組 nums &#xff0c;按要求返回一個新數組 counts 。數組 counts 有該性質&#xff1a; counts[i] 的值是 nums[i] 右側…

MongoDB 未授權訪問

開啟 MongoDB 服務時不添加任何參數時,默認是沒有權限驗證的,而且可以遠程訪問數據庫&#xff0c; 登錄的 用戶可以通過默認端口無需密碼對數據庫進行增、刪、改、查等任意高危操作。 防護 為 MongoDB 添 加 認 證 &#xff1a; 1)MongoDB 啟動時添加–auth參數 2)給 MongoD…

Java 讀寫 ini ( 調用 Windows Api )

市面上讀取 ini 的包都是 讀取整個文件到內存中,再獲取和修改值, 最后自己再調用保存文件, 這種方式在讀取大文件的時候 非常的不友好. windows api 中有現成的高效方法 安裝 jna-platform (里面封裝了各個系統的 api ,直接用就行. 不用再手動寫固定的函數定義) jna-platfor…

JPA常見異常 JPA可能拋出的異常

1、EntityNotFoundException&#xff08;實體不存在異常&#xff09;: 通過 JPA 查找一個不存在的實體。 2、NonUniqueResultException&#xff08;非唯一結果異常&#xff09;&#xff1a; 查詢返回了多個結果&#xff0c;但期望只有一個結果。 3、TransactionRequiredExcep…

AutoSAR(基礎入門篇)13.1-EB Tresos使用初探

目錄 一、新建工程 二、添加和刪除模塊 三、界面 四、代碼生成 1、直接生成代碼

Mac 以SH腳本安裝Arthas

SH腳本安裝Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安裝腳本說明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…

微服務中的Feign:優雅實現遠程調用的秘密武器(一)

本系列文章簡介&#xff1a; 本系列文章將深入探討Feign的特點、原理以及在微服務中的應用場景&#xff0c;幫助讀者更好地理解和使用這個優秀的遠程調用工具。無論您是初學者還是有經驗的開發人員&#xff0c;本文都將為您揭示Feign的秘密&#xff0c;并帶您一起走進微服務的世…

人類與機器的不同交流特點

對人類而言&#xff0c;事實是用來交流的&#xff0c;價值是用來自我交流的。事實是用來交流的&#xff0c;是通過提供準確、可證實的信息來傳遞和共享知識的。事實具有客觀性&#xff0c;不受個人主觀意見的影響。通過分享事實&#xff0c;人們可以更好地理解世界和彼此&#…

Android挖取原圖手指觸點區域RectF(并框線標記)放大到ImageView寬高與矩陣mapRadius,Kotlin

Android挖取原圖手指觸點區域RectF(并框線標記)放大到ImageView寬高與矩陣mapRadius&#xff0c;Kotlin 這里 Android挖取原圖中心區域RectF(并框線標記)放大到ImageView寬高&#xff0c;Kotlin-CSDN博客 實現的是把原圖中心區域的一片小圖挖取出來放大放到下面的ImageView里面…

if語句用法

if語句是單條件分支語句 定義&#xff1a;根據一個條件來控制程序執行流程(如圖3.2)。 語法格式&#xff1a; if&#xff08;表達式&#xff09;{ 若干語句 } ★注意★&#xff1a; ① 表達式的值必須是boolean 型&#xff1b; ② 不能用0代表false&#xff1b;用1代表 true&am…