《統計學習方法》代碼全解析——第十一部分條件隨機場

1.概率無向圖模型是由無向圖表示的聯合概率分佈。無向圖上的結點之間的連接關係表示了聯合分佈的隨機變量集合之間的條件獨立性,即馬爾可夫性。因此,概率無向圖模型也稱爲馬爾可夫隨機場。
概率無向圖模型或馬爾可夫隨機場的聯合概率分佈可以分解爲無向圖最大團上的正值函數的乘積的形式。
2.條件隨機場是給定輸入隨機變量 𝑋 X 條件下,輸出隨機變量 𝑌 Y 的條件概率分佈模型, 其形式爲參數化的對數線性模型。條件隨機場的最大特點是假設輸出變量之間的聯合概率分佈構成概率無向圖模型,即馬爾可夫隨機場。條件隨機場是判別模型。
3.線性鏈條件隨機場是定義在觀測序列與標記序列上的條件隨機場。線性鏈條件隨機場一般表示爲給定觀測序列條件下的標記序列的條件概率分佈,由參數化的對數線性模型表示。模型包含特徵及相應的權值,特徵是定義在線性鏈的邊與結點上的。線性鏈條件隨機場的數學表達式是 

4.線性鏈條件隨機場的概率計算通常利用前向-後向算法。
5.條件隨機場的學習方法通常是極大似然估計方法或正則化的極大似然估計,即在給定訓練數據下,通過極大化訓練數據的對數似然函數以估計模型參數。具體的算法有改進的迭代尺度算法、梯度下降法、擬牛頓法等。
6.線性鏈條件隨機場的一個重要應用是標註。維特比算法是給定觀測序列求條件概率最大的標記序列的方法。

from numpy import *

#這裏定義T爲轉移矩陣列代表前一個y(ij)代表由狀態i轉到狀態j的概率,Tx矩陣x對應於時間序列
#這裏將書上的轉移特徵轉換爲如下以時間軸爲區別的三個多維列表,維度爲輸出的維度
T1 = [[0.6, 1], [1, 0]]
T2 = [[0, 1], [1, 0.2]]
#將書上的狀態特徵同樣轉換成列表,第一個是爲y1的未規劃概率,第二個爲y2的未規劃概率
S0 = [1, 0.5]
S1 = [0.8, 0.5]
S2 = [0.8, 0.5]
Y = [1, 2, 2]  #即書上例一需要計算的非規劃條件概率的標記序列
Y = array(Y) - 1  #這裏爲了將數與索引相對應即從零開始
P = exp(S0[Y[0]])
for i in range(1, len(Y)):
    P *= exp((eval('S%d' % i)[Y[i]]) + eval('T%d' % i)[Y[i - 1]][Y[i]])
print(P)
print(exp(3.2))

 24.532530197109345 24.532530197109352

#這裏根據例11.2的啓發整合爲一個矩陣
F0 = S0
F1 = T1 + array(S1 * len(T1)).reshape(shape(T1))
F2 = T2 + array(S2 * len(T2)).reshape(shape(T2))
Y = [1, 2, 2]  #即書上例一需要計算的非規劃條件概率的標記序列
Y = array(Y) - 1

P = exp(F0[Y[0]])
Sum = P
for i in range(1, len(Y)):
    PIter = exp((eval('F%d' % i)[Y[i - 1]][Y[i]]))
    P *= PIter
    Sum += PIter
print('非規範化概率', P)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章