Machine Learning-貝葉斯規(guī)則分類器(上)

貝葉斯規(guī)則分類器

目錄

一、簡(jiǎn)介

二、模型相關(guān)基礎(chǔ)知識(shí)

2.1關(guān)聯(lián)分析

2.2Beta分布和二項(xiàng)分布(共軛分布)

2.3Dirichlet分布和多項(xiàng)式分布(共軛分布)

2.4馬爾科夫鏈蒙特卡洛方法(MCMC)

三、貝葉斯規(guī)則分類器

四、模擬實(shí)驗(yàn)

五、模型的評(píng)估與對(duì)比

六、結(jié)束語

一、簡(jiǎn)介

在醫(yī)學(xué)、證券、電信、保險(xiǎn)等領(lǐng)域,對(duì)預(yù)測(cè)模型的精確度要求很高的同時(shí),也要求模型具有很高的可解釋性,目前主流的機(jī)器學(xué)習(xí)模型雖然在穩(wěn)定性和精確度上表現(xiàn)較好,但是存在一個(gè)比較嚴(yán)重的問題,就是可解釋性很差,本文介紹一種準(zhǔn)確率很高且可以高度解釋的模型————貝葉斯規(guī)則分類器模型(BRL)。此預(yù)測(cè)模型在醫(yī)學(xué)的中風(fēng)預(yù)測(cè)中,表現(xiàn)完勝現(xiàn)行的CHADS模型和其他機(jī)器學(xué)習(xí)模型,且具有高度的可解釋性。

對(duì)于決策樹、決策列表、關(guān)聯(lián)分類器模型,使用的是貪婪算法減少計(jì)算量,但是貪婪算法嚴(yán)重影響模型的準(zhǔn)確性和可解釋性,如果不使用貪婪算法,在全樣本空間進(jìn)行搜索,計(jì)算量又是一個(gè)問題。貝葉斯規(guī)則分類器模型找到了兩者之間的平衡,因?yàn)樗皇且砸环N貪婪的、涉及分裂和剪枝的方式來構(gòu)建的。貝葉斯規(guī)則分類器是使用了預(yù)先定義的規(guī)則,將模型空間減少到規(guī)則的排列,而不是所有的分割集。

此模型涉及到幾大知識(shí)點(diǎn),關(guān)聯(lián)分析、Beta分布的共軛分布是多項(xiàng)式分布、MCMC采樣,下面先介紹這三塊的一些概念和知識(shí)。

二、模型相關(guān)基礎(chǔ)知識(shí)

2.1關(guān)聯(lián)分析

關(guān)聯(lián)分析是一種簡(jiǎn)單、實(shí)用的分析技術(shù),就是發(fā)現(xiàn)存在于大量數(shù)據(jù)集中的關(guān)聯(lián)性或相關(guān)性,從而描述了一個(gè)事物中某些屬性同時(shí)出現(xiàn)的規(guī)律和模式。其是從大量數(shù)據(jù)中發(fā)現(xiàn)項(xiàng)集之間有趣的關(guān)聯(lián)和相關(guān)聯(lián)系。關(guān)聯(lián)分析的一個(gè)典型例子是購(gòu)物籃分析。該過程通過發(fā)現(xiàn)顧客放入其購(gòu)物籃中的不同商品之間的聯(lián)系,分析顧客的購(gòu)買習(xí)慣。通過了解哪些商品頻繁地被顧客同時(shí)購(gòu)買,這種關(guān)聯(lián)的發(fā)現(xiàn)可以幫助零售商制定營(yíng)銷策略。其他的應(yīng)用還包括價(jià)目表設(shè)計(jì)、商品促銷、商品的排放和基于購(gòu)買模式的顧客劃分。

為了講清關(guān)聯(lián)分析,我們引入以下概念。

事物:

每一個(gè)交易記錄被稱為一個(gè)事物,在購(gòu)物籃案例中,每一個(gè)購(gòu)物的交易記錄就是一個(gè)事物。

事物庫:

一些事物的集合被稱為事物件庫。

項(xiàng):

事物中的每一個(gè)元素稱為一個(gè)項(xiàng),在購(gòu)物籃案例中,每一個(gè)商品就是一個(gè)項(xiàng)。

項(xiàng)集:

項(xiàng)組成的集合稱為項(xiàng)集。

項(xiàng)集的支持度計(jì)數(shù):

一個(gè)項(xiàng)集在事物庫中出現(xiàn)的次數(shù),叫做這個(gè)項(xiàng)集的支持度計(jì)數(shù)。

項(xiàng)集的支持度:

一個(gè)項(xiàng)集的支持度計(jì)數(shù)除以事物庫中事物的總數(shù),就是這個(gè)項(xiàng)集的支持度。

頻繁項(xiàng)集:

如果我們對(duì)項(xiàng)目集的支持度設(shè)定一個(gè)最小閾值,那么所有支持度大于這個(gè)閾值的項(xiàng)集就是頻繁項(xiàng)集。

關(guān)聯(lián)規(guī)則:

項(xiàng)集和項(xiàng)集之間可以定義一個(gè)規(guī)則,如項(xiàng)集X,Y,可以定義關(guān)聯(lián)規(guī)則:X->Y.

關(guān)聯(lián)規(guī)則的支持度:

對(duì)于關(guān)聯(lián)規(guī)則X->Y ,X的項(xiàng)和Y的項(xiàng)構(gòu)成的新的項(xiàng)集的支持度為關(guān)聯(lián)規(guī)則的支持度。公式如下:
s(X->Y)=\frac{\sigma(X \bigcup Y )}{N}
其中N為事物庫中事物的總數(shù),\sigma(X \bigcup Y )為X的項(xiàng)和Y的項(xiàng)構(gòu)成的項(xiàng)集。

關(guān)聯(lián)規(guī)則的置信度:

