當前位置:首頁 » 操作系統 » 貝葉斯與em演算法

貝葉斯與em演算法

發布時間: 2022-08-20 07:30:22

A. 基於EM演算法的高斯混合密度估計與k均值演算法之間的關系。

建議看一下 機器學習中的貝葉斯學習部分中的EM演算法。EM演算法可應用於k均值問題,目的是搜索一個極大似然的假設不斷地再估計隱藏層變數的期望值,然後用這些隱藏層變數的期望值重新計算極大似然假設。EM演算法可用來推到k均值演算法

B. 情感分析器的研究方法

監督學習
目前,基於監督學習的情感分析仍然是主流,除了(Li et al.,2009)基於非負矩陣三分解(Non-negative Matrix Tri-factorization),(Abbasi et al.,2008)基於遺傳演算法(Genetic Algorithm)的情感分析之外,使用的最多的監督學習演算法是樸素貝葉斯,k最近鄰(k-Nearest Neighbor,k-NN),最大熵和支持向量機的。而對於演算法的改進主要在對文本的預處理階段。
基於規則/無監督學習
和基於監督學習的情感分析相比,基於規則和無監督學習方面的研究不是很多。除了(Turney,2002)之外,(朱嫣嵐 et al.,2002)利用HowNet對中文詞語語義的進行了情感傾向計算。(婁德成 et al.,2006)利用句法結構和依存關系對中文句子語義進行了情感分析,(Hiroshi et al.,2004)通過改造一個基於規則的機器翻譯器實現日文短語級情感分析,(Zagibalov et al.,2008)在(Turney,2002)的SO-PMI演算法的基礎上通過對於中文文本特徵的深入分析以及引入迭代機制從而在很大程度上提高了無監督學習情感分析的准確率。
跨領域情感分析
跨領域情感分析在情感分析中是一個新興的領域,目前在這方面的研究不是很多,主要原因是目前的研究還沒有很好的解決如何尋找兩個領域之間的一種映射關系,或者說如何尋找兩個領域之間特徵權值之間的平衡關系。對於跨領域情感分析的研究開始於(Blitzer et al.,2007)將結構對應學習(Structural Correspondence Learning,SCL)引入跨領域情感分析,SCL是一種應用范圍很廣的跨領域文本分析演算法,SCL的目的是將訓練集上的特徵盡量對應到測試集中。(Tan et al.,2009)將SCL引入了中文跨領域情感分析中。(Tan2 et al.,2009)提出將樸素貝葉斯和EM演算法的一種半監督學習方法應用到了跨領域的情感分析中。(Wu et al.,2009)將基於EM的思想將圖排序(Graph Ranking)演算法應用到跨領域的情感分析中,圖排序演算法可以認為是一種迭代的k-NN

C. 機器學習「判定模型」和「生成模型『有什麼區別

最基本的區別就是建模對象不同, 但目的都是求出P(Y|X)

判別模型Discriminative Model:

直接對P(Y|X)進行建模, 判別模型不考慮如何生成 X 和 Y 的聯合事件, 比如 SVM 只考慮把點分開而已, 魯棒性比較強, 但需要更多的訓練數據.

生成模型 Generative Model:

利用貝葉斯公式, 先對P(X|Y)進行建模, 然後利用訓練集中的 P(Y) 求出聯合**概率分布 P(X,Y)**, 最後除以X的概率分布P(X)得出我們的目標(P(Y|X)). 最常見的例子樸素貝葉斯. 生成模型需要做出更多的假設, 因此適用於數據較少的情況下, 但魯棒性不強, 因為假設錯了就效果很差了.

給一個栗子, 外星人來地球拿了一個數據集包含了地球人的身體特徵, 標簽有2類:男和女. 如果訓練數據集只有1%是數據是男性, 而99%是女性. 那麼外星人科學家就有可能認為給定隨機一個人類, 該人類是女性的P(y=female)概率是99%, 按照這個假設去做生成模型就會很不給力, 但判別模型就沒有這個問題.

——Matthew_zeng

