1. 程式人生 > >最大熵模型python實現

最大熵模型python實現

本文參考nltk MaxentClassifier實現了一個簡單的最大熵模型,主要用於理解最大熵模型中一些數學公式的實際含義。
最大熵模型

Pw(y|x)Zw(x)=1Zw(x)exp(i=1nwifi(x,y))=yexp(i=1nwifi(x,y))
這裡fi(x,y)代表特徵函式,wi代表每個特徵函式對於的權值。

如何計算測試資料x被分為類別y的概率呢?
總結成一句話:我們把x和y傳給每個特徵函式得到相應的特徵值(0或者1),然後乘上相應的權值,最後通過softmax得到。

現在面臨兩個問題。
1.這裡的fi(x,y)究竟是什麼鬼,如何得到?
2.wi又如何求得?

先來看看第一個問題。
f

i(x,y)反映的是x和y的特徵,也就是說它是對輸入和輸出同時抽取特徵的
它的定義是

f(x,y)={1,xy滿0,
值得注意的是,這裡在判斷x,y是否滿足某一事實的時候不是簡單判斷x整體與y的關係,而是判斷x的特徵與y的關係。舉個例子:
x=dict(a=1, b=1, c=1)
y='1'

這樣一個訓練資料,我們對它進行特徵提取時:
對x的第一個特徵抽取,用一個三元組表示就是(x某一特徵名,特徵名對應的值,y)
分別對x的特徵進行抽取得到三個特徵函式:
(‘a’,1,’1’)
(‘b’,1,’1’)
(‘c’,1,’1’)
抽取樣本中所有特徵函式的程式碼實現:

def maxent_train(train_toks):
    ...
    mapping = {}  # maps (fname, fval, label) -> fid
    for(tok, label) in train_toks:
        for(fname, fval) in tok.items():
            if (fname,fval,label) not in mapping:
                mapping[(fname,fval,label)] = len(mapping)
    ...

程式碼中mapping儲存了所有特徵函式,所以判斷x,y是否滿足某一事實就是看mapping能不能找到(x某一特徵名,特徵名對應的值,y)這樣的三元組。

來看看第二個問題,如何求wi
我們通過GIS演算法求它,這裡省略數學推導直接看結果。
演算法流程如下:
1.任意初始化wi,一般為0:

w(0)i=0,i{1,2,3,...,n}
這裡的下標表示第i個特徵對於的w,上標表示第t輪迭代。
2.重複以下更新直至收斂:w(t+1)i=w(t)i+1ClogEp̂ (fi)Ep(n)(fi),i{1,2,...,n}
其中C一般取樣本的最大特徵數,反應了w更新速度。
Ep̂ (f)=x,yP̂ (x,y)f(x,y)
表示的是某一個特徵函式關於經驗分佈P̂ (x,y)的期望值
Ep(f)=x,yP̂ (x)P(y|x)f(x,y)
表示的是某一個特徵函式關於模型P(y|x)與經驗分佈P̂ (x)的期望值

先來看P̂ (x,y)P̂ (x)

P̂ (X=x,Y=y)=v(X

相關推薦

模型python實現

本文參考nltk MaxentClassifier實現了一個簡單的最大熵模型,主要用於理解最大熵模型中一些數學公式的實際含義。 最大熵模型:Pw(y|x)Zw(x)=1Zw(x)exp(∑i=1nwifi(x,y))=∑yexp(∑i=1nwifi(x,y))

模型及其python實現

剛開始學習最大熵模型的時候,自以為書中的推導都看明白了。等到自己實現時才發現問題多多。因此,這篇部落格將把重點放在python程式的解讀上,為什麼說是解讀呢,因為這個程式不是我寫的(輕點噴~~),這個程式參考了網上的一篇部落格,地址:http://blog.cs

模型進行字標註中文分詞(Python實現

        同前面的那篇文章一樣(參見:最大熵模型進行中文分詞),本文運用字標註法進行中文分詞,分別使用4-tag和6-tag對語料進行字標註,觀察分詞效果。前面的文章中使用了模型工具包中自帶的一個樣例進行4-tag中文分詞,但由於其選取的特徵是針對英文詞性標註開發

模型

定性 全部 投資 情況 進行 算法 出了 信息 簡單 我們不要把雞蛋都放在一個籃子裏面講得就是最大熵原理,從投資的角度來看這就是風險最小原則。從信息論的角度來說,就是保留了最大的不確定性,也就是讓熵達到了最大。最大熵院裏指出,對一個隨機事件的概率分布進行預測的時候,我

通俗理解模型

log logs ima 最大熵 ges es2017 最大熵模型 blog image 通俗理解最大熵模型

淺談模型中的特徵

最近在看到自然語言處理中的條件隨機場模型時,發現了裡面涉及到了最大熵模型,這才知道最大熵模型自己還是一知半解,於是在知乎上查閱了很多資料,發現特別受用,飲水思源,我將自己整理的一些資料寫下來供大家參考 僅僅對輸入抽取特徵。即特徵函式為 對輸入和輸出同時抽取特徵。即特徵函式為

斯坦福大學-自然語言處理入門 筆記 第十一課 模型與判別模型(2)

一、最大熵模型 1、模型介紹 基本思想:我們希望資料是均勻分佈的,除非我們有其他的限制條件讓給我們相信資料不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。 熵:表示分佈的不

斯坦福大學-自然語言處理入門 筆記 第八課 模型與判別模型

一、生成模型與判別模型 1、引言 到目前為止,我們使用的是生成模型(generative model),但是在實際使用中我們也在大量使用判別模型(discriminative model),主要是因為它有如下的優點: 準確性很高 更容易包含很多和

【統計學習方法-李航-筆記總結】六、邏輯斯諦迴歸和模型

本文是李航老師《統計學習方法》第六章的筆記,歡迎大佬巨佬們交流。 主要參考部落格: http://www.cnblogs.com/YongSun/p/4767100.html https://blog.csdn.net/tina_ttl/article/details/53519391

統計學習---邏輯斯蒂迴歸與模型

邏輯斯蒂迴歸和最大熵模型 邏輯斯蒂分佈 邏輯斯蒂迴歸模型 將權值向量和輸入向量加以擴充後的邏輯斯蒂模型為 模型引數估計 極大似然估計法 最大熵模型 最大熵原理:在所有可能的概率模型中,熵最大的模型是最好的模型。通常用約

leetcde 014 公共字首 python 實現

編寫一個函式來查詢字串陣列中的最長公共字首。 如果不存在公共字首,返回空字串 “”。 示例 1: 輸入: [“flower”,”flow”,”flight”] 輸出: “fl” 示例 2: 輸入: [“dog”,”racecar”,”car”] 輸

【機器學習】模型原理小結

最大熵模型(maximum entropy model, MaxEnt)也是很典型的分類演算法了,它和邏輯迴歸類似,都是屬於對數線性分類模型。在損失函式優化的過程中,使用了和支援向量機類似的凸優化技術。而對熵的使用,讓我們想起了決策樹演算法中的ID3和C4.5演算法。理解了最

模型(MaxEnt)解析

給出了最大熵模型的一般形式(其中的f為特徵函式,後面我們還會講到):  而文獻【5】中我們從另外一種不同的角度也得出了多元邏輯迴歸的一般形式: 可見,儘管採用的方法不同,二者最終是殊途同歸、萬法歸宗了。 所以我們說無論是多元邏輯迴歸,還是最大熵模型,又或者是Sof

一些對模型的理解

一、最大熵原理 概念:對於隨機變數X,其概率分佈為P(X),一般在約束條件下會有無數P(X)存在。最大熵原理就是在所有符合約束條件的P(X)中,熵最大的模型即為最優模型。 二、最大熵模型 最大熵模型,就是基於最大熵原理的分類模型。李航《統計學習方法》中對最大熵模型的描述

模型中的數學推導

     最大熵模型中的數學推導   0 引言     寫完SVM之後,一直想繼續寫機器學習的系列,無奈一直時間不穩定且對各個模型演算法的理

NLP --- 模型的解法(GIS演算法、IIS演算法)

上一節中我們詳細的介紹了什麼是最大熵模型,也推匯出了最大熵模型的目標公式,但是沒給出如何求解的問題,本節將詳細講解GIS演算法求解最大熵模型的過程,這裡先把上一節的推匯出的公式拿過來: 上面第一個式子是說我們要尋找的P要滿足k個約束條件,下式說是在滿足的約束的情況下,找到是熵值最大的那

NLP --- 模型的引入

前幾節我們詳細的闡述了什麼是HMM,同時給出了HMM的三個問題,也給出瞭解決這三個問題的方法最後給出了HMM的簡單的應用。其中為了解決第三個問題我們引入了EM演算法,這個演算法有點麻煩,但是不難理解,而解決第一個和第二個問題時使用的演算法基本上都是基於動態規劃的,這裡需要大家首先對動態規劃演算法

《統計學習方法(李航)》邏輯斯蒂迴歸與模型學習筆記

作者:jliang https://blog.csdn.net/jliang3   1.重點歸納 1)線性迴歸 (1)是確定兩種或以上變數間相互依賴的定量關係的一種統計分析方法。 (2)模型:y=wx+b (3)誤差函式: (4)常見求解方法 最小

深入解析模型

不要把雞蛋放到一個籃子裡 理解了這句話其實已經理解了最大熵模型的精髓了,不過這句話還是有點含蓄,下面講一下我的理解,歡迎交流。 “不要把雞蛋放到一個籃子裡”,這樣可以降低風險。 為啥不放到一個籃子裡就可以降低風險啊?如果有人告訴你就算世界毀滅這個籃子也不會破也不會摔倒地上,那麼就永遠

十、模型與EM演算法

一、最大熵模型 lnx<=x−1lnx<=x−1 證明:f(x)=x−1−lnx,x>0f(x)=x−1−lnx,x>0,求導是凸函式,在x=1處取得極值 1、熵 熵是資訊的度量,與資訊量成反比。