項(xiàng)集Y在包含項(xiàng)集X的事物中出現(xiàn)的頻繁程度定義為關(guān)聯(lián)規(guī)則的置信度。表達(dá)式如下:
c(X->Y)=\frac{\sigma(X \bigcup Y )}{\sigma(X )}

支持度很低的規(guī)則只能偶然出現(xiàn),支持度通常用來刪除那些無意義的規(guī)則。還具有一種期望的性質(zhì),可以用于關(guān)聯(lián)規(guī)則的發(fā)現(xiàn)。
置信度度量通過規(guī)則進(jìn)行推理具有可靠性。對(duì)于給定的規(guī)則,置信度越高,Y在包含X的事務(wù)中出現(xiàn)的可能性越大。置信度也可以估計(jì)Y在給定X的條件下概率。

對(duì)于關(guān)聯(lián)規(guī)則定義這兩個(gè)度量很有意義的。首先,通過對(duì)規(guī)則支持度支持度的限定濾去沒有意義的規(guī)則。我們從商家的角度出發(fā),數(shù)據(jù)挖掘意義是通過挖掘做出相應(yīng)的戰(zhàn)略決策產(chǎn)生價(jià)值。如果一個(gè)規(guī)則支持度很低,說明顧客同時(shí)購(gòu)買這些商品的次數(shù)很少,商家針對(duì)這個(gè)規(guī)則做決策幾乎沒有意義。其次,置信度越大說明這個(gè)規(guī)則越可靠。

至此,我們可以通過定義上面的概念,來做關(guān)聯(lián)分析,一個(gè)簡(jiǎn)單粗暴的算法是,遍歷事物庫中所有的關(guān)聯(lián)規(guī)則,選擇較大支持度和較大置信度的關(guān)聯(lián)規(guī)則做關(guān)聯(lián)分析。但是這個(gè)做法雖然簡(jiǎn)單,但是計(jì)算量極其大,所以引入以下兩個(gè)算法:Apriori算法、FP-growth算法。

Apriori算法

這一算法思想很簡(jiǎn)單,就是為了減少暴力搜索的計(jì)算量,我們不在全部項(xiàng)集規(guī)則的排列組合中遍歷,使用關(guān)聯(lián)規(guī)則的支持度和置信度進(jìn)行剪枝,使搜索范圍收縮到比較小的空間,具體操作分兩步。

1、使用項(xiàng)集的支持度尋找頻繁項(xiàng)集

一個(gè)項(xiàng)集如果使頻繁項(xiàng)集,那么他的子集一定是頻繁項(xiàng)集。如果一個(gè)項(xiàng)集是非頻繁項(xiàng)集,那么他的超級(jí)也一定是非頻繁項(xiàng)集。

根據(jù)以上結(jié)論,我們使用多次搜索,第k次搜索時(shí),搜索長(zhǎng)度為k得項(xiàng)集(項(xiàng)集得長(zhǎng)度就是項(xiàng)集中含有項(xiàng)得數(shù)量),如:第一次搜索時(shí),搜索長(zhǎng)度為1得項(xiàng)集。在每次搜索時(shí),我們根據(jù)事先給定的項(xiàng)集支持度的閾值,刪除閾值以下的項(xiàng)集,找到第k次搜索的長(zhǎng)度為k的頻繁項(xiàng)集。

因?yàn)榉穷l繁項(xiàng)集的超級(jí)一定是非頻繁項(xiàng)集,這樣,我們?cè)诘趉+1次搜索時(shí),就沒必要搜索包含非頻繁項(xiàng)集的項(xiàng)集。這樣我們?cè)趯ふ翌l繁項(xiàng)集時(shí),大大減少了搜索空間。

2、使用關(guān)聯(lián)規(guī)則的置信度尋找關(guān)聯(lián)規(guī)則

第一步中我們得到了事物庫中所有的頻繁項(xiàng)集,我們使用頻繁項(xiàng)集參數(shù)關(guān)聯(lián)規(guī)則,我們對(duì)這些規(guī)則進(jìn)行遍歷,找到符合置信度要求的關(guān)聯(lián)規(guī)則,在遍歷時(shí),因?yàn)椴粷M足置信度的關(guān)聯(lián)規(guī)則的子關(guān)聯(lián)規(guī)則一定不滿足置信度要求。所以我們?cè)诒闅v每一步時(shí),記錄剔除不滿足置信度的關(guān)聯(lián)規(guī)則及其子關(guān)聯(lián)規(guī)則。

有了 上面兩步,我們就可以找到強(qiáng)的關(guān)聯(lián)規(guī)則。上面兩步搜索的流程如下兩圖:

[圖片上傳中...(3.png-884e62-1625712621167-0)]
3.png

FP-growth算法

對(duì)于Apriori算法已經(jīng)大大減少了計(jì)算量,F(xiàn)P-growth算法在Apriori算法的基礎(chǔ)上,進(jìn)一步減少了計(jì)算量,使事物庫僅需要遍歷兩邊。

FP-growth算法之所以大大減少計(jì)算量,是因?yàn)镕P-growth算法使用的數(shù)據(jù)是一種數(shù)據(jù)壓縮的存儲(chǔ)形式FP樹。在這種數(shù)據(jù)結(jié)構(gòu)下面,我們可以很便利的找到頻繁模式。從而找到強(qiáng)的關(guān)聯(lián)規(guī)則。與此同事,F(xiàn)P-growth算法使用了分治策略,將一個(gè)大問題分解成幾個(gè)不相交的小問題,從而使我們?cè)谔幚韱栴}時(shí),可以只關(guān)注和我們感興趣的子問題。

FP 樹

FP樹是頻繁模式樹,其是一種壓縮存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。其構(gòu)造方式為增量構(gòu)造。這種樹的優(yōu)點(diǎn)是,可以很容易的通過其找到頻繁模式。具體構(gòu)造算法如下:

1、遍歷一次數(shù)據(jù)庫,導(dǎo)出頻繁項(xiàng)(1項(xiàng)集)的集合和支持度計(jì)數(shù)(頻率)。并且以降序排列得到項(xiàng)頭表L。

2、創(chuàng)建根節(jié)點(diǎn)NULL.

3、將事務(wù)庫中的事物按照項(xiàng)頭表L中項(xiàng)目順序重新排了事物,注意這一步需要提出非頻繁的1項(xiàng)集。

4、將事物庫中事物一條條添加到根節(jié)點(diǎn),添加方法每一個(gè)項(xiàng)向前面的項(xiàng)鏈接,第一個(gè)項(xiàng)鏈接根節(jié)點(diǎn)。當(dāng)?shù)趉條事物中前面的項(xiàng)在前k-1條事物中出現(xiàn)過時(shí),直接鏈接到前面的節(jié)點(diǎn)上,節(jié)點(diǎn)上記錄項(xiàng)的同事,記錄項(xiàng)在事務(wù)中出現(xiàn)的次數(shù)。

5、當(dāng)遍歷完所有事物時(shí),將樹上相同項(xiàng)用虛線相連,就形成了FP樹。

FP樹如下圖:

微信圖片_20210520102130.png

有了FP樹,我們可以使用FP樹找到頻繁項(xiàng)集,但是還需要兩個(gè)概念,一是條件模式基,二是條件樹。

條件模式基

條件模式基就是包含F(xiàn)P-Tree中與后綴模式一起出現(xiàn)的前綴路徑的集合。

例如,上圖中包含項(xiàng)a的子節(jié)點(diǎn)對(duì)應(yīng)的條件模式基為:{f:1,c:1,a:1,m:1}、{f:1,b:1,m:1}、{c:1,b:1,m:1}。一般的我們不寫最后一個(gè)項(xiàng)m:1,所以項(xiàng)m的條件模式基是:{f:1,c:1,a:1}、{f:1,b:1}、{c:1,b:1}

條件樹

有了條件模式基,我們就可以用這些基重新構(gòu)造一顆FP樹,接著上面的例子,項(xiàng)m的條件樹為(設(shè)支持度的閾值為大于等于2):

微信圖片_20210520152230.png
尋找頻繁項(xiàng)集

由上圖可以得到,包含m的全部頻繁模式為:{m:3}、{f:2,m:2}、{c:2,m:2}、{b:2,m:2}。同理使用遞歸方法,可以找到所有的頻繁項(xiàng)集。

至此我們使用FP算找到了頻繁項(xiàng)集,接下來,我們可以對(duì)頻繁項(xiàng)集建立關(guān)鍵規(guī)則。計(jì)算每個(gè)關(guān)聯(lián)規(guī)則的置信度,找到符合置信度閾值的關(guān)聯(lián)規(guī)則。

至此關(guān)聯(lián)分析的一些基礎(chǔ)知識(shí)介紹完畢,我們本文中主要使用關(guān)聯(lián)分析的一些概念還有FP算法,用FP算法可以高效的找到一些頻繁模式和強(qiáng)關(guān)聯(lián)規(guī)則。

接下來我們介紹另一個(gè)基礎(chǔ)知識(shí),共軛分布。

2.2Beta分布和多項(xiàng)式分布(共軛分布)

Beta分布

與貝葉斯公式緊密聯(lián)系在一起的一個(gè)分布是Beta分布,這一分布有幾個(gè)優(yōu)良的性質(zhì),這些性質(zhì)決定了Beta分布經(jīng)常作為貝葉斯公式里面的先驗(yàn)分布。我們從Beta分布的公式推導(dǎo)出發(fā),來介紹Beta分布。

Beta分布的推導(dǎo)

像理解二項(xiàng)分布一樣,我們先構(gòu)建一個(gè)隨機(jī)事件,再求得對(duì)應(yīng)隨機(jī)變量的分布即為二項(xiàng)分布。二項(xiàng)分布對(duì)應(yīng)的隨機(jī)事件是,拋n次硬幣,有k次正面向上的事件。而Beta分布對(duì)應(yīng)的隨機(jī)事件是,一些列隨機(jī)變量的順序統(tǒng)計(jì)量中,第k大的數(shù)是多少。

我們構(gòu)造以下問題,來推導(dǎo)Beta分布。

設(shè)X_1,X_2,X_3...X_n是區(qū)間[0,1]里面的n個(gè)隨機(jī)數(shù),服從均勻分布,X_{(1)},X_{(2)},X_{(3)}...X_{(n)}是其順序統(tǒng)計(jì)量。求X_{(k)}的分布是什么?

實(shí)際上求X_{(k)}分布就是Beta分布,以下是推導(dǎo)過程。

設(shè)X_{1}所在的區(qū)間為[x,x+\Delta(x)]

當(dāng)區(qū)間(x,x+\Delta(x))里面只有X_{1}時(shí),

X_{1}為第k大的概率為:
P(x+\Delta(x) >X_{1}>x )= x^{k-1}(n-x+ \Delta(x) )^{n-k} \Delta(x) = x^{k-1}(1-x )^{n-k}\Delta(x)+o(\Delta(x) )

其中:o(\Delta(x))\Delta(x)的高階無窮小量。

當(dāng)區(qū)間(x,x+\Delta(x))里面除了X_{1},還有另外一個(gè)值時(shí),則X_{1}為第k大的概率為:
P(x+\Delta(x) >X_{1}>x )=\frac{1}{2} x^{k-2}(1-x+ \Delta(x) )^{n-k} \Delta(x) ^2= o(\Delta(x) )

所以只要落在區(qū)間(x,x+\Delta(x))里面的點(diǎn)大于等于2,求得對(duì)應(yīng)的概率就是\Delta(x)的高階無窮小量。

所以,最終X_{1}為第k大的概率為:
P(x+\Delta(x) >X_{1}>x ) = x^{k-1}(1-x)^{n-k}\Delta(x)

