人人都可以當賭神的秘密:用Python學習神奇的貝葉斯統計

2021-01-11 python大大

貝葉斯統計是個神鳥呢?

數學家貝葉斯,在200多年前寫的《機會學說中一個問題的解》這本書中提過個觀點,他說,支持某項屬性的事件發生得愈多,則該屬性成立的可能性就愈大。簡言之,如果你看到一個人總是做一些好事,那個人多半會是個好人。

很好理解對吧?

下面就從一個簡單的例子入手,來進一步理論結合Python學習如何進行貝葉斯統計。

拋硬幣問題

拋硬幣是統計學中的一個經典問題,其描述如下:我們隨機拋一枚硬幣,重複一定次數,記錄正面朝上和反面朝上的次數,根據這些數據,我們需要回答諸如這枚硬幣是否公平,以及更進一步這枚硬幣有多不公平等問題。拋硬幣是一個學習貝葉斯統計非常好的例子,一方面是因為幾乎人人都熟悉拋硬幣這一過程,另一方面是因為這個模型很簡單,我們可以很容易計算並解決這個問題。此外,許多真實問題都包含兩個互斥的結果,例如0或者1、正或者負、奇數或者偶數、垃圾郵件或者正常郵件、安全或者不安全、健康或者不健康等。因此,即便我們討論的是硬幣,該模型也同樣適用於前面這些問題。

為了估計硬幣的偏差,或者更廣泛地說,想要用貝葉斯學派理論解決問題,我們需要數據和一個概率模型。對於拋硬幣這個問題,假設我們已試驗了一定次數並且記錄了正面朝上的次數,也就是說數據部分已經準備好了,剩下的就是模型部分了。考慮到這是第一個模型,我們會列出所有必要的數學公式,並且一步一步推導。下一章中,我們會重新回顧這個問題,並借用PyMC3從數值上解決它(也就是說那部分不需要手動推導,而是利用PyMC3和計算機來完成)。

通用模型

首先,我們要抽象出偏差的概念。我們稱,如果一枚硬幣總是正面朝上,那麼它的偏差就是1,反之,如果總是反面朝上,那麼它的偏差就是0,如果正面朝上和反面朝上的次數各佔一半,那麼它的偏差就是0.5。這裡用參數 θ 來表示偏差,用 y 表示 N 次拋硬幣實驗中正面朝上的次數。根據貝葉斯定理,我們有如下公式:

這裡需要指定我們將要使用的先驗

和似然

分別是什麼。讓我們首先從似然開始。

選擇似然

假設多次拋硬幣的結果相互之間沒有影響,也就是說每次拋硬幣都是相互獨立的,同時還假設結果只有兩種可能:正面朝上或者反面朝上。但願你能認同我們對這個問題做出的合理假設。基於這些假設,一個不錯的似然候選是二項分布:

這是一個離散分布,表示 N 次拋硬幣實驗中 y 次正面朝上的概率(或者更通俗地描述是, N 次實驗中, y 次成功的概率)。下面的代碼生成了9個二項分布,每個子圖中的標籤顯示了對應的參數:

n_params = [1, 2, 4]

p_params = [0.25, 0.5, 0.75]

x = np.arange(0, max(n_params)+1)

f, ax = plt.subplots(len(n_params), len(p_params), sharex=True, sharey=True)

for i in range(3):

for j in range(3):

n = n_params[i]

p = p_params[j]

y = stats.binom(n=n, p=p).pmf(x)

ax[i,j].vlines(x, 0, y, colors='b', lw=5)

ax[i,j].set_ylim(0, 1)

