1. 程式人生 > >乾貨 | 基於貝葉斯推斷的分類模型& 機器學習你會遇到的“坑”

乾貨 | 基於貝葉斯推斷的分類模型& 機器學習你會遇到的“坑”

640?wx_fmt=png

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

本文3153字,建議閱讀8分鐘。

本文講解了在學習基於貝葉斯推斷的分類模型中,我們需要的準備和方法。

數學準備

概率:事件不確定性程度的量化,概率越大,表示事件發生的可能性越大。

條件概率:P(A|B),在條件B下,發生A的概率。

聯合概率:P(A,B),A事件與B事件同時發生的概率。如果因子相互獨立,聯合概率等於因子概率乘積,即P(A,B)=P(A)P(B)。如果因子獨立性不可知,那麼有更普遍的形式:P(A,B)=P(B)P(A|B)。

邊緣概率:∑AP(A,B)或∫AP(A,B),對聯合分佈其中一個因子的求和(積分),就得到了另一個因子的邊緣概率。

獨立同分布:隨機變數中每個變數的概率分佈相同,且變數之間互相獨立。

貝葉斯定理

曾經有一個笑話:有個人坐飛機,帶了個炸彈。問他為什麼,他說,飛機上有1個炸彈的機率(假設)是萬分之一,根據概率論,同時有兩個炸彈的概率就是億分之一,所以我自己帶一個炸彈來降低該飛機上有炸彈的概率。

這個笑話之所以好笑,就是因為這個人混淆了聯合概率和條件概率,聯合概率是指兩件事情同時發生的概率,假如說飛機上有一個炸彈的概率是萬分之一,那麼有兩個炸彈的概率就是億分之一。而條件概率則是指在一件事情在另外一件事情的約束下發生的概率,此人已經攜帶了一個炸彈,那麼飛機上出現第二個炸彈的概率就是條件概率,仍然為萬分之一(假設攜帶炸彈相互獨立)。

如果A,B兩件事情相互獨立,聯合概率可以表示為P(AB)=P(A)P(B),我們用P(A|B)來表示給定B條件下A的發生概率,事實上,如果A,B不相互獨立,則P(A|B)≠P(A),聯合概率就表示為P(AB)=P(B)P(A|B)。

相應的,我們用P(B|A)來表示給定A條件下B的發生概率,聯合概率就變成了P(AB)=P(A)P(B|A)。如果我們連線起這兩個等式,再分別除以P(B)就會得到一個非常誘人且強大的公式,我們把他叫做貝葉斯定理:

640?wx_fmt=png

我們會把等式左邊的P(A|B)叫做後驗概率,等式右邊的P(A)叫做先驗概率,P(B|A)叫做似然,但後驗概率和似然函式在本質上仍然是條件概率。這樣的叫法是為了強調貝葉斯定理從結果推原因的過程,也可以理解為一種事件發生之後的概率的修正。

Example:

假設我們現在有兩個碗,一個碗裡有30個藍色的小球,10個紅色的小球,另一個碗裡藍色小球和紅色小球分別有20個,現在的問題並不是你隨機挑一個碗從裡面拿球,拿到藍色的概率是多少(因為這太簡單了)。我要問的問題是,我拿到了一個藍球,它更可能來自我隨機挑選的第幾個碗?

我們把挑選碗的過程叫做事件A1,A2,挑選小球的過程叫做事件B1,B2,分別對應藍色和紅色,我們先求P(A1|B1),將其帶入貝葉斯公式,就可以求出後驗概率為0.6,我們再求P(A2|B1),代入得後驗概率為0.4,說明我們如果選出一個藍球,這個藍球更可能來自於第一個碗。

貝葉斯引入的動機

我們在本系列課程的第一篇《過擬合問題》中提到將資料分為訓練集和測試集,以及我們做交叉驗證的意義。簡單來說,分集的目的是為了評估模型的泛化能力,而交叉驗證的目的是為了將整個評估過程變得準確。

模型的泛化能力為什麼如此重要?因為無論在實驗室還是在工業界,真實的資料量太過龐大,而且資料的增長速度越來越快,我們所利用的資料只能被認為是從現實取樣而來,我們的模型勢必要接觸那些從來沒在訓練集出現過的資料。我們希望模型面對未知資料會有好的預測效果,也就是說,模型勢必要對觀測上的不確定性做出推斷。