同理X_{i}為第k大的概率也是:
P(x+\Delta(x) >X_{i}>x ) = x^{k-1}(1-x)^{n-k} \Delta(x)

所以有n種情況的概率總和是:
P(x+\Delta(x) >X_{i}>x ) = n x^{k-1}(1-x)^{n-k} \Delta(x)

又,為了保證X_{i}為第k大,所以需要在區(qū)間[0,x]上必須有k-1個(gè)數(shù),在剩下的n-1個(gè)數(shù)中選取k-1個(gè)數(shù),有C_{n-1}^{k-1}種可能。

所以最終的X_{(k)}的概率為:
P(x+\Delta(x) >X_{(k)}>x )= n C_{n-1}^{k-1} x^{k-1}(1-x)^{n-k} \Delta(x)

擴(kuò)展到連續(xù)的情況,X_{(k)}的密度函數(shù)為:
f(x)=\lim_{\Delta(x)->0} \frac{n C_{n-1}^{k-1} x^{k-1}(1-x)^{n-k} \Delta(x)}{\Delta(x)}\\ =n C_{n-1}^{k-1} x^{k-1}(1-x)^{n-k}\\ =n*\frac{(n-1)!}{(k-1)!(n-k)!}x^{k-1}(1-x)^{n-k}\\ = \frac{(n)!}{(k-1)!(n-k)!}x^{k-1}(1-x)^{n-k}\\ =\frac{\Gamma(n+1) }{ \Gamma(k) \Gamma(n-k+1) }x^{k-1}(1-x)^{n-k}

\alpha=k,\beta=n-k+1,有:
f(x) =\frac{\Gamma(\alpha+\beta) }{ \Gamma(\alpha) \Gamma(\beta) }x^{\alpha-1}(1-x)^{\beta-1}

上面公式就是Beta分布的密度函數(shù)。至此,我們就推導(dǎo)除了Beta分布的密度函數(shù)。

Beta分布的均值和方差

Beta分布的均值為:
E(x)=\frac{\alpha}{\alpha+\beta}
Beta分布的方差為:
Var(x)=\frac{\alpha \beta}{(\alpha+\beta)^2(\alpha+\beta+1)}
Beta分布的眾數(shù)為:
\frac{\alpha -1}{(\alpha+\beta-2)}

Beta分布的性質(zhì)

Beta分布有兩個(gè)比較常用的性質(zhì),也正是因?yàn)檫@兩種性質(zhì),導(dǎo)致在貝葉斯推斷里面,Beta分布是最常見的分布。

1、Beta分布根據(jù)\alpha 、\beta的取值不同,可以模擬的各種各樣的分布。

2、Beta分布是二項(xiàng)分布的共軛先驗(yàn)分布。

對(duì)于這兩個(gè)性質(zhì),我們下面展開討論。

我們對(duì)于第一個(gè)性質(zhì),用Python畫出不同\alpha 、\beta取值的概率密度曲線圖形。

import numpy as np
from scipy.stats import beta
from matplotlib import pyplot as plt

alpha_values = [1/3,2/3,1,1,2,2,4,10,20]
beta_values = [1,2/3,3,1,1,6,4,30,20]
colors =  ['blue', 'orange', 'green', 'red', 'purple', 
           'brown', 'pink', 'gray', 'olive']
x = np.linspace(0, 1, 1002)[1:-1]

fig, ax = plt.subplots(figsize=(14,9))

for a, b, c in zip(alpha_values, beta_values, colors):
    dist = beta(a, b)
    plt.plot(x, dist.pdf(x), c=c,label=r'$\alpha=%.1f,\ \beta=%.1f$' % (a, b))

plt.xlim(0, 1)
plt.ylim(0, 6)

plt.xlabel('$x$')
plt.ylabel(r'$p(x|\alpha,\beta)$')
plt.title('Beta Distribution')

ax.annotate('Beta(1/3,1)', xy=(0.014, 5), xytext=(0.04, 5.2),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(10,30)', xy=(0.276, 5), xytext=(0.3, 5.4),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(20,20)', xy=(0.5, 5), xytext=(0.52, 5.4),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(1,3)', xy=(0.06, 2.6), xytext=(0.07, 3.1),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2,6)', xy=(0.256, 2.41), xytext=(0.2, 3.1),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(4,4)', xy=(0.53, 2.15), xytext=(0.45, 2.6),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(1,1)', xy=(0.8, 1), xytext=(0.7, 2),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2,1)', xy=(0.9, 1.8), xytext=(0.75, 2.6),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2/3,2/3)', xy=(0.99, 2.4), xytext=(0.86, 2.8),
            arrowprops=dict(facecolor='black', arrowstyle='-'))

plt.legend(loc=0)
plt.show()
output_79_0.png

由上面beta分布的圖像,我們可以看出,當(dāng)\alpha、\beta取不同值的時(shí)候,可以得到完全不一樣的分布,當(dāng)\alpha=1、\beta=1時(shí),剛好得到均勻分布。

下面我們證明Beta分布是二項(xiàng)分布的共軛先驗(yàn),在證明之前引入幾個(gè)概念。

似然(likelihood)與概率(probability)

在使用貝葉斯推斷之前,必選理解這兩個(gè)概念。

似然(Likelihood):已知數(shù)據(jù)的概率值,我們反向估計(jì)所屬的概率分布(參數(shù))。

概率(Probability):已知數(shù)據(jù)的概率分布我們?nèi)デ髷?shù)據(jù)的集體概率值。

貝葉斯推斷

根據(jù)貝葉斯公式,我們有以下表達(dá)式:
P(\theta|x )= \frac{ P( x| \theta) P( \theta)}{P(x)}

其中:P(\theta|x)被稱為后驗(yàn)概率(posterior),P( x|\theta)被稱為似然(likelihood),P(\theta)被稱為先驗(yàn)概率(prior),P(x)被稱為邊緣似然( marginal likelihood)可以理解為是用來歸一化的。

