[Bayesian] 「我是bayesian我怕誰」系列 - Naive Bayes with Prior

機器學習路線

實用教材

先明確一些潛規則:html

    • 機器學習是個collection or set of models,一切實踐性強的模型都會被概括到這個領域,沒有嚴格的定義,’有用‘可能就是惟一的共性。

機器學習大概分爲三個領域:網絡

    • 通常的機器學習模型:沒有摻雜太多統計概念,例如決策樹,KNN聚類,感知機等。
    • 統計機器學習模型:依賴統計理論,主要是貝葉斯統計,例如SVM,naive bayesian,貝葉斯線性迴歸,高斯過程等。
    • 神經網絡模型:能夠簡單的理解爲感知機的擴展,由於擴展的太猛,單獨成立門派咯。

如此定義,有助於菜雞入門,不用糾結嚴謹性。app

 

如何理解「通常的機器學習模型」和「統計機器學習模型」?框架

大部分人都不具有堅實的統計數學基礎, such as《統計推斷》,《貝葉斯分析》,但好東西仍然值得推廣,那就先普及比較好理解的。dom

而所謂「通常的機器學習」,常以《機器學習導論》的姿態出現,見下圖左。至於神經網絡,首先,深度學習就是」更深「的神經網絡,不要糾結這個梗,至於書,就是這典型的花書,見下圖右。中間的prml,就是一本典型的貝葉斯機器學習書籍。機器學習

這些潛規則,確實會讓菜雞走火入魔,下載,打開目錄,對比目錄瞧上一瞧,就行了。固然,將來還會揭祕更多「潛規則」。ide

左:通常的機器學習  中:統計機器學習  右:深度學習函數

 

最近只是想對(我的的)統計機器學習知識體系作個梳理,寫在這裏。工具

還有一個常見問題,PGM是否是就是統計學習?PGM能夠理解爲一種符號工具for統計學習,「幾何之於代數」,暫時先這麼理解着。post

 

固然了,不具有必定的數學基礎不要碰統計學習;不會統計學習,不要自稱作機器學習。所學的最最基本的數學基礎是:

  • 《統計推斷》or《高級數理統計》的書籍可自行百度,學習基本的統計知識,好比各類分佈的性質,統計量的性質等等。
  • 《貝葉斯分析》推薦此書,此領域中文的好書很少,貝葉斯理論是一套體系,值得學習一本書。

貝葉斯分析 - 韋來生 (做者), 張偉平 (做者)

先說這麼多做爲前言,不要小看其價值,爲何你沒有成爲」別人家的牛人」,每每不是智商問題,而是沒有「課程表」。

 

 

小數據的福音:貝葉斯

深入瞭解一下概念:最大似然估計MLE最大後驗估計MAP貝葉斯估計

這些概念有點區別,但對於「大數據」,其實結果相差無幾,後二者都趨近於MLE。

小數據固然有必要糾結細節,固然還有一個緣由,就是風險估計時,詳見:統計決策論

 

 

 

生成式模型

書歸正傳,一個例子:生成式模型

何爲生成式模型?這是個比較形象的叫法,好比:生成式 --> 生孩子。既然能判斷出各國孕婦生各類膚色孩子的機率,那麼,已知一個小孩的膚色爲白,也就能判斷最可能的國籍是歐洲某國。

這裏,生成式模型卻用於了分類。生成式,體現的是一個「過程」;分類,體現的是一個「靜態結果」。觀看的角度不一樣罷了,比如:電腦能夠「寫代碼」,也能夠是「遊戲機」。

因此,不要糾結模型的名字,確實會帶來理解上的誤導。思考其核心功能價值,而後再放置在合適的知識體系角落。

   

機率圖模型

畫個機率圖,看上去清晰明瞭,這也就是其存在的價值之一。

 

 

基本假設:

    • topic多是幾種話題之一,乃categorical分佈。
    • 在topic下,每一個word可能出現也可能不出現,乃bernoulli分佈。

 

先驗假設 

爲何要考慮prior,有「原先的經驗」固然要加以利用。

那麼,開始估計topic生成各個單詞的機率就行了,估計好了,就能夠以後拿來預測新樣本。

有菜雞問,這難道就是人們常說的高大上的主題模型?別鬧,你說的東西在這裏,Latent Dirichlet Allocation。至於二者區別,不在此討論,在此有提:[IR] Concept Search and LDA

 

 參數的先驗形式:

 