我們從幾句話進入這兩個概念:
1、機器學習分為有監督的機器學習和無監督的機器學習;
2、有監督的機器學習就是已知訓練集數據的類別情況來訓練分類器,無監督的機器學習就是不知道訓練集的類別情況來訓練分類器;
3、所以說,有監督的機器學習可以抽象為一個分類task,而無監督的基本完成的是聚類;
4、有監督的機器學習中,我們可以概述為通過很多有標記的數據,訓練出一個模型,然後利用這個,對輸入的X進行預測輸出的Y。這個模型一般有兩種:

決策函數:Y=f(X)
條件概率分布:P(Y|X)

5、根據通過學習數據來獲取這兩種模型的方法,我們可以分為判別方法和生成方法;

6、概念正式介紹

判別方法:由數據直接學習決策函數Y=f(X)或條件概率分布P(Y|X)作為預測模型,即判別模型。判別方法關心的是對於給定的輸入X,應該預測什麼樣的輸出Y。

數據直接學習決策函數Y=f(X)或條件概率分布P(Y|X)得到的預測模型,就是判別模型;

生成方法:由數據學習聯合概率分布P(X,Y), 然後由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作為預測的模型。該方法表示了給定輸入X與產生輸出Y的生成關系

P(Y|X)作為的預測的模型就是生成模型;

兩個模型的範例

生成模型:樸素貝葉斯、隱馬爾可夫(em演算法)
判別模型:k近鄰法、感知機、決策樹、邏輯回歸、線性回歸、最大熵模型、支持向量機(SVM)、提升方法、條件隨機場(CRF)

對比