我們通常用概率來表示變數的不確定性程度,並且將真實的變數取值當作一個概率分佈,機器學習會有視角的轉變:

  • 從貝葉斯的框架討論機器學習,那麼問題的目標就變成了:從現有的資料中估計後驗概率P(l|x)。比如分類問題,我們對於每一個x,選擇能使後驗概率最大的類別。

  • 如果我們選取的模型存在有限個引數,可以利用最大似然估計或最大後驗估計來給出我們的優化函式。

現在我們主要集中於第一個視角,探討基於貝葉斯推斷的模型。從貝葉斯定理可以看出,我們對後驗概率的計算要通過似然和先驗概率,這樣的模型叫做生成式模型。而譬如logistic regression,是直接對後驗概率進行估計,沒有用到貝葉斯定理,這樣的模型叫做判別式模型。

基於貝葉斯推斷的分類方法

我們現在考慮典型的機器學習的二分類問題,我們每一個訓練樣本都有若干的特徵(feature)和確定的標籤(label),我們的測試樣本只有特徵,沒有標籤。所以從貝葉斯推斷的角度來看,我們需要尋找的是一個最大化的條件概率(後驗概率)P(l|X),我們可以將其理解為,在已知樣本X的前提下,最大化它來自類別l的概率。也可以理解為:對於每一個樣本X,我們選擇能夠使後驗概率最大的類別l。

假如我們面臨的問題是,根據天氣、溫度、溼度和風力4個特徵來預測要不要去打網球,我們訓練樣本如下圖所示:

640?wx_fmt=png

可以看出,類別l只有Yes和No兩種情況。如果我們的測試樣本X為(天氣=Sunny,溫度=Cool,溼度=high,風力=Strong),我們要分別計算出P(l=Yes|X)和P(l=No|X),然後比較大小,然後將概率大的那一方所選擇的類別當作我們預測的結果。

我們接下來的問題是,如何計算後驗概率P(l=Yes|X)和P(l=No|X)。我們將其帶入貝葉斯公式:

640?wx_fmt=jpeg

其中,P(l=Yes)很好理解,就是標記為Yes的樣本佔全部樣本的比例,我們也把它叫做類先驗(prior)概率,根據大數定律,我們可以根據出現的頻率來估計概率,這也是我們要從訓練樣本中獲取的資訊。

P(X)則是用於歸一化的證據(evidence)因子,也是X出現的概率。我們可以考慮,對於類別為No的後驗概率:

640?wx_fmt=jpeg

可以看出,P(X)是相同的,所以當我們比較兩者大小時,這一項與計算無關。

P(X|l=Yes)是條件概率,是指在標記Yes的樣本中具有特徵X的樣本所佔的比例,我們也把它叫做似然(likelihood),這也是我們要從訓練樣本中獲取的資訊.真正的問題在於,如果我們真的將X本身作為一個事件,那麼很有可能我們的測試樣本概率為零,而未被觀測到並不等於概率為零。

樸素貝葉斯(Naive Bayes)

我們注意到X是個向量,它包含了每個特徵的取值,於是我們可以將P(X|l=Yes)視為各個特徵取值的條件概率下的聯合概率,如果我們繼續假設特徵之間互相獨立,那麼聯合概率就變得非常容易計算:

640?wx_fmt=jpeg

樸素貝葉斯中,樸素(naive)的含義正是如此,它採用了屬性條件獨立性假設(attribute conditional independence assumption),讓似然變得簡單可計算。

讓我們先來總結一下上面那幅圖,分別計算各個屬性的條件概率:

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=jpeg

所以,就有:

640?wx_fmt=png

640?wx_fmt=png

計算結果發現,將這個樣本歸結於Yes的後驗概率大約為0.0053,歸結於No的後驗概率大約為0.0206,No的後驗概率遠遠大於Yes的後驗概率,也就是說,對於這樣一個樣本,我們的預測結果會是——不要去打網球。

