在傳統gmm模型中,高斯模型數量k是乙個超引數,如何選取此引數會直接影響著模型訓練的結果。當k過大時,出現某些高斯模型方差大的問題,而當k選取過小時,則容易出現奇異。對此,一般的做法是通過交叉驗證技術依據不同的資訊指標,如bic等進行選取,中間計算量大,過程複雜。而在貝葉斯變分方法中則很好的解決了這個問題。
在貝葉斯高斯混合模型中,對先驗概率進行假設變分。
首先假設係數項符合狄利克雷分布:
p (π
)=
dir(π
∣α0)
=c(α
0)∏k
=1kπ
kα0−
1p(\boldsymbol)=\operatorname\left(\boldsymbol | \boldsymbol_\right)=c\left(\boldsymbol_\right) \prod_^ \pi_^-1}
p(π)=d
ir(π
∣α0
)=c(
α0)
k=1∏
kπk
α0−
1其中,α
0\boldsymbol_
α0為分布的引數,它表示此混合分布在選擇分量時的集中程度。c(α
0)
c\left(\boldsymbol_\right)
c(α0)
為分布歸一化係數。
假設均值和精度矩陣符合高斯-wishart分布:
p (μ
,λ)=
p(μ∣
λ)p(
λ)=∏
k=1k
n(μk
∣m0,
(β0λ
k)−1
)w(λ
k∣w0
,ν0)
\begin p(\boldsymbol, \boldsymbol) =p(\boldsymbol | \boldsymbol) p(\boldsymbol) =\prod_^ \mathcal\left(\boldsymbol_ | \mathbf_,\left(\beta_ \boldsymbol_\right)^\right) \mathcal\left(\boldsymbol_ | \mathbf_, \nu_\right) \end
p(μ,λ)
=p(μ
∣λ)p
(λ)=
k=1∏
kn(
μk∣
m0,
(β0
λk)
−1)w
(λk
∣w0
,ν0
)即,精度矩陣分布為wishart分布,而均值的分布依賴精度矩陣的分布。
通過一系列的變分分解處理後,可估計到各項引數,求解步驟如下:
此外,還可以採用k-means來初始化引數。其主要作用從第四步,計算n
kn_k
nk開始。當採用k-means方法初始化,可以得到更準確地responsibility計算,可以認為是進行了乙個e步,接著採用m步類似的演算法來計算模型中的其他引數。
在進行分類時,只需要呼叫e步,計算得到各資料點的responsibility值,以最大值作為分類就可以了。
bishop c m. pattern recognition and machine learning[m]. springer, 2006.
Scikit Learn學習筆記 樸素貝葉斯
樸素貝葉斯模型是一組非常簡單快速的分類方法啊,通常適用於維度非常高的資料集。因為執行速度快,而且可調引數少,因此非常適合為分類問題提供快速粗糙的基本方案。之所以成為 樸素 或 樸素貝葉斯 是因為如果對每一種標籤的生成模型 用於計算每個標籤的p 特徵 li p 特徵 li 進行非常簡單的假設,就能找到...
機器學習 貝葉斯
bayes.py包含了所有函式的實現,需要做的是,明白各個函式的功能作用及輸入輸出,在指令碼中完成函式的呼叫,給出要求的格式的結果。from numpy import import csv import random random.seed 21860251 def loaddataset post...
貝葉斯學習(二)
一 貝葉斯網路簡介 貝葉斯網路 bayesian network 又稱信念網路 belief network 或是有向無環圖模型 directed acyclic graphical model 是一種概率圖型模型。貝葉斯網路又稱信度網路,是bayes方法的擴充套件,是目前不確定知識表達和推理領域最...