共軛分布與共軛先驗(yàn)

在貝葉斯統(tǒng)計(jì)中,如果后驗(yàn)分布與先驗(yàn)分布屬于同類(分布形式相同),則先驗(yàn)分布與后驗(yàn)分布被稱為共軛分布,而先驗(yàn)分布被稱為似然函數(shù)的共軛先驗(yàn)。

Beta分布是二項(xiàng)分布的共軛先驗(yàn)

設(shè)\theta服從Beta(\alpha,\beta )分布,x服從參數(shù)為\theta的二項(xiàng)分布,即Bin( n,\theta).

有貝葉斯公式可知,\theta的后驗(yàn)分布為:
P(\theta|x ) \propto P(x| \theta)P( \theta)

由于P(x| \theta)P( \theta) = C_{n}^{x} \theta^x(1-\theta)^{n-x} \frac{\Gamma(\alpha+\beta) }{ \Gamma(\alpha) \Gamma(\beta) } \theta^{\alpha-1}(1- \theta)^{\beta-1} \\ = C_{n}^{x} \frac{\Gamma(\alpha+\beta) }{ \Gamma(\alpha) \Gamma(\beta) } \theta^{x+\alpha-1}(1- \theta)^{n-x+\beta-1}\\ \propto \theta^{x+\alpha-1}(1- \theta)^{n-x+\beta-1}

所以有:
P(\theta|x ) \propto \theta^{x+\alpha-1}(1- \theta)^{n-x+\beta-1}

歸一化得到:
P(\theta|x )= \frac{\Gamma(n+\alpha+\beta) }{ \Gamma(x+\alpha) \Gamma(n-x+\beta) } \theta^{x+\alpha-1}(1- \theta)^{n-x+\beta-1}

所以P(\theta|x )服從Beta(\alpha+x,\beta+n-x )分布,所以Beta分布是二項(xiàng)分布的共軛先驗(yàn)。

Beta分布的兩個(gè)性質(zhì),上面就介紹完了,有了這兩個(gè)性質(zhì),我們可以對(duì)其進(jìn)行應(yīng)用,以棒球擊球問題為例子,具體看一下,Beta分布怎么應(yīng)用在實(shí)際中。

棒球擊球率問題

一個(gè)關(guān)于擊中棒球的例子。在棒球運(yùn)動(dòng)中,有個(gè)叫平均擊球率的概念。就是用一個(gè)運(yùn)動(dòng)員擊中棒球的次數(shù)除以他總的擊球數(shù)量。一般情況下,棒球運(yùn)動(dòng)員的擊球概率在0.266左右。高于這個(gè)值就是不錯(cuò)的運(yùn)動(dòng)員了。假設(shè)我們要預(yù)測(cè)一個(gè)運(yùn)動(dòng)員在某個(gè)賽季的擊球率,我們可以使用已有的數(shù)據(jù)計(jì)算。但是在賽季剛開始的時(shí)候,他擊球次數(shù)少,因此無法準(zhǔn)確預(yù)測(cè)。比如他只打了一次球,那擊球率就是1或者0,這個(gè)顯然是不對(duì)的,我們也不會(huì)這么預(yù)測(cè)。因?yàn)槲覀兌加幸粋€(gè)先驗(yàn)期望。即根據(jù)歷史情況,我們認(rèn)為一個(gè)運(yùn)動(dòng)員大概的擊球率應(yīng)當(dāng)是在0.215到0.360之間。因此,當(dāng)一個(gè)運(yùn)動(dòng)員在賽季開始就被三振出局,那么我們可以預(yù)期這個(gè)運(yùn)動(dòng)員的擊球率可能會(huì)略低于平均值,但他不可能是0。那么,在這個(gè)運(yùn)動(dòng)員的例子中,關(guān)于在賽季開始的擊球情況,可以使用二項(xiàng)式分布表示,也就是一系列擊球成功和失敗的實(shí)驗(yàn)(假設(shè)之間相互獨(dú)立)。同時(shí),我們也會(huì)給這個(gè)數(shù)據(jù)一個(gè)先驗(yàn)期望(即統(tǒng)計(jì)中的先驗(yàn)知識(shí)),這個(gè)先驗(yàn)的分布一般就是Beta分布。這里的Beta分布就是用來修正我們觀測(cè)到的運(yùn)動(dòng)員的擊球率的(簡(jiǎn)單來說就是即便開始這個(gè)運(yùn)動(dòng)員被三振出局了,我們也只會(huì)預(yù)測(cè)他的擊球率可能低于平均水平,但不會(huì)是0)。

對(duì)于以上問題,我們可以假設(shè)運(yùn)動(dòng)員賽季開始時(shí)擊球成功與否服從二項(xiàng)分布Bin(n,p),運(yùn)動(dòng)員的擊球率的先驗(yàn)概率服從Beta(\alpha,\beta)

那么我們根據(jù)上面的貝葉斯推斷有,運(yùn)動(dòng)員的擊球率的后驗(yàn)概率為:
P=Beta( \alpha+np ,\beta +n(1-p) )

2.3Dirichlet分布和多項(xiàng)式分布(共軛分布)

二項(xiàng)分布在多維上的擴(kuò)展為多項(xiàng)式分布,Beta分布在多維上的擴(kuò)展為Dirichlet分布,所以有上面一樣的結(jié)論,Dirichlet分布是多項(xiàng)式分布共軛先驗(yàn)。

Dirichlet分布

與推導(dǎo)Beta分布的過程一樣,只不過我們?cè)陧樞蚪y(tǒng)計(jì)量中,關(guān)心的不再是第k大的變量X_{(k)}的分布,而是第k大的變量X_{(k)}和第m大的變量X_{(m)}的聯(lián)合分布(或者更多順序統(tǒng)計(jì)量的聯(lián)合分布)。