1、生成模型可以還原出聯合概率分布(還原數據本身相似度),而判別方法不能;
2、生成方法的學習收斂速度更快,當樣本容量增加的時候,學到的模型可以更快的收斂於真實模型;
3、當存在隱變數時,仍可以利用生成方法學習,此時判別方法不能用;
4、判別學習不能反映訓練數據本身的特性,但它尋找不同類別之間的最優分類面,反映的是異類數據之間的差異,直接面對預測,往往學習的准確率更高,由於直接學習P(Y|X)或Y=f(X),從而可以簡化學習;
5、簡單的說,生成模型是從大量的數據中找規律,屬於統計學習;而判別模型只關心不同類型的數據的差別,利用差別來分類。

    D. 全概率公式和貝葉斯公式及其含義

    全概率公式P(A)=P(A|B1)P(B1)+P(A|B2)P(B2)+...+P(A|Bn)P(Bn);貝葉斯公式P(A∩B)=P(A)*P(B|A)=P(B)*P(A|B)。

    貝葉斯的統計學中有一個基本的工具叫貝葉斯公式、也稱為貝葉斯法則,盡管它是一個數學公式,但其原理毋需數字也可明了。如果你看到一個人總是做一些好事,則那個人多半會是一個好人。
    這就是說,當你不能准確知悉一個事物的本質時,你可以依靠與事物特定本質相關的事件出現的多少去判斷其本質屬性的概率。用數學語言表達就是:支持某項屬性的事件發生得愈多,則該屬性成立的可能性就愈大。

    E. mahout topic模型怎麼使用

    利用sqoop將數據從MySQL導入到HDFS中,利用mahout的LDA的cvb實現對輸入數據進行聚類,並將結果更新到資料庫中。數據流向圖如下

    mahout演算法分析

    輸入數據格式
    為<IntegerWritable, VectorWritable>的matrix矩陣,key為待聚類文本的數字編號,value為待聚類文本的單詞向量Vector, Vector的index為單詞在字典中的編號, value為TFIDF值。

    演算法相關參數詳解(不包含hadoop運行參數)
    項目中所有參數設置均與mahout-0.9目錄下的examples/bin/cluster-reuters.sh的147-172行設置一樣,即
    $SCOUT cvb -i ${WORK_DIR}/${ROWID_MATRIX_DIR}/matrix -o ${WORK_DIR}/${LDA_DIR} -k 20 -ow -x 20 -dict ${WORK_DIR}/${DICTIONARY_FILES} -dt ${WORK_DIR}/${LDA_TOPICS_DIR} -mt ${WORK_DIR}/${LDA_MODEL_DIR}

    input -- 輸入數據的hdfs路徑,這里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-out-matrix-debug/matrix
    dt -- 文檔主題輸出路徑,保存了每個文檔的相應topic的概率,這里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-lda-topics
    mt -- model的路徑,這里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-lda-debug
    k -- number of topics to learn,這里設置成20
    x -- 模型迭代次數,也就是需要多少次迭代來生成最後的Model,默認值20
    seed -- Random seed,生成初始readModel時的種子,默認值System.nanoTime() % 10000
    dict -- 字典路徑,這里是/home/hadoop-user/scout_workspace/scout/dataset/reuters-out-seqdir-sparse-lda/dictionary.file-*
    a -- Smoothing for document/topic distribution, document/topic分布的平滑系數,默認為1.0E-4
    e -- Smoothing for topic/term distribution, topic/term分布的平滑系數,默認為1.0E-4
    關於a和e,根據描述,a和e的合適取值為k/50(k為topic數量),但是這個網頁還保留著mahout ldatopics的命令介紹,而mahout 0.8,0.9均沒有該命令,推測應該是比較陳舊的內容,因此還是根據cluster-reuters.sh中的設置來,也就是採取默認值。
    mipd -- 這個參數非常重要,對於每個文檔程序是先用RandomSeed來生成一個初始的readModel然後進行mipd次迭代,算出最終的model進行更新,這里選默認值10次

    LDA演算法程序分析

    演算法的大致流程如下

    1.解析參數與Configuration設置

    2.讀取Model(第一次運行時沒有這個過程)
    如果hfds上面已經有部分model,那麼程序將讀取最後一個model,並以這個model作為初始readModel來繼續進行演算法迭代,也就是說有類似於斷電-重啟的機制

    3.運行演算法迭代(Mapper過程)生成LDA模型
    這個過程是最為復雜的階段,許多地方我也不是很明白,我將盡最大努力進行解釋
    首先分析Mapper,即CachingCVB0Mapper,顧名思義就是能夠緩存的Mapper,表現在其readModel的選取上面,如果目錄裡面不存在任何model則用RandomSeed初始化一個readModel,否則讀取最近的一個model。程序將model劃分為readModel和writeModel,這兩個都是TopicModel類,並由ModelTrainer來進行調度和管理

    CachingCVB0Mapper整個過程如下圖所示(清晰大圖見附件)

    在上面這個整體框架下,mahout程序應用了CVB0 Algorithm來計算LDA模型, 在map過程中通過對向量docTopic和矩陣docTopicModel的反復迭代求解,算出每個document的docTopicModel並且在update writeModel階段將docTopicModel矩陣進行向量的相加操作,經歷完所有的map過程後得到整個corpus的docTopicModel矩陣,最終在cleanup過程中將topic的index作為key,矩陣docTopicModel作為value寫入rece。該過程涉及到的演算法如下所示

    CVB0演算法分析圖解(清晰大圖見附件)

    4.利用生成的LDA模型推導出topic的概率分布

    演算法總結
    可以看出演算法本質上面就是bayes公式和EM演算法的結合
    E過程就是首先假定一個均勻分布且歸一化的topic概率分布向量docTopics,利用該值通過貝葉斯公式算出單詞 - 主題的概率分布矩陣 docTopicModel(見CVB0演算法分析圖解中的第一步)

    M過程就是根據生成的docTopicModel進行CVB0演算法分析圖解中的2,3,4,5步重新計算得到新的docTopics

    然後反復重復 E - M 過程n次,得到收斂後的docTopics和docTopicModel,其中docTopicModel可以用於lda模型的更新,而docTopics就是我們聚類需要的topic概率分布向量

    演算法後記
    幾點問題還沒有得到解決
    1.在mahout中是按照下面的式子計算docTopicModel的
    double termTopicLikelihood =
    (topicTermRow.get(termIndex) + eta) * (topicWeight + alpha)/ (topicSum + eta * numTerms);
    疑問就是該式子比貝葉斯公式添加了幾個平滑系數項,這樣寫的理論依據在哪裡,來源於哪篇著作或者論文,平滑系數eta和alpha分別是代表什麼含義,如何選取這兩個系數。
    2.CVB0演算法分析圖解中第2步進行歸一化的理論依據,即為什麼要進行歸一化
    3.update writeModel過程中對於topicTermCounts的計算
    即為什麼要在每次map時候對p(topic | term)進行累加,還沒有完全想明白

    項目運行環境
    hadoop-1.2.1
    sqoop-1.4.4
    mahout-0.9
    關於環境的安裝部署請參考相關文章,這里不多加贅述。上面三個軟體在我本機的都是部署在/home/hadoop-user/mahout_workspace/目錄下。另外自己寫的scout項目部署在/home/hadoop-user/scout_workspace/目錄下

    項目代碼
    項目代碼已經放到Github上有興趣的同學可以下載下來看下,重點查看bin目錄下的腳本文件以及driver,export,analyzer等幾個包下的java文件

    整個項目架構分析
    該項目的初始數據保存在MySQL中, 演算法分析需要map/rece過程以及hdfs文件系統的參與, 最後將結果更新至MySQL,整個過程如圖所示

    F. 全概率公式和貝葉斯公式

    一、全概率公式

    全概率公式為概率論中的重要公式,它將對一復雜事件A的概率求解問題轉化為了在不同情況下發生的簡單事件的概率的求和問題。

    內容:如果事件B1、B2、B3…Bi構成一個完備事件組,即它們兩兩互不相容,其和為全集;並且P(Bi)大於0,則對任一事件A有

    P(A)=P(A|B1)P(B1) + P(A|B2)P(B2) + ... + P(A|Bi)P(Bi)。

    或者:p(A)=P(AB1)+P(AB2)+...+P(ABi)),其中A與Bi的關系為交)。

    二、貝葉斯公式

    貝葉斯定理由英國數學家貝葉斯 ( Thomas Bayes 1702-1761 ) 發展,用來描述兩個條件概率之間的關系,比如 P(A|B) 和 P(B|A)。按照乘法法則,可以立刻導出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可變形為:P(A|B)=P(B|A)*P(A)/P(B)。

    全概率公式和Bayes公式:

    概率論的一個重要內容是研究怎樣從一些較簡單事件概率的計算來推算較復雜事件的概率,全概率公式和Bayes公式正好起到了這樣的作用。

    對一個較復雜的事件A,如果能找到一伴隨A發生的完備事件組B1、B2```,而計算各個B的概率與條件概率P(A/Bi)相對又要容易些,這是為了計算與事件A有關的概率,可能需要使用全概率公式和Bayes公式。

    G. 基於貝葉斯估計特徵分布融合的目標分類方法是什麼

    貝葉斯法則

    機器學習的任務:在給定訓練數據D時,確定假設空間H中的最佳假設。

    最佳假設:一種方法是把它定義為在給定數據D以及H中不同假設的先驗概率的有關知識下的最可能假設。貝葉斯理論提供了一種計算假設概率的方法,基於假設的先驗概率、給定假設下觀察到不同數據的概率以及觀察到的數據本身。

    應用

    變分貝葉斯估計可以應用於完整的貝葉斯推斷(full Bayesian inference),即對後驗分布按因子展開進行近求解。在最大期望演算法(Expectation-Maximization algorithm, EM)的E步中對隱變數後驗分布的求解可以通過變分貝葉斯估計實現,形成變分貝葉斯EM(Variational Bayesian EM algorithm, VBEM)。

    H. 貝葉斯網路學習

    BN學習的目的就是要找到一個最能真實反映當前研究問題中現有的各研究對象之間相互依賴關系的BN模型,BN學習可以分為以下兩個階段:①結構學習(Structure Learn-ing),即網路拓撲結構的學習。②參數學習(Parameter Learning),即網路中每個節點變數的局部先驗條件概率分布的學習。

    比較簡單的BN學習方法是先依據專家知識確定BN的拓撲結構,然後通過給定的樣本數據學習BN的概率分布(參數)。比較復雜的BN學習方法是BN的拓撲結構和概率分布都是通過給定樣本數據學習得出,這也是現在的研究熱點。結構學習和參數學習是相互聯系的,一方面BN的結構是由聯合概率分布函數來直接決定;另一方面,節點的條件概率依賴於BN的拓撲結構。

    2.2.1 貝葉斯網路結構學習

    BN結構學習就是利用訓練樣本數據,尋找對數據和先驗知識擬合的最好的網路拓撲結構。學習分為完備數據結構學習和不完備數據結構學習兩種情況。目前,具有完備數據的 BN 結構學習方法比較成熟,而從不完備數據中學習 BN 結構比較困難,現有演算法仍存在缺陷。

    2. 2. 1. 1 具有完備數據的貝葉斯網路結構學習

    當訓練樣本完備時,常用的 BN 結構學習演算法可以分為兩種: 基於搜索記分的方法和基於統計測試的方法。

    ( 1) 基於搜索評分的結構學習演算法。基於搜索評分的結構學習演算法將結構學習視為搜索最佳網路問題。其核心思想是: 首先添加任一條邊,然後使用搜索方法添加新的邊,最後利用評分函數評分,測試新舊網路分值的大小。學習的目的就是找到評分最大的結構。這是個連續進行的過程,直到老模型的分數不再比新模型的分數低為止。評分方法有很多,如基於熵的評分、最小描述長度( LMS) 的評分以及貝葉斯評分。這類演算法有一個共同點: 為每個候選的 BN 定義一種評價網路結構與樣本集吻合程度的測度,然後,通過遺傳和進化演算法、模擬退火法或者爬山演算法搜索具有最佳測度的拓撲網路結構。

    ( 2) 基於統計測試的結構學習演算法。該學習演算法的核心思想是: 首先進行訓練樣本統計測試,尤其是測試條件獨立性; 然後,利用節點集間的條件獨立性構造 DAG( 有向無環圖) ,以盡可能地囊括這些條件獨立性,它將獨立的概念從構造結構中分離出來。

    具有代表性的統計測試的結構學習演算法有: ①Spirtes 等( 1993) 提出 SGS 演算法,是一個典型的用條件獨立性測試確定拓撲結構的演算法,該演算法從無向完全圖出發,如果相鄰結點間存在無向分隔割集,則刪除它們的邊,然後通過統計測試來確定剩餘邊的方向。②Acid 等( 1999) 提出了有向圖構造演算法 EP,證明有向圖模型無論是否為單連接結構都對分類問題的影響效果不大。③Cheng Jie 等( 2002) 年將統計測試與資訊理論結合,通過相互信息量的計算來確定節點間的條件獨立性,用相互信息量代替條件獨立測試,從而構造多連接有向圖模型。

    2. 2. 1. 2 缺失數據情況下的貝葉斯網路結構學習

    在數據不完整的情況下,BN 結構學習會比較困難,現有的研究演算法主要是基於打分的結構學習。數據不完備會導致出現以下兩方面問題: ①一些充分統計因子不存在,導致無法直接進行結構打分; ②打分函數不再具有可分解形式,因此不能進行局部搜索。圍繞這兩方面問題相繼出現了一些解決的方法,如 Friedman( 1997) 借鑒參數學習的選擇 - 期望最大演算法,提出模型的 EM 結構學習方法; Sebastian 等( 1997) 將 BC 演算法應用於結構學習; Fried-man( 1998) 引入一種使用貝葉斯打分方法學習概率模型的新方法,貝葉斯結構期望最大演算法,簡稱為 Bayesian - SEM 演算法。

    2. 2. 2 貝葉斯網路參數學習

    BN 參數學習的目標是: 給定訓練樣本和網路拓撲結構,利用先驗知識,確定 BN 模型各個節點處的條件概率。參數學習同樣可以分為完備數據和不完備數據兩種情況。數據完備時的參數學習演算法包括由 Fayyad( 1990) 提出的貝葉斯估計方法和 Spiegelhalter( 1996) 提出的最大似然估計 ( MLE) 方法; 從不完備的數據中學習概率參數的演算法主要有 Gibbs 樣本法( Heckerman,1995) 和期望-最大 ( EM) 演算法( Spiegelhalter,1990; Mallet,1991; Lauritzen,1991等) 。

    2. 2. 3 貝葉斯網路推理

    概率推理是 BN 應用的主要目的之一。BN 推理是根據某些已知給定值的節點,估計未知節點的值。即在給定一個 BN 模型的情況下,依據已知條件,利用貝葉斯概率中條件概率的計算方法,計算出所感興趣的目標節點發生的概率。在 BN 推理中主要包括以下 3 種推理方式:

    ( 1) 因果推理: 也稱自上向下的推理,目的是由原因推出結論。已知證據 ( 原因) ,根據BN 的推理計算,求出在該證據 ( 原因) 發生的情況下結果發生的概率。

    ( 2) 診斷推理: 也稱自下向上的推理,目的是由結論推出原因。是在已知結果情況下,根據 BN 推理計算,得到導致該結果發生的原因即其發生的概率。該推理常用在故障診斷、病理診斷中,目的是找到故障發生、疾病發生的原因。

    ( 3) 支持推理: 目的是對原因之間的相互影響進行分析,提供用以支持所發生現象的解釋。

    BN 推理演算法大體可以分為精確推理演算法和近似推理演算法兩大類。理論上,所有類型的 BN 都可以用精確推理演算法進行概率推理,但實際上 BN 精確推理是一個 NP-hard 問題( Cooper,1990) ,尤其當模型結構較復雜、包含大量的變數時,精確推理就變得尤為困難。而近似推理相比精確推理來說,是解決復雜網路模型的一個較好辦法,它可以大大簡化計算和推理過程。因此,現階段 BN 研究中許多情況下都採用近似演算法。

    I. matlab實現EM演算法

    1. EM演算法程序:
    http://www.mathworks.com/matlabcentral/fileexchange/3713-em-algorithm-for-clustering-emfc-m

    2. EM image segmentation:
    http://www.mathworks.com/matlabcentral/fileexchange/10956-em-image-segmentation

    3. 貝葉斯圖像分割程序:(Bayseian image segmentation)
    沒有找到合適的程序代碼 :-(

    J. em演算法是什麼

    最大期望演算法(Expectation-Maximization algorithm, EM),或Dempster-Laird-Rubin演算法,是一類通過迭代進行極大似然估計(Maximum Likelihood Estimation, MLE)的優化演算法 ,通常作為牛頓迭代法(Newton-Raphson method)的替代用於對包含隱變數(latent variable)或缺失數據(incomplete-data)的概率模型進行參數估計。
    EM演算法的標准計算框架由E步(Expectation-step)和M步(Maximization step)交替組成,演算法的收斂性可以確保迭代至少逼近局部極大值 。EM演算法是MM演算法(Minorize-Maximization algorithm)的特例之一,有多個改進版本,包括使用了貝葉斯推斷的EM演算法、EM梯度演算法、廣義EM演算法等 。
    由於迭代規則容易實現並可以靈活考慮隱變數,EM演算法被廣泛應用於處理數據的缺測值 ,以及很多機器學習(machine learning)演算法,包括高斯混合模型(Gaussian Mixture Model, GMM) 和隱馬爾可夫模型(Hidden Markov Model, HMM) 的參數估計。

    熱點內容
    雜訊的危害和控制設計腳本 發布:2025-05-17 08:22:29 瀏覽:472
    esr演算法 發布:2025-05-17 08:16:09 瀏覽:194
    安卓手機怎麼用擬我表情 發布:2025-05-17 08:10:13 瀏覽:918
    給U盤安裝kalilinux 發布:2025-05-17 08:07:26 瀏覽:249
    sql提示存儲過程 發布:2025-05-17 07:35:58 瀏覽:743
    qq里的互動訪問 發布:2025-05-17 07:26:53 瀏覽:665
    口語易賬號密碼發送到哪裡 發布:2025-05-17 07:26:52 瀏覽:62
    核桃編程幼兒 發布:2025-05-17 07:26:50 瀏覽:787
    2台伺服器集群搭建 發布:2025-05-17 07:18:57 瀏覽:185
    北方園林配置植物有哪些 發布:2025-05-17 07:18:20 瀏覽:544