上面介紹了伯努利分布,下面接著介紹一種更為複雜的情況。本質上伯努利分布描述的是拋硬幣的過程,現在我們考慮擲骰子的情況。骰子有六面,每一面的點數分別為:1,
2,3,
4,5,
6 。一般情況下,我們投骰子每一面的概率都是一樣的——都是16
。但也有特殊的情況,曾經有段時間,香港電影流行賭博主題的電影(《賭神》,不小心暴露的年齡…),裡面有乙個很low的老千,在骰子上做了手腳,使得某一面出現的概率增大。言歸正傳,我們假設每一面的出現的概率是不一樣的。這一型別的概率分布充為多項式分布
這裡我們引入一種one-hot的表示形式。設
x 為
k 維向量,其中只有乙個維度的值為
1,其餘為
0 。設xk
表示向量
x 的第
k 維,比如只有第三維的值x3
為1,那麼x=
(0,0
,1,0
,0,0
)t。對應擲骰子的情況。(1
,0,0
,0,0
,0)t
表示第1面,(0
,1,0
,0,0
,0)t
表示第2面,…,依次類推。設每一面出現的概率為uk
,uk 滿足0≤
uk≤1
,∑kk
=1uk
=1。那麼投擲一次骰子,變數
x 的概率為: p(
x|u)
=∏k=
1kux
kk設有
n 個服從該分布的樣本d=
,那麼概率似然為: p(
d|μ)
=∏n=
1np(
xn|u
)=∏n
=1n∏
k=1k
uxnk
k=∏k
=1ku
∑nn=
1xnk
k 上式中,xn
k 表示xn
的第k維。
同樣的,通過最大化對數似然lnp
(d|u
)可以求得引數
u 。當然由於
u 需滿足∑k
k=1u
k=1 ,因此可以引入拉格朗日乘子。 ∑k
=1k(
∑n=1
nxnk
)lnuk
+λ(∑
k=1k
uk−1
) 上式對u
k 求導,並令其為0,可得: uk
=−∑n
n=1x
nkλ
考慮到約束∑k
k=1u
k=1 ,可得到: λ=
−∑n=
1n∑k
=1kx
nk=−
n 所以: uk
=∑nn
=1xn
kn用python來實現上述的引數估計過程,用scipy包中的multinomial分布來生成樣本,再根據這些樣本估計multinomial分布的引數。實現起來還是非常容易的。
估計伯努利分布的引數:
from scipy.stats import multinomial
import numpy
x=multinomial.rvs(n=1,p=[0.4,0.5,0.1],size=100000) #根據伯努利分布來生成樣本#
u = numpy.mean(x,axis=0);#用樣本來估計引數#
print(u)
機器學習 聯合概率分布
聯合概率分布簡稱聯合分布,對隨機向量x 的概率分布,稱為隨機變數x1,x2 xm 的聯合概率分布。根據隨機變數的不同,聯合概率分布的表示形式也不同。對於離散型隨機變數,聯合概率分布可以以列表的形式表示,也可以以函式的形式表示 對於連續型隨機變數,聯合概率分布通過非負函式的積分表示。如果隨機變數x的取...
機器學習之概率題
投乙個骰子,各個數字的概率都是1 6。問投的數字6的期望次數。很顯然,這個題的答案是e 1 1 6 6 具體計算如下 分成兩部分 1 當前狀態下有1 6的概率投出數字6,投擲次數就是1 61 2 5 6的概率投擲出其他數字,那麼需要重現再投e次,才能得到數字6,投擲次數是5 6 1 e 因此,總的式...
概率分布之共軛分布
共軛分布 conjugate distribution 的概率中一共涉及到三個分布 先驗 似然和後驗,如果由先驗分布和似然分布所確定的後驗分布與該先驗分布屬於同一種型別的分布,則該先驗分布為似然分布的共軛分布,也稱為共軛先驗。比較繞嘴,下面從公式來理一下思路。假設變數 x 服從分布p x 其觀測樣本...