與上面推導(dǎo)過程一樣,我們可以得到這兩個(gè)順序統(tǒng)計(jì)量(可以更多順序統(tǒng)計(jì)量)的聯(lián)合分布的密度函數(shù)如下:
f(x_1,x_2,x_3)=\frac{\Gamma(\alpha_1+\alpha_2+\alpha_3) }{\Gamma(\alpha_1)\Gamma(\alpha_2)\Gamma(\alpha_3)} x_1^{\alpha_1-1} x_2^{\alpha_2-1} x_3^{\alpha_3-1}

其中:x_1+x_2+x_3=1

Dirichlet分布其實(shí)就是Beta分布在多維上的擴(kuò)展,所以Dirichlet分布隨著參數(shù)\alpha_1,\alpha_2,\alpha_3的不同而形狀各異。

Dirichlet分布的均值

Dirichlet分布的均值為:
E(\vec x)=(\frac{\alpha_1}{\sum \alpha_i }、\frac{\alpha_2}{\sum \alpha_i }、...\frac{\alpha_n}{\sum \alpha_i } )

Dirichlet分布是多項(xiàng)式分布的共軛先驗(yàn)(以二維為例)

設(shè)\theta_1、\theta_2服從Dirichlet分布Dir(\alpha_1、\alpha_2、\alpha_3 ).x服從參數(shù)為 \theta_1、\theta_2的多項(xiàng)式分布Mult(N:\theta_1、\theta_2).

有貝葉斯公式可知,\theta的后驗(yàn)分布為:
P(\theta_1 ,\theta_2 |x ) \propto P(x| \theta_1 ,\theta_2)P( \theta_1 ,\theta_2)

由于
P(x| \theta_1 ,\theta_2)P( \theta_1 ,\theta_2) = \frac{\Gamma(\alpha_1+\alpha_2+\alpha_3) }{\Gamma(\alpha_1)\Gamma(\alpha_2)\Gamma(\alpha_3)} \theta_1^{\alpha_1-1} \theta_2^{\alpha_2-1} (1-x_2-x_1)^{\alpha_3-1} \frac{N!}{(x_1)!(x_2)!} \theta_1^{x_1}\theta_2^{x_2}

和上面化簡(jiǎn)一樣,我們可以得到后驗(yàn)概率為:
P( \theta_1 ,\theta_2|x )= \frac{\Gamma(\alpha_1+\alpha_2+\alpha_3+N) }{\Gamma(\alpha_1+x_1)\Gamma(\alpha_2+x_2)\Gamma(\alpha_3+(N-x_1-x_2))}\theta_1^{\alpha_1+x_1-1} \theta_2^{\alpha_2+x_2-1} (N-\theta_1-\theta_2)^{\alpha_3+1-x_2-x_1-1}

所以后驗(yàn)分布也是Dirichlet分布Dir(\alpha_1+x_1、\alpha_2+x_2、\alpha_3+N-x_1-x_2 )

所以Dirichlet分布是多項(xiàng)式分布的共軛先驗(yàn)。

有了上面兩個(gè)數(shù)學(xué)模型的基礎(chǔ)知識(shí),我們下面介紹貝葉斯規(guī)則分類器。

2.4馬爾科夫鏈蒙特卡洛方法(MCMC)

馬爾科夫鏈蒙特卡洛方法包含兩部分,即蒙特卡洛方法和馬爾科夫鏈。下面一一展開。

蒙特卡洛方法(隨機(jī)模擬)

蒙特卡洛方法就是隨機(jī)模擬,給定一個(gè)分布p(x),我們直接用這個(gè)p(x)生成一些隨機(jī)樣本來解決問題的方法,叫做蒙特卡洛。

怎么根據(jù)給定的分布p(x)生成隨機(jī)樣本。對(duì)于均勻分布,我們可以根據(jù)線性同余發(fā)生器生成偽隨機(jī)數(shù),這些偽隨機(jī)數(shù)可以認(rèn)為是服從均勻分布。

如何生成服從其他分布的隨機(jī)數(shù)呢?我們有以下定理:

(Box-Muller定理)如果隨機(jī)變量U_1,U_2獨(dú)立,且U_1,U_2服從Unifrom[0,1].定義:
Z_0=\sqrt{-2linU_1}cos(2\pi U_2)
Z_1=\sqrt{-2linU_1}sin(2\pi U_2)
則,Z_0,Z_1獨(dú)立且服從標(biāo)準(zhǔn)正態(tài)分布。

常見的連續(xù)分布,如指數(shù)分布、Gamma分布、t分布、F分布、Beta分布、Dirichlet分布都可以通過上面類似的變換得到。

蒙特卡洛方法簡(jiǎn)單使用,但是在一些情況下,蒙特卡洛方法的使用會(huì)受到限制,如:
1、分布p(x)不能顯示表達(dá)時(shí)。
2、P(x)是高維分布時(shí)。

對(duì)于上面兩個(gè)問題,當(dāng)p(x)分布不能顯示表達(dá)或者計(jì)算機(jī)不容易產(chǎn)生隨機(jī)數(shù)時(shí),我們一般采用拒絕接受采樣的方法,對(duì)于高維分布,經(jīng)常使用的方法是馬爾科夫鏈蒙特卡洛方法(MCMC)和Gibbs Sampling

拒絕接受采樣

當(dāng)一個(gè)分布p(x)不能顯示表達(dá),或者計(jì)算機(jī)不容易產(chǎn)生隨機(jī)數(shù)時(shí),我們可以采用拒絕接受采樣的方法。

拒絕接受采樣的思想很簡(jiǎn)單,對(duì)于一個(gè)計(jì)算機(jī)不容易產(chǎn)生隨機(jī)數(shù)的分布p(x),其是先構(gòu)建一個(gè)計(jì)算機(jī)容易產(chǎn)生隨機(jī)樣本的建議分布q(x)(通常選用均勻分布或者正態(tài)分布),讓密度函數(shù)q(x)的k倍kq(x),剛剛好覆蓋密度函數(shù)p(x)(如下圖所示)。