ax[i,j].plot(0, 0, label="n = {:3.2f}\np =

{:3.2f}".format(n, p), alpha=0)

ax[i,j].legend(fontsize=12)

ax[2,1].set_xlabel('$\\theta$', fontsize=14)

ax[1,0].set_ylabel('$p(y|\\theta)$', fontsize=14)

ax[0,0].set_xticks(x)

二項分布是似然的一個合理選擇,直觀上講, θ 可以看作拋一次硬幣時正面朝上的可能性,並且該過程發生了 y 次。類似地,我們可以把「1 θ 」看作拋一次硬幣時反面朝上的概率,並且該過程發生了「 N y 」次。

假如我們知道了 θ ,那麼就可以從二項分布得出硬幣正面朝上的分布。如果我們不知道 θ ,也別灰心,在貝葉斯統計中,當我們不知道某個參數的時候,就對其賦予一個先驗。接下來繼續選擇先驗。

選擇先驗

這裡我們選用貝葉斯統計中最常見的 beta分布 ,作為先驗,其數學形式如下:

仔細觀察上面的式子可以看出,除了 Γ 部分之外,beta分布和二項分布看起來很像。 Γ 是希臘字母中大寫的伽馬,用來表示伽馬函數。現在我們只需要知道,用分數表示的第一項是一個正則化常量,用來保證該分布的積分為1,此外,

兩個參數用來控制具體的分布形態。beta分布是我們到目前為止見到的第3個分布,利用下面的代碼,我們可以深入了解其形態:

params = [0.5, 1, 2, 3]

x = np.linspace(0, 1, 100)

f, ax = plt.subplots(len(params), len(params), sharex=True, sharey=True)

for i in range(4):

for j in range(4):

a = params[i]

b = params[j]

y = stats.beta(a, b).pdf(x)

ax[i,j].plot(x, y)

ax[i,j].plot(0, 0, label="$\\alpha$ = {:3.2f}\n$\\beta$ = {:3.2f}".format(a, b), alpha=0)

ax[i,j].legend(fontsize=12)

ax[3,0].set_xlabel('$\\theta$', fontsize=14)

ax[0,0].set_ylabel('$p(\\theta)$', fontsize=14)

plt.savefig('B04958_01_04.png', dpi=300, figsize=(5.5, 5.5))

為什麼要在模型中使用beta分布呢?在拋硬幣以及一些其他問題中使用beta分布的原因之一是:beta分布的範圍限制在0到1之間,這跟我們的參數

一樣;另一個原因是其通用性,從前面的圖可以看出,該分布可以有多種形狀,包括均勻分布、類高斯分布、U型分布等。第3個原因是:beta分布是二項分布(前面我們使用了該分布描述似然)的共軛先驗。似然的共軛先驗是指,將該先驗分布與似然組合在一起之後,得到的後驗分布與先驗分布的表達式形式仍然是一樣的。簡單說,就是每次用beta分布作為先驗、二項分布作為似然時,我們會得到一個beta分布的後驗。除beta分布之外還有許多其他共軛先驗,例如高斯分布,其共軛先驗就是自己。許多年來,貝葉斯分析都限制在共軛先驗範圍內,這主要是因為共軛能讓後驗在數學上變得更容易處理,要知道貝葉斯統計中一個常見問題的後驗都很難從分析的角度去解決。在建立合適的計算方法來解決任意後驗之前,這只是個折中的辦法。從下一章開始,我們將學習如何使用現代的計算方法來解決貝葉斯問題而不必考慮是否使用共軛先驗。

計算後驗

首先回憶一下貝葉斯定理:後驗正比於似然乘以先驗。

對於我們的問題而言,需要將二項分布乘以beta分布:

現在,對上式進行簡化。針對我們的實際問題,可以先把與 θ 不相關的項去掉而不影響結果,於是得到下式:

重新整理之後得到:

可以看出,上式和beta分布的形式很像(除了歸一化部分),其對應的參數分別為

。也就是說,在拋硬幣這個問題中,後驗分布是如下beta分布:

計算後驗並畫圖 現在已經有了後驗的表達式,我們可以用Python對其計算並畫出結果。下面的代碼中,其實只有一行是用來計算後驗結果的,其餘的代碼都是用來畫圖的:

theta_real = 0.35

trials = [0, 1, 2, 3, 4, 8, 16, 32, 50, 150]

data = [0, 1, 1, 1, 1, 4, 6, 9, 13, 48]

beta_params = [(1, 1), (0.5, 0.5), (20, 20)]

dist = stats.beta

x = np.linspace(0, 1, 100)

for idx, N in enumerate(trials):

if idx == 0:

plt.subplot(4,3, 2)

else:

plt.subplot(4,3, idx+3)

y = data[idx]

for (a_prior, b_prior), c in zip(beta_params, ('b', 'r', 'g')):

p_theta_given_y = dist.pdf(x, a_prior + y, b_prior + N - y)

plt.plot(x, p_theta_given_y, c)

plt.fill_between(x, 0, p_theta_given_y, color=c, alpha=0.6)

plt.axvline(theta_real, ymax=0.3, color='k')

plt.plot(0, 0, label="{:d} experiments\n{:d} heads".format(N, y), alpha=0)

plt.xlim(0,1)

plt.ylim(0,12)

plt.xlabel(r"$\theta$")

plt.legend()

plt.gca().axes.get_yaxis().set_visible(False)

plt.tight_layout()

plt.savefig('B04958_01_05.png', dpi=300, figsize=(5.5, 5.5))

在上圖的第一行中,實驗的次數為0,因此第一個圖中的曲線描繪的是先驗分布,其中有3條曲線,每條曲線分別表示一種先驗。

藍色的線是一個均勻分布先驗,其含義是:偏差的所有可能取值都是等概率的。紅色的線與均勻分布有點類似,對拋硬幣這個例子而言可以理解為:偏差等於0或者1的概率要比其他值更大一些。最後一條綠色的線集中在中間值0.5附近,該分布反映了通常硬幣正面朝上和反面朝上的概率大致是差不多的。我們也可以稱,該先驗與大多數硬幣都是公平的這一信念是兼容的。「兼容」這個詞在貝葉斯相關的討論中會經常用到,特別是在提及受到數據啟發的模型時。剩餘的子圖描繪了後續實驗的後驗分布

,回想一下,後驗可以看做是在給定數據之後更新了的先驗。實驗(拋硬幣)的次數和正面朝上的次數分別標註在每個子圖中。此外每個子圖中在橫軸0.35附近還有一個黑色的豎線,表示的是真實的 θ ,顯然,在真實情況下,我們並不知道該值,在這裡標識出來只是為了方便理解。從這幅圖中可以學到很多貝葉斯分析方面的知識。

貝葉斯分析的結果是後驗分布而不是某個值,該分布描述了根據給定數據和模型得到的不同數值的可能性。後驗最可能的值是根據後驗分布的形態決定的(也就是後驗分布的峰值)。後驗分布的離散程度與我們對參數的不確定性相關;分布越離散,不確定性越大。儘管1/2=4/8=0.5,但從圖中可以看出,前者的不確定性要比後者大。這是因為我們有了更多的數據來支撐我們的推斷,該直覺也同時反映在了後驗分布上。在給定足夠多的數據時,兩個或多個不同先驗的貝葉斯模型會趨近於收斂到相同的結果。在極限情況下,如果有無限多的數據,不論我們使用的是怎樣的先驗,最終都會得到相同的後驗。注意這裡說的無限多是指某種程度而非某個具體的數量,也就是說,從實際的角度來講,某些情況下無限多的數據可以通過比較少量的數據近似。不同後驗收斂到相同分布的速度取決於數據和模型。從前面的圖中可以看出,藍色和紅色的後驗在經過8次實驗之後就很難看出區別了,而紅色的曲線則一直到150次實驗之後才與另外兩個後驗看起來比較接近。有一點從前面的圖中不太容易看出來,如果我們一步一步地更新後驗,最後得到的結果跟一次性計算得到的結果是一樣的。換句話說,我們可以對後驗分150次計算,每次增加一個新的觀測數據並將得到的後驗作為下一次計算的先驗,也可以在得到150次拋硬幣的結果之後一次性計算出後驗,而這兩種計算方式得到的結果是完全一樣的。這個特點非常有意義,在許多數據分析的問題中,每當我們得到新的數據時可以更新估計值。先驗的影響以及如何選擇合適的先驗

從前面的例子可以看出,先驗對分析的結果會有影響。一些貝葉斯分析的新手(以及一些詆毀該方法的人)會對如何選擇先驗感到茫然,因為他們不希望先驗起到決定性作用,而是更希望數據本身替自己說話!有這樣的想法很正常,不過我們得牢記,數據並不會真的「說話」,只有在模型中才會有意義,包括數學上的和腦海中的模型。面對同一主題下的同一份數據,不同人會有不同的看法,這類例子在科學史上有許多。

有些人青睞於使用沒有信息量的先驗(也稱作均勻的、含糊的或者發散的先驗),這類先驗對分析過程的影響最小。本書將遵循Gelman、McElreath和Kruschke 3人的建議

,更傾向於使用帶有較弱信息量的先驗。在許多問題中,我們對參數可以取的值一般都會有些了解,比如,參數只能是正數,或者知道參數近似的取值範圍,又或者是希望該值接近0或大於/小於某值。這種情況下,我們可以給模型加入一些微弱的先驗信息而不必擔心該先驗會掩蓋數據本身的信息。由於這類先驗會讓後驗近似位於某一合理的邊界內,因此也被稱作正則化先驗。

當然,使用帶有較多信息量的強先驗也是可行的。視具體的問題不同,有可能很容易或者很難找到這類先驗,例如在我工作的領域(結構生物信息學),人們會儘可能地利用先驗信息,通過貝葉斯或者非貝葉斯的方式來了解和預測蛋白質的結構。這樣做是合理的,原因是我們在數十年間已經從上千次精心設計的實驗中收集了數據,因而有大量可信的先驗信息可供使用。如果你有可信的先驗信息,完全沒有理由不去使用。試想一下,如果一個汽車工程師每次設計新車的時候,他都要重新發明內燃機、輪子乃至整個汽車,這顯然不是正確的方式。

現在我們知道了先驗有許多種,不過這並不能緩解我們選擇先驗時的焦慮。或許,最好是沒有先驗,這樣事情就簡單了。不過,不論是否基於貝葉斯,模型都在某種程度上擁有先驗,即使這裡的先驗並沒有明確表示出來。事實上,許多頻率統計學方面的結果可以看做是貝葉斯模型在一定條件下的特例,比如均勻先驗。讓我們再仔細看看前面那幅圖,可以看到藍色後驗分布的峰值與頻率學分析中 θ 的期望值是一致的:

注意,這裡

是點估計而不是後驗分布(或者其他類型的分布)。由此看出,你沒辦法完全避免先驗,不過如果你在分析中引入先驗,得到的會是概率分布分布而不只是最可能的一個值。明確引入先驗的另一個好處是,我們會得到更透明的模型,這意味著更容易評判、(廣義上的)調試以及優化。構建模型是一個循序漸進的過程,有時候可能只需要幾分鐘,有時候則可能需要數年;有時候整個過程可能只有你自己,有時候則可能包含你不認識的人。而且,模型復現很重要,而模型中透明的假設能有助於復現。

在特定分析任務中,如果我們對某個先驗或者似然不確定,可以自由使用多個先驗或者似然進行嘗試。模型構建過程中的一個環節就是質疑假設,而先驗就是質疑的對象之一。不同的假設會得到不同的模型,根據數據和與問題相關的領域知識,我們可以對這些模型進行比較,本書第6章模型比較部分會深入討論該內容。

由於先驗是貝葉斯統計中的一個核心內容,在接下來遇到新的問題時我們還會反覆討論它,因此,如果你對前面的討論內容感到有些疑惑,別太擔心,要知道人們在這個問題上已經困惑了數十年並且相關的討論一直在繼續。

報告貝葉斯分析結果

現在我們已經有了後驗,相關的分析也就結束了。下面我們可能還需要對分析結果進行總結,將分析結果與別人分享,或者記錄下來以備日後使用。

模型注釋和可視化

根據受眾不同,你可能在交流分析結果的同時還需要交流模型。以下是一種簡單表示概率模型的常見方式:

這是我們拋硬幣例子中用到的模型。符號~表示左邊隨機變量的分布服從右邊的分布形式,也就是說,這裡 θ 服從於參數為 α 和 β 的Beta分布,而 y 服從於參數為 n = 1和 p = θ 的二項分布。該模型還可以用類似Kruschke書中的圖表示成如下形式:

在第一層,根據先驗生成了 θ ,然後通過似然生成最下面的數據。圖中的箭頭表示變量之間的依賴關係,符號~表示變量的隨機性。

本書中用到的類似Kruschke中的圖都是由Rasmus Bth提供的模板生成的。

總結後驗

貝葉斯分析的結果是後驗分布,該分布包含了有關參數在給定數據和模型下的所有信息。如果可能的話,我們只需要將後驗分布展示給觀眾即可。通常,一個不錯的做法是:同時給出後驗分布的均值(或者眾數、中位數),這樣能讓我們了解該分布的中心,此外還可以給出一些描述該分布的衡量指標,如標準差,這樣人們能對我們估計的離散程度和不確定性有一個大致的了解。拿標準差衡量類似正態分布的後驗分布很合適,不過對於一些其他類型的分布(如偏態分布)卻可能得出誤導性結論,因此,我們還可以採用下面的方式衡量。

最大後驗密度

一個經常用來描述後驗分布分散程度的概念是 最大後驗密度 ( Highest Posterior Density,HPD)區間。一個HPD區間是指包含一定比例概率密度的最小區間,最常見的比例是95%HPD或98%HPD,通常還伴隨著一個50%HPD。

如果我們說某個分析的HPD區間是[2, 5],其含義是指:根據我們的模型和數據,參數位於2~5的概率是0.95。這是一個非常直觀的解釋,以至於人們經常會將頻率學中的置信區間與貝葉斯方法中的可信區間弄混淆。如果你對頻率學的範式比較熟悉,請注意這兩種區間的區別。貝葉斯學派的分析告訴我們的是參數取值的概率,這在頻率學的框架中是不可能的,因為頻率學中的參數是固定值,頻率學中的置信區間只能包含或不包含參數的真實值。在繼續深入之前,有一點需要注意:選擇95%還是50%或者其他什麼值作為HPD區間的概率密度比例並沒有什麼特殊的地方,這些不過是經常使用的值罷了。比如,我們完全可以選用比例為91.37%的HPD區間。如果你選的是95%,這完全沒問題,只是要記住這只是個默認值,究竟選擇多大比例仍然需要具體問題具體分析。

對單峰分布計算95%HPD很簡單,只需要計算出2.5%和97.5%處的值即可:

def naive_hpd(post):

sns.kdeplot(post)

HPD = np.percentile(post, [2.5, 97.5])

plt.plot(HPD, [0, 0], label='HPD {:.2f} {:.2f}'.format(*HPD),

linewidth=8, color='k')

plt.legend(fontsize=16);

plt.xlabel(r'$\theta$', fontsize=14)

plt.gca().axes.get_yaxis().set_ticks([])

np.random.seed(1)

post = stats.beta.rvs(5, 11, size=1000)

naive_hpd(post)

plt.xlim(0, 1)

對於多峰分布而言,計算HPD要稍微複雜些。如果把對HPD的原始定義應用到混合高斯分布上,我們可以得到:

np.random.seed(1)

gauss_a = stats.norm.rvs(loc=4, scale=0.9, size=3000)

gauss_b = stats.norm.rvs(loc=-2, scale=1, size=2000)

mix_norm = np.concatenate((gauss_a, gauss_b))

naive_hpd(mix_norm)

plt.savefig('B04958_01_08.png', dpi=300, figsize=(5.5, 5.5))

從上圖可以看出,通過原始HPD定義計算出的可信區間包含了一部分概率較低的區間,位於[0,2]。為了正確計算出HPD,這裡我們使用了plot_post函數,你可以從本書附帶的代碼中下載對應的源碼:

from plot_post import plot_post

plot_post(mix_norm, roundto=2, alpha=0.05)

plt.legend(loc=0, fontsize=16)

plt.xlabel(r"$\theta$", fontsize=14)

從上圖可以看出,95%HPD包含兩個區間,同時plot_post函數也返回了兩個眾數。

怎麼樣?有收穫吧,無論是複雜公式還是計算,不要怕,只要python在手,萬事皆易。

相關焦點

  • python實現高斯樸素貝葉斯分類器
    為了學習樸素貝斯定理的關鍵概念。你可以閱讀我們的介紹貝葉斯定理的文章。這將有助於你理解與樸素貝葉斯有關的核心概念。    在介紹樸素貝葉斯定理的文章中,我們討論了三種流行的樸素貝葉斯算法:    作為樸素貝葉斯定理文章的擴展,現在我們將在「人口收入」數據集上實現高斯樸素貝葉斯。
  • 用Python貝葉斯統計試試
    貝葉斯統計的概念很簡單,有一些固定的數據(固定的意思是指我們無法改變觀測值),和一些感興趣的參數,剩下要做的就是探索這些參數可能的取值,其中所有的不確定性都通過概率進行建模。說句白話,能夠用已有的資料做基礎,嘗試預測未來。
  • 貝葉斯及概率統計角度
    分析現在假設所有數字都是從1到100中選取的整數。如果現在告訴你,16是一個未知概念C的正例,那請問你什麼數字還符合這個概念C呢?你會感覺所有的假設都太過模糊,不太可能。比如17可以看做是離16很近的概念的正例;6也有可能,因為它們都有一個數字6;再如32,它們都是2的冪次;以此的假設太多了。
  • 條件概率與貝葉斯統計
    迄今為止,我們使用的統計方法在統計學中都稱為頻率論方法。我們從樣本中得出的結論完全基於數據的頻率或比例。
  • 專欄| 貝葉斯學習與未來人工智慧
    機器之心專欄作者:鄧仰東 發射資本人人都喜歡美劇《生活大爆炸》。Sheldon 和朋友們的生活看似單調,但是自有其獨特的精彩。捧腹之餘,理工科出身的觀眾不免也想看看 Sheldon 到底在做怎樣的研究,特別是和我們自己相關的工作。果然,在第四季第 2 集中我們看到了下圖中的公式(用紅框標出)——貝葉斯定理!
  • 基於貝葉斯定理的算法——樸素貝葉斯分類
    不過今天我們介紹的樸素貝葉斯分類器通過獨立假設簡化了概率的計算,節省了內存,可以很好地用於數據量大的情況。下面我們首先來了解這一算法的數理背景——貝葉斯定理。這一算法是由我們在概率論中學到的貝葉斯定理延伸出來的。我們知道貝葉斯公式為:其中,
  • 用R也可以跑Python了
    如果你主要從事數據分析、統計建模和可視化,R大概是你的不二之選。但如果你還想來搞點深度學習,整個自然語言處理,那你可還真得用Python。如果你處於交叉領域,很可能就需要兩種語言切換。如果你真的想提高你在數據科學領域的能力,這兩種語言你確實都應該學習。不過現在好消息來了!
  • 用一篇短文來告訴大家,學習Python都可以用來幹嘛
    python能做太多有趣的事了,看看我是怎麼玩的1.自動發郵件2.自動化操作excel3.定製酷炫二維碼4.下載視頻、MP35.爬蟲6.HTML\網頁自動生成PDF7.製作可視化圖表8.地理空間分析9.數據分析10連接資料庫11.機器學習如果你不知道如何學習python,入門困難,如果你想從事數據分析,學習分析技術,如果你想學習sql
  • 傳說中的貝葉斯統計到底有什麼來頭?
    引言:在很多分析學者看來,貝葉斯統計仍然是難以理解的。受機器學習這股熱潮的影響,我們中很多人都對統計學失去了信心。在18世界70年代,Thomas Bayes提出了「貝葉斯理論」,即便在幾個世紀後,貝葉斯統計的重要性也沒有減弱。事實上,世界上那些最優秀的大學都在教授有關這個話題的深度課程。
  • 介紹利用貝葉斯統計的一個實踐案例
    介紹利用貝葉斯統計的一個實踐案例 李倩 發表於 2018-07-16 17:14:59 為了大家可以對貝葉斯算法有更多的了解,人工智慧頭條為大家整理過一篇關於貝葉斯算法的文章
  • 人人都需要掌握的 5 個基本統計概念
    在數據科學藝術的執行中,統計可以說是一個強大的工具。從高層次來看,統計學是利用數學對數據進行分析的學科。基本的可視化(柱狀圖等)會給受眾一些深層的信息,但通過統計,我們可以用一種更富有信息驅動力和更有針對性的方式對數據進行操作。
  • 貝葉斯和貝葉斯公式
    貝葉斯在數學方面主要研究概率論。他首先將歸納推理法用於概率論基礎理論,並創立了貝葉斯統計理論,對於統計決策函數、統計推斷、統計的估算等做出了貢獻。貝葉斯思想和方法對概率統計的發展產生了深遠的影響。今天,貝葉斯思想和方法在許多領域都獲得了廣泛的應用。從二十世紀20~30年代開始,概率統計學出現了「頻率學派」和「貝葉斯學派」的爭論,至今,兩派的恩恩怨怨仍在繼續。貝葉斯決策理論是主觀貝葉斯派歸納理論的重要組成部分。
  • 【乾貨】為機器學習從業人員提供的貝葉斯學習核心路線
    貝葉斯統計是統計的一個分支,它的特點是把我們感興趣的量(比如統計模型的參數)看作隨機變量。給定觀察數據後, 我們對這些量的後驗分布進行分析從而得出結論。雖然貝葉斯統計的核心思想已歷經很多年了, 但貝葉斯的思想在過去近20年對機器學習產生了重大影響, 因為它在對真實世界現象建立結構化模型時提供了靈活性。
  • 2021考研數學備考指導:概率統計淺析貝葉斯公式及其應用
    2021考研數學備考指導:概率統計淺析貝葉斯公式及其應用 2021考研已經進入緊張的備考強化階段,考生務必要重視,打好基礎,為將來做準備!
  • Python開發簡單爬蟲【學習資料總結】
    方法2:添加data,http header 向伺服器提交http的頭信息,形成一個data,可以向伺服器提交需要用戶輸入的數據。 開發爬蟲步驟 python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例)
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 貝葉斯告訴你,為什麼需要進行第二次核酸檢測
    樸素貝葉斯原理簡單,也很容易實現,多用於文本分類,比如垃圾郵件過濾。作為樸素貝葉斯算法的核心,貝葉斯定理十分重要,有必要單獨拿出一章的篇幅來研究。  本章內容為純統計學知識,我儘可能用簡潔、通俗易懂的方式來講述,請放心學習。
  • 學習Python對辦公真的有用嗎?用經驗告訴你答案
    今天來聊一聊學習python的事情,相信很多人都看到過朋友圈出現的python廣告,抑或是各種公眾號推出的python學習課堂,並且大多數都以「學會python讓你辦公效率直線提升,升職加薪一路狂飆」為賣點來進行宣傳,那麼,我這裡就要提出一個問題了。
  • 閃著藍光的貝葉斯,到底有多神奇?
    缺少任何一個都將會極大改變計算結果。假正貝葉斯定理可以幫助我們糾正假正(false positives),比如當我們假設一件事情能給一個結果提供有用信息時,而這個結果本身不太可能出現,就容易出現誤報。與誤報相關的一個很著名的例子就是癌症檢測(或者其他罕見疾病檢測)。假設某種癌症的患病率為0.1%。
  • 機器學習的統計方法 貝葉斯決策理論入門
    鑑於本文的目的是描述做出這些決策的統計方法,所以我只關注問題的第一部分:病人是否有腫瘤,是,還是否?貝葉斯定理在統計學和概率論領域,最著名的方程之一是貝葉斯定理(見下面的公式)。基本直覺是,給定某個特徵(即屬性)時,某個類或事件發生的概率是基於特徵值的可能性和有關該類或事件的任何先驗信息計算的。這句話看起來有點複雜,所以我們一步步拆開來看。首先,癌症檢測是一個兩類問題。