除了樸素貝葉斯這樣一種基於貝葉斯推斷的分類模型,面對機器學習的迴歸問題,我們是否也有基於貝葉斯推斷的模型?甚至我們還可以問,貝葉斯只是應用於模型之中嗎?那麼,我們的下一篇將會為大家介紹貝葉斯推斷的迴歸模型。

課堂TIPS

  • 廣義來看,貝葉斯分類器是生成式模型的一種(generative models)。樸素貝葉斯是貝葉斯分類最簡單的形式,因為它假設了屬性的條件概率互相獨立,使得計算後驗概率簡單可行。

  • 我們文中所舉的例子是離散屬性,所以概率的形式均為概率質量函式(PMF),我們可以將其推廣到連續屬性,只需要將概率的形式換為概率密度函式(PDF),但本質並不會發生改變。

  • 我們在用樸素貝葉斯方法時,需要計算多個屬性的條件概率下的聯合概率。但如果我們的樣本多樣性不夠豐富,很可能會出現我們的測試樣本中的某些屬性值並未在訓練樣本的某個類中出現,如果直接求解,則會造成概率為零的後果。面對這樣的情形,我們會在計算先驗概率的時候,引入拉普拉斯修正,強行使未出現的屬性條件概率不為零。

  • 我們在使用貝葉斯分類器做訓練時,實際上是在訓練先驗概率P(l)和似然P(X|l)。我們可以為了預測準確度,不斷地將新增樣本的屬性所涉及的概率估計進行修正;我們也可以為了預測速度,將所有的P(X|l)和P(l)預先計算好,遇到測試樣本時直接查表判別。

  • 樸素貝葉斯所依賴的屬性條件獨立性不一定成立,所以還有半樸素貝葉斯分類器(semi-naive),它假設每個屬性存在一定的依賴,適當考慮一部分的屬性依賴。(可以看這篇論文: Semi-naive Bayesian classifier)


640?wx_fmt=gif

640?wx_fmt=png640?wx_fmt=jpeg

相關推薦

乾貨 | 基於推斷分類模型& 機器學習遇到的“

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)本文3153字,建議閱讀8分鐘。本文

機器學習學習筆記 第十六章 基於的新聞分類

利用貝葉斯分類器進行文字分類 考慮情況 1 對於文字分析,首先我們應該先利用停用詞語料庫對部分大量出現的停用詞進行遮蔽,可以百度直接搜停用詞進行下載 我們對於經常出現的詞,有可能是一個不太重要的詞,比

python實現推斷——垃圾郵件分類

理論 前期準備 資料來源 資料來源於《機器學習實戰》中的第四章樸素貝葉斯分類器的實驗資料。資料書上只提供了50條資料(25條正常郵件,25條垃圾郵件),感覺資料量偏小,以後打算使用scikit-learn提供的iris資料。 資料準備 和很

SegNet 語義分割網路以及其變體 基於後驗推斷的 SegNet

首先看一下Fate_fjh博主親自測試的實驗結果:SegNet基於FCN,修改VGG-16網路得到的語義分割網路,有兩種SegNet,分別為正常版與貝葉斯版,同時SegNet作者根據網路的深度提供了一個basic版(淺網路)。1. SegNet原始網路模型圖一:SegNet網

Knowledge Tracing -- 基於的學生知識點追蹤(BKT)

mod 所有 strong tor mode 領域 我們 med ability 目前,教育領域通過引入人工智能的技術,使得在線的教學系統成為了智能教學系統(ITS),ITS不同與以往的MOOC形式的課程。ITS能夠個性化的為學生制定有效的 學習路徑,通過根據

基於優化的超參數tuning

science tuning pos tps ted ati hyper targe div https://arimo.com/data-science/2016/bayesian-optimization-hyperparameter-tuning/ 貝葉斯優化

第四章樸素法----生成模型