微信圖片_20210611112640.png

當(dāng)構(gòu)建好q(x)和解出k后,我們可以用q(x)產(chǎn)生一些隨機(jī)樣本z_0,z_1....z_n,但是這些樣本不一定滿足p(x),所以此時(shí),我們要設(shè)置一個(gè)條件,滿足這個(gè)條件的樣本剛好滿足p(x),我們就接受這些樣本,不滿足這些條件的樣本不滿足p(x),我們就拒絕這些樣本。這樣我們就得到了滿足p(x)的隨機(jī)樣本。

所以問題的關(guān)鍵是設(shè)置的這個(gè)條件是什么??梢宰C明,設(shè)置的這個(gè)條件規(guī)則如下:

針對(duì)每一個(gè)樣本z_i,在Unifrom[0,1]中生存隨機(jī)數(shù)U,如果:
U<= \frac{p(z_i)}{kq(z_i)}
則樣本z_i落在紅線下的白色區(qū)域,我們接受這個(gè)樣本,樣本是p(x)產(chǎn)生的隨機(jī)數(shù)。
如果:
U> \frac{p(z_i)}{kq(z_i)}
則樣本z_i落在紅線上方的灰色區(qū)域,我們拒接這個(gè)樣本,樣本不是p(x)產(chǎn)生的隨機(jī)數(shù)。

這樣我們就生成了滿足p(x)的隨機(jī)樣本。

對(duì)于為什么滿足上面條件規(guī)則就是p(x)的樣本,不滿足就不是,本文不打算給出證明。

馬爾科夫鏈蒙特卡洛方法(MCMC)

上面介紹了蒙特卡洛方法,為了理解MCMC,需要先理解馬爾科夫鏈及平穩(wěn)分布。

馬爾科夫鏈

對(duì)于一個(gè)隨機(jī)過程X_t,如果存在一下公式:
P(X_{t+1}=x|X_t,X_{t-1}.... )=P(X_{t+1}=x|X_t)

即狀態(tài)轉(zhuǎn)移的概率只依賴于前一個(gè)狀態(tài)。那么這個(gè)隨機(jī)過程就是一個(gè)馬爾科夫鏈。

有了馬氏鏈,那馬氏鏈的平穩(wěn)分布如何刻畫呢。有以下定理可以給出任意非周期且兩兩狀態(tài)聯(lián)通的馬氏鏈的平穩(wěn)分布。

馬爾科夫鏈的平穩(wěn)分布

(馬氏鏈?zhǔn)諗慷ɡ恚┤绻粋€(gè)非周期的馬氏鏈具有狀態(tài)轉(zhuǎn)移矩陣P,且他的任何兩個(gè)狀態(tài)是聯(lián)通的,那么對(duì)于P的第i行第j列元素有:
\lim_{n->+\infty}P_{i,j}^n

存在且與i無關(guān)。我們記:
\pi(j)=\lim_{n->+\infty}P_{i,j}^n

則得到:
1、
\lim_{n->\infty}P^n= \left[ \begin{matrix} \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \vdots & \vdots & \ddots & \vdots \\ \pi(1) & \pi(2) & \cdots & \pi(j) & \cdots \\ \end{matrix} \right]

2、
\pi(j)= \sum_{i=1}^{+\infty} \pi(i)P_{i,j}

3、\pi是方程\pi P=\pi的唯一解。

其中:\pi=( \pi(1),\pi(2),\pi(3)... )\sum_{i=1}^{+\infty} \pi(i)=1

上面的\pi稱為馬氏鏈的平穩(wěn)分布。

上面就是馬氏鏈的收斂定理,這個(gè)定理給出了,馬氏鏈可以在有限步之后收斂到其平穩(wěn)分布,之一性質(zhì)導(dǎo)致了MCMC方法的誕生,是MCMC方法的基礎(chǔ)。

原始MCMC

有了上面馬氏鏈和馬氏鏈?zhǔn)諗康亩ɡ?,Metropolis在1953年在處理玻爾茲曼分布采樣問題時(shí),想到一個(gè)絕妙的想法,構(gòu)造了一個(gè)超級(jí)牛逼的算法,就是MCMC方法。

對(duì)于高維或者沒有分布顯示表達(dá)式的分布如何采樣,Metropolis提出,可以構(gòu)造一個(gè)馬氏鏈,讓馬氏鏈的平穩(wěn)分布剛好是p(x),那么此馬氏鏈在第n步之后產(chǎn)生的狀態(tài)就是滿足分布p(x)的隨機(jī)樣本。但是這個(gè)過程隨之產(chǎn)生另一個(gè)問題,就是怎么構(gòu)造這個(gè)馬氏鏈,讓這個(gè)馬氏鏈的平穩(wěn)分布剛好是p(x)。接下來我們一步步找到這個(gè)馬氏鏈。

(細(xì)致平穩(wěn)條件定理)如果非周期的馬氏鏈的狀態(tài)轉(zhuǎn)移矩陣P和分布\pi(x)滿足
\pi(i)P_{i,j}=\pi(j)P_{j,i}
對(duì)任意i,j成立 ,則\pi(x)是馬氏鏈的平穩(wěn)分布,上式被稱為細(xì)致平穩(wěn)條件。

此定理的證明不是很難,在此不展開,直接使用。

我們一開始隨便找一個(gè)馬氏鏈,對(duì)應(yīng)的狀態(tài)轉(zhuǎn)移矩陣記為Q,很顯然我們隨便找的這個(gè)Q不一定滿足馬氏鏈?zhǔn)諗康浇o定p(x)的細(xì)致平穩(wěn)條件,即:
p(i)Q_{i,j} \neq p(j)Q_{j,i}

