当前位置:网站首页>通俗易懂理解樸素貝葉斯分類的拉普拉斯平滑
通俗易懂理解樸素貝葉斯分類的拉普拉斯平滑
2022-06-27 09:41:00 【小白學視覺】
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅幹貨,第一時間送達這個男生的四個特征是長相不帥,性格不好,身高矮,不上進,我們最終得出的結論是女生不嫁!很多人說這是一道送分題,哈哈哈哈。我們用數學算法也說明了不靠譜是取不到老婆滴!
那麼我們再來一個例子,假如此時另外一對情侶,這對情侶中,男生的四個特征是,長相帥,性格爆好,身高高,上進,那麼他的女朋友嫁還是不嫁呢?可能又會有小夥伴說這是一道送分題,是不是,我們下面用事實說話!
下面通過例子來引出拉普拉斯平滑過程!
從例子開始
還是下面的訓練數據:

四個特征集合分別長相{帥,不帥}、性格{爆好,好,不好}、身高{高,中,矮}、上進與否{上進,不上進}
我們此時要求出該男生在四個特征分別是長相帥,性格爆好,身高高,上進的情况下,他對應的嫁與不嫁的概率誰大誰小,從而得出結論!
也就是要比較p(嫁|長相帥,性格爆好,身高高,上進)與p(不嫁|長相帥,性格爆好,身高高,上進)的概率大小。
按照樸素貝葉斯算法公式,我們可以得到如下公式:


由於兩者的分母都是p(長相帥)、p(性格爆好)、p(身高高)、p(上進),那麼我們可以不算分母,比較的時候只比較倆個公式分子大小即可。
好的,下面我們開始計算,先計算在四個特征的條件下,嫁的概率。
我們需要分別計算p(性格爆好|嫁)、p(長相帥|嫁)、p(身高高|嫁)、p(上進|嫁)
首先我們來算p(性格爆好|嫁)=?我們觀察訓練數據,發現如下:

居然沒有一個數據有爆好這個特點的,那麼p(性格爆好|嫁) = 0,那麼我們可以看出問題了,根據公式:

我們最後的p(嫁|長相帥、性格爆好、身高高、上進)由於一項p(性格爆好|嫁)為0,而造成整個概率為0,這顯然是錯誤的。
而這個錯誤的造成是由於訓練量不足,會令分類器質量大大降低。為了解决這個問題,我們引入Laplace校准(這就引出了我們的拉普拉斯平滑),它的思想非常簡單,就是對每個類別下所有劃分的計數加1,這樣如果訓練樣本集數量充分大時,並不會對結果產生影響,並且解决了上述頻率為0的尷尬局面。
引入拉普拉斯平滑的公式如下:


其中ajl,代錶第j個特征的第l個選擇,Sj代錶第j個特征的個數,K代錶種類的個數。
λ為1,這也很好理解,加入拉普拉斯平滑之後,避免了出現概率為0的情况,又保證了每個值都在0到1的範圍內,又保證了最終和為1的概率性質!
我們可以通過下面例子更加深刻的理解這個公式:(現在我們是加入拉普拉斯平滑)
加入拉普拉斯平滑
我們先需要分別計算p(性格爆好|嫁)、p(長相帥|嫁)、p(身高高|嫁)、p(上進|嫁),p(嫁)
p(性格爆好|嫁)=?統計滿足要求的如下面紅色部分

沒有一個滿足是性格爆好的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式,性格特征的個數為爆好,好,不好,三種情况,那麼Sj為3,則最終概率為1/9 (嫁的個數為6+特征個數為3)
p(長相帥|嫁)=?統計滿足條件的如下面紅色部分:

由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式,長相特征的個數為帥,不帥,兩種情况,那麼Sj為2,則最終概率p(長相帥|嫁)為4/8 (嫁的個數為6+特征個數為2)
p(身高高|嫁) = ?統計滿足條件的如下面紅色部分:

由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式,身高特征的個數為高,中,矮情况,那麼Sj為3,則最終概率p(身高高|嫁)為4/9 (嫁的個數為6+特征個數為3)
p(上進|嫁)=?統計滿足要求的如下面紅色部分:

由上圖可知滿足要求的為5個,按照加入拉普拉斯平滑後的公式,上進特征的個數為上進,不上進情况,那麼Sj為2,則最終概率p(上進|嫁)為6/8 (嫁的個數為6+特征個數為2)
p(嫁) = ?滿足要求的如下紅色標注:

由上圖可知滿足要求的為6個,按照加入拉普拉斯平滑後的公式,種類的個數為嫁,不嫁情况,那麼K為2,則最終概率p(嫁)為7/14 = 1/2 (嫁的個數為6+種類個數為2)
到這裏為止,我們已經算出了在該男生條件下,嫁的概率為:
p(嫁|長相帥、性格爆好、身高高、上進) = 1/9*4/8*4/9*6/8*1/2
下面我們需要算出p(不嫁|長相帥、性格爆好、身高高、上進)的概率,然後與上面的數值進行比較即可,算法與上面完全一模一樣!這裏也走一遍。
我們需要估計出p(長相帥|不嫁)、p(性格爆好|不嫁)、p(身高高|不嫁)、p(上進|不嫁),p(不嫁)的概率分別為多少。
p(長相帥|不嫁)=?滿足要求如下面紅色標注:

由上圖可知滿足要求的為5個,按照加入拉普拉斯平滑後的公式,長相帥特征的個數為不帥,帥情况,那麼Sj為2,則最終概率p(長相不帥|不嫁)為6/8 (不嫁的個數為6+特征個數為2)
p(性格爆好|不嫁)=?滿足要求如下面紅色標注:

沒有一個滿足是性格爆好的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式,性格特征的個數為爆好,好,不好,三種情况,那麼Sj為3,則最終概率p(性格爆好|不嫁)為1/9 (不嫁的個數為6+特征個數為3)
p(身高高|不嫁)=?滿足要求如下面紅色標注:

沒有一個滿足是身高高的條件,但是此時概率不為0,按照加入拉普拉斯平滑後的公式,身高特征的個數為高,中,矮,三種情况,那麼Sj為3,則最終概率p(身高高|不嫁)為1/9 (不嫁的個數為6+特征個數為3)
p(上進|不嫁)=?滿足要求如下面紅色標注:

由上圖可知滿足要求的為3個,按照加入拉普拉斯平滑後的公式,上進特征的個數為上進,不上進情况,那麼Sj為2,則最終概率p(上進|不嫁)為4/8 (不嫁的個數為6+特征個數為2)
p(不嫁)=?滿足要求的如紅色標注:

由上圖可知滿足要求的為6個,按照加入拉普拉斯平滑後的公式,種類的個數為嫁,不嫁情况,那麼K為2,則最終概率p(不嫁)為7/14 = 1/2 (不嫁的個數為6+種類個數為2)
到這裏為止,我們已經算出了在該男生條件下,不嫁的概率為:
p(不嫁|長相帥、性格爆好、身高高、上進) = 5/8*1/9*1/9*3/8*1/2
結論
於是我們可以得到
p(嫁|長相帥、性格爆好、身高高、上進) = 1/9*4/8*4/9*6/8*1/2 > p(不嫁|長相帥、性格爆好、身高高、上進) = 6/8*1/9*1/9*4/8*1/2
於是我們可以大膽的告訴女生,這樣的好男人,貝葉斯告訴你了,該嫁!!!
這就是我們使用拉普拉斯平滑後計算的整個算法過程!
希望對大家的理解有幫助~歡迎大家指錯交流!
好消息!
小白學視覺知識星球
開始面向外開放啦

下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號後臺回複:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟踪、生物視覺、超分辨率處理等二十多章內容。
下載2:Python視覺實戰項目52講
在「小白學視覺」公眾號後臺回複:Python視覺實戰項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰項目,助力快速學校計算機視覺。
下載3:OpenCV實戰項目20講
在「小白學視覺」公眾號後臺回複:OpenCV實戰項目20講,即可下載含有20個基於OpenCV實現20個實戰項目,實現OpenCV學習進階。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫學影像、GAN、算法競賽等微信群(以後會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功後會根據研究方向邀請進入相關微信群。請勿在群內發送廣告,否則會請出群,謝謝理解~边栏推荐
- 产品力对标海豹/Model 3,长安深蓝SL03预售17.98万起
- R language uses econcharts package to create microeconomic or macro-economic charts, demand function to visualize demand curve, and customize the parameters of demand function to enrich the visualizat
- 1098 Insertion or Heap Sort(堆排序解释)(PAT甲级)
- 提高效率 Or 增加成本,开发人员应如何理解结对编程?
- Decompile the jar package and recompile it into a jar package after modification
- ucore lab4
- 反编译jar包,修改后重新编译为jar包
- Take you to play with the camera module
- 新旧两个界面对比
- Markem imaje马肯依玛士喷码机维修9450E打码机维修
猜你喜欢

Installation and usage of source insight tool

Use aspese slides to convert PPT to PDF

提高效率 Or 增加成本,开发人员应如何理解结对编程?

es 根据索引名称和索引字段更新值

Win10 add right-click menu for any file

了解神经网络结构和优化方法

Quick start CherryPy (1)

Stop using system Currenttimemillis() takes too long to count. It's too low. Stopwatch is easy to use!

Nosql 数据库 -Redis 安装
快捷键 bug,可复现(貌似 bug 才是需要的功能 [滑稽.gif])
随机推荐
Source insight 工具安装及使用方法
Apache POI的读写
6月23日《Rust唠嗑室》第三期B站视频地址
torch.utils.data.RandomSampler和torch.utils.data.SequentialSampler的区别
借助原子变量,使用CAS完成并发操作
IO pin configuration and pinctrl drive
Tdengine invitation: be a superhero who uses technology to change the world and become TD hero
Demand visual Engineer
视频文件太大?使用FFmpeg来无损压缩它
一次线上移动端报表网络连接失败问题定位与解决
快捷键 bug,可复现(貌似 bug 才是需要的功能 [滑稽.gif])
One week's experience of using Obsidian (configuration, theme and plug-in)
Semi-supervised Learning入门学习——Π-Model、Temporal Ensembling、Mean Teacher简介
不容置疑,这是一个绝对精心制作的项目
Five page Jump methods for wechat applet learning
JS 文件上传下载
集合框架 泛型LinkedList TreeSet
产品力对标海豹/Model 3,长安深蓝SL03预售17.98万起
C # solve the relative path problem using SQLite
Improving efficiency or increasing costs, how should developers understand pair programming?