4.1樸素貝葉斯的學習與分類 4.1.1基本方法 聯合概率分佈P(X,Y),獨立同步產生 先驗概率分佈P(Y=ck),k=1,2,…K 條件概率分佈P(X=x|Y=ck)=P(X1=x1,X2=x2,|Y=ck),k=1,2…K,(具有指數級的引數) 因此對概率分佈做獨立同分布假設: P(X

分享《斯方法概率編程與推斷》+PDF+源碼+Cameron+辛願

mar log ima 中文版 shadow watermark tex 書簽 -o 下載:https://pan.baidu.com/s/1V1fC4XSzQHtULvGA0baJ3A 更多資料分享:http://blog.51cto.com/14087171 《貝葉斯方

機器學習-新聞分類例項

  基礎知識儲備: 匯入常用python package匯入文章content,匯入停用詞表使用jieba對content內容分詞建立函式去除content中的停用詞(注意格式的不同 dataframe, series, list)統計詞頻:使用詞雲畫圖建立詞雲展示使用IF-IDF提取關鍵字構建

分類和最大似然

Bayes貝葉斯 一、Bayes小故事        貝葉斯(約1701-1761) Thomas Bayes,英國數學家。約1701年出生於倫敦,做過神甫。1742年成為英國皇家學會會員。1761年

機器學習線性迴歸模型

假設當前資料為X,迴歸引數為W,結果為B,那麼根據貝葉斯公式,可以得到後驗概率: ,我們的目標是讓後驗概率最大化。其中pD概率是從已知資料中獲取的量,視為常量;pw函式是w分佈的先驗資訊。 令:   求l函式最大化的過程稱為w的極大似然估計(ML),求pie函式最小化的

機器學習之樸素(NB)分類演算法與Python實現

樸素貝葉斯(Naive Bayesian)是最為廣泛使用的分類方法,它以概率論為基礎,是基於貝葉斯定理和特徵條件獨立假設的分類方法。 一、 概述 1.1 簡介 樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假

推斷--Gibbs Sampling

簡介     當我們用貝葉斯模型去建模複雜的問題時,就越來越需要有效的推斷方法來求解這些模型了。一言以蔽之,貝葉斯推斷的目的就是在一組隨即變數上維護一組完全後驗概率分佈。維護和應用這個概率分佈常包含積分步驟,在面對較為複雜的模型時,是無法有效計算的。基於MCM

層次型模型引數估計 Bayesian hierarchical model parameter estimation with Stan

再來總結下貝葉斯引數估計,分為以下幾部分: 1. 先說說貝葉斯引數估計 2. 再說說層次型模型,指的就是超引數(Hyper parameter)的選擇 3. 用R+stan的Hamiltonian MC把這些引數(資料分佈的引數和超引數)都採出來 這裡我

樸素分類器的Python3 實現

本篇文章是我在讀了李航的<統計學習方法>後手寫的演算法實現之一 原理請參考統計學習方法第四章樸素貝葉斯法-李航 程式碼如下: # - * - coding: utf - 8 -*- # # 作者:田豐 # 郵箱:[email pr

機器學習之(1)——學習樸素-三種模型理論+python程式碼程式設計例項

本文來源於: 部落格:http://blog.csdn.net/u012162613/article/details/48323777 http://blog.csdn.net/zhihaoma/article/details/51052064  感謝作者的分享,非常感謝

系統學習樸素-三種模型

概率論相關數學公式 條件概率: 相互獨立事件: 貝葉斯定理: 樸素貝葉斯分類器 眾所周知,樸素貝葉斯是一種簡單但是非常強大的線性分類器。它在垃圾郵件分類,疾病診斷中都取得了很大的成功。它只所以稱為樸素,是因為它假設特徵之間是相互獨立的,但是在現實生活中

機器學習筆記--樸素 &三種模型&sklearn應用

樸素貝葉斯 Naive Bayes 貝葉斯定理 根據條件概率公式: 在B條件下A發生的概率: P(A∣B)=P(AB)P(B) 在A條件下B發生的概率: P(B∣A)=P(AB)P(A) 則 P(A∣B)P(B)=P(AB)=P(B∣A)P(A)

狄利克萊過程模型(一):非引數無限混合模型和Dirichlet過程

[作者按] 這篇文章是根據edwin Chen的部落格 http://blog.echen.me/2012/03/20/infinite-mixture-models-with-nonparametric-bayes-and-the-dirichlet-process/ 和

基於生存分析的《冰與火之歌》人物死亡率分析

《冰與火之歌》書迷遍佈全球。該小說憑藉其豐富的人物設定受到廣大書迷青睞。然而,在馬丁( Mart