參數的後驗估計: 

 

 

代碼實現

這叫作:解析解(analytical solution),跟解方程組似的,答案能夠經過公式一步到位。對應的代碼也易實現,以下。

def naive_bayes_posterior_mean(x, y, alpha=1, beta=1):
    """
    Given an array of features `x`,
    an array of labels `y`,
    class prior Dirichlet parameter `alpha`, and
    common class-conditional feature expectation `beta`
    return 
    
    a posterior mean, `pi`, of `alpha` and
    a posterior mean, `theta` of the `beta`.
    
    NB: this is not the same as returning the parameters of the full posterior,
    but it is sufficient to calculate the posterior predictive density.
    """
    n_class = y.shape[1]
    n_feat = x.shape[1]
    
    # as a convenience, we allow both alpha and beta to be scalar values
    # which will be upcast to arrays for the common case of using priors to smooth
    # this is a no-op for alpha
    # but for beta, we must be explicit
    beta = np.ones(2) * beta
    
    pi_counts = np.sum(y, axis=0) + alpha
    pi = pi_counts/np.sum(pi_counts)
    
    theta = np.zeros((n_feat, n_class))

    for cls in range(n_class):
        docs_in_class = (y[:, cls]==1)
        class_feat_count = x[docs_in_class, :].sum(axis=0)
        theta[:, cls] = (class_feat_count + beta[1])/(docs_in_class.sum() + beta.sum())
        
    return pi, theta

 

解析解推導

第一篇,邀你入行,門檻低,騙你入坑。至於結果(解析解)的求解過程以及求解能力,可能纔有點價值。

 

貝葉斯公式,就是要關注兩個東西:似然函數,先驗。

注意,這裏的先驗是個聯合先驗,雖然二者是iid。那爲什麼搞這麼複雜?

由於有些分佈的先驗們並不是iid,好比高斯的均值與方差,二者互爲影響。

這裏仍「堅持」寫成聯合先驗的形式,只是遵循「統一框架」,思惟的嚴謹性,菜雞們看多了就習慣了。

最後,根據貝葉斯公式,天然得出了一個聯合形式的參數的後驗:

 

可見,兩個參數各自的估計都是獨立的事情,寫成如此,也是爲了迎合「統一框架」。

通常而言,獲得聯合分佈,就是獲得一切。積分積到看不順眼的變量就天然獲得了所需變量的邊緣分佈形式。

菜雞問:爲什麼突然便跳出了後驗分佈結果?這是共軛先驗的性質,故菜雞先要打好數學基礎。 

參數的分佈都有了,求參數的指望也就得出了最後的解析解。

 

 

 

貝葉斯之歌

寫在本篇的最後,爲何叫這麼個系列,由於: 

樂隊連接

I think I'm Bayesian.
For all my life taught
parameters are fixed they don't come from distributions.
Try to imagine:
experiments repeat forever...
such a silly notion!
Propose this: New step.
What should I do? Accept, reject?
I feel free in these chains!

I think I'm a Bayesian.
How did this happen?
Just yesterday I tested H0s.
But I just learned Bayes' rule,
and priors seem cool,
have no p-value so how do I know?

If I'm a Bay Bay Bay Bay... Bayesian?
Am I a Bay Bay Bay Bay... Bayesian?

I don't know if this makes sense but,
I think I'm a Bayesian.

Give me a sampler:
I'll go and tune it;
I'll fly to it; I'll burn it in;
'cause I love to run chains,  
cut strings,
a couple things I can't do without Bayes!
Yeah I'm on top of the world,
when my samplers all converge!
Used to shrink my coefficients,
now I use stochastic search!

My advisors be like, "Woah,
what happened to you?
Use a prior one more time and
I'mma banish you to Duke!!"

Accept it, I know you want
to join my table at the Chinese restaurant.
My posterior is charming, so why don't you try?
We're conjugate! Don't be shy!
Yeah I know, all the frequentists say,
"Shame on you!"
But I tell them take a random walk
'cause I know this is the start of something new!
I think I'm a Bayesian!

I think I'm a Bayesian.
How did this happen?
Just yesterday I tested H0s.
But I just learned Bayes' rule,
and priors seem cool,
have no p-value so how do I know?
歌詞
相關文章
相關標籤/搜索