對(duì)于以上不等式,我們引入\alpha(i,j),使得:
\alpha(i,j)= p(j)Q_{j,i}

所以有:
p(i)Q_{i,j} \alpha(i,j)= p(j)Q_{j,i} \alpha(j,i)

令:
Q_{i,j}^/=Q_{i,j} \alpha(i,j)

所以有:
p(i)Q_{i,j}^/= p(j)Q_{j,i}^/

所以構(gòu)造出了一個(gè)新的馬爾科夫鏈,這個(gè)馬氏鏈狀態(tài)轉(zhuǎn)移矩陣是Q^/,且滿足馬氏鏈?zhǔn)諗康浇o定p(x)的細(xì)致平穩(wěn)條件。

這樣我們就可以使用MCMC方法生成滿足p(x)的隨機(jī)樣本。

MCMC的算法如下:

1、輸入平穩(wěn)分布p(x),輸入任意的一個(gè)狀態(tài)轉(zhuǎn)移矩陣Q, 輸入狀態(tài)轉(zhuǎn)移次數(shù)閾值n_1,輸入需要的樣本個(gè)數(shù)n_2.

2、隨機(jī)生成一個(gè)初始狀態(tài)x_0.

3、for t=0 to n_1+n_2-1:
  應(yīng)用狀態(tài)轉(zhuǎn)移矩陣Q生成下一步的狀態(tài)x_*
  在均勻分布Uniform[0,1]中生成隨機(jī)數(shù)U。
  如果U<\alpha(*,t)=p(x_*)Q(x_*,X_t),則接受轉(zhuǎn)移x_t->x_*,即x_{t+1}=x_*,否則不接受轉(zhuǎn)移,x_{t}=x_*

4、樣本(x_{n1},x_{n1+1},x_{n1+2},.... )即為滿足分布p(x)的隨機(jī)樣本。

在MCMC原始的算法中,會(huì)存在一個(gè)問題,那就是上面第三步中p(x_*)Q(x_*,X_t)過小,導(dǎo)致隨機(jī)產(chǎn)生的U比它大,從而經(jīng)常拒絕轉(zhuǎn)移,導(dǎo)致狀態(tài)原地踏步。

為解決這一問題,Hastings改進(jìn)了上面的算法, 也就是Metropolis-Hastings采樣。

Metropolis-Hastings采樣

上面MCMC方法問題所在就是p(x_*)Q(x_*,X_t)過小,而p(x_*)Q(x_*,X_t)剛好就是\alpha(*,t),而由上面的alpha的由來可以看出,只要\alpha滿足以下平穩(wěn)細(xì)致條件即可。
p(i)Q_{i,j} \alpha(i,j)= p(j)Q_{j,i} \alpha(j,i)

我們同時(shí)在上面等式兩邊乘以一個(gè)數(shù),使得等式兩邊的\alpha都等倍數(shù)的放大,就可以解決以上問題,但是不能無限放大,因?yàn)?br> \alpha(i,j)= p(j)Q_{j,i}

所以\alpha最大只能到1,所以,我們?cè)谂cU比較使用接受拒絕規(guī)則時(shí),\alpha取以下值:
\alpha(*,t)=min\{ \frac{ p(t)Q_{t,*} }{p(*)Q_{*,t}} ,1\}

所以我們只需要將MCMC算法中的\alpha(*,t)修改為上式即可。

Gibbs 采樣

Gibbs采樣是MCMC在高維中的形式。雖然在高維里面,但是其形式要比Metropolis-Hastings和原始的MCMC簡(jiǎn)單,因?yàn)樵诟呔S里面,滿足細(xì)致平穩(wěn)條件的狀態(tài)轉(zhuǎn)移矩陣Q可以直接找到。

以二維為例,我們推導(dǎo)Gibbs采樣算法。

設(shè)p(x,y)是我們待采樣的分布,我們直接用p(x,y)構(gòu)造狀態(tài)轉(zhuǎn)移矩陣Q.

我們構(gòu)造以下馬氏鏈:\{(x_1,y_1),(x_1,y_2),(x_2,y_2)... \}

如果按以上方式構(gòu)造馬氏鏈,那么設(shè)(x_1,y_1)為點(diǎn)A ,(x_1,y_2)為點(diǎn)B

則:
P(A)P(y_2|x_1)=P(x_1,y_1)P(y_2|x_1)=P(x_1)P(y_1|x_1) P(y_2|x_1)

P(B)P(y_1|x_1)=P(x_1,y_2)P(y_1|x_1)=P(x_1)P(y_2|x_1) P(y_1|x_1)

所以:
P(A)P(y_2|x_1)=P(B)P(y_1|x_1)

所以,我們?nèi)缦聵?gòu)造狀態(tài)轉(zhuǎn)移矩陣Q:
Q( (x_1,y_1)->(x_1,y_2) )= P( y_2|x_1 )
Q( (x_1,y_1)->(x_2,y_1) )= P( x_2|y_1 )
Q( (x_1,y_1)->(x_i,y_j) )= 0 對(duì)任意i,j都不為1

所以:
P(A)Q( (x_1,y_1)->(x_1,y_2) )=P(B)Q( (x_1,y_1)->(x_2,y_1) )

上式就是狀態(tài)轉(zhuǎn)移矩陣Q的細(xì)致平穩(wěn)條件。所以用這個(gè)規(guī)則(下一個(gè)狀態(tài)和上一個(gè)狀態(tài)有一個(gè)坐標(biāo)是一樣的)生成的馬氏鏈的平穩(wěn)分布是p(x,y).

具體算法如下:

1、隨機(jī)初始化X_0=x_0,Y_0=y_0.
2、對(duì)t=1,2,3.... 循環(huán)采樣
  y_{t+1}~ p(y|x_t)
  x_{t+1}~ p(x|y_{t+1})

最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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