主要解決具有隱變數的混合模型的引數估計
在高斯模型中,每個聚類都服從某個概率分布,我們要做的就是利用em演算法確定這些分布的引數,對高斯模型來說就是計算均值和方差,對多項式模型那就是概率個人的理解就是用含有隱變數的含參表示式不斷擬合,最終能收斂並擬合出不含隱變數的含參表示式
假如有人告訴你,那乙個點屬於哪乙個模型,你當然能夠估計出這些分布的均值和方差。但實際上這些都是未知的,相反假如你已經知道均值和方差,那麼你也能推斷出哪一點屬於哪乙個模型,但是均值和方差同樣也是未知的,所以你需要用均值和方差來判斷從屬關係或是用從屬關係估計出均值和方差,這就是em演算法的基本原理。em演算法開始執行時,各個高斯模型會被隨機分配到n維空間中,就像k-means演算法,均值和方差都是隨機的,然後根據當前的均值和方差,判斷某點x有多大可能性來自藍色或者黃色模型,然後將這個點分配到藍色和黃色模型,但不同於k-means演算法的是這個分配不是硬性的,k-means要麼將這個點分給藍色要麼分給黃色。em演算法將這個點屬於藍色或黃色的概率計算出來,但它不會把概率置0或者1,這個概率屬於(0,1),這就是叫它柔性聚類法的原因,它不會直接把某點分配給某個模型,而是告訴我們這個點屬於某個模型的概率,然後利用概率來重新估計各個模型的均值和方差,進而改進之前的概率,這就是em像k-means的原因,但概率又使它們區別開來,就像k-means演算法那樣,我們講上面的過程迭代直至收斂。
模型的em訓練過程
直觀的來講是這樣:我們通過觀察取樣的概率值和模型概率值的接近程度,來判斷乙個模型是否擬合良好。然後我們通過調整模型以讓新模型更適配取樣的概率值。反覆迭代這個過程很多次,直到兩個概率值非常接近時,我們停止更新並完成模型訓練。現在我們要將這個過程用演算法來實現,所使用的方法是模型生成的資料來決定似然值,即通過模型來計算資料的期望值。通過更新引數μ和σ來讓期望值最大化。這個過程可以不斷迭代直到兩次迭代中生成的引數變化非常小為止。該過程和k-means的演算法訓練過程很相似(k-means不斷更新類中心來讓結果最大化),只不過在這裡的高斯模型中,我們需要同時更新兩個引數:分布的均值和標準差.
極大似然估計(mle)
事情已經發生了,當未知引數等於多少時,能讓這個事情發生的概率最大,「模型已定,引數未知」1.當出現多餘引數,資料截尾或缺失時,mle不適合 —em
2.概率模型有時即含有觀測變數,又含有隱變數或潛在變數,如果概率模型的變數都是觀測變數,那麼給定的資料,可以直接用極大似然估計法估計模型引數。但是當模型含有隱變數時,就不能簡單的使用這些估計方法。
em兩步:
1.e: 求期望
2.m: 求最大值
em演算法就是含有隱變數的概率模型引數的極大似然估計法看乙個極大似然估計的例題
一般我們面臨的問題是:對於乙個函式f(x; θ),裡面x是已知的,但 θ未知,於是使用極大似然估計求 θ,但如果x是由(x, z)兩部分組成,其中x已知z未知,也就是說樣本中含有隱變數z,對於這種情況極大似然估計就沒轍了,而為了解決這樣的情況而發明的演算法之一就是em演算法。
只能得到區域性極值點,不能得到全域性極值點。
比如:給出男女身高樣本,求男女身高分布。如果男性身高均值是1.80,女性1.65,那用em演算法求得的結果還是很不錯的,但如果男性1cm,女性10m,那結果一定會和實際差太遠。
這兩個都是能處理含有隱變數情況的樣本,因為在給定樣本的情況下k-means是可以將未標記的樣本分成若干個簇的,但k-means無法給出某個樣本屬於該簇的後驗概率,而em演算法可以給出後驗概率。
EM演算法理解
一 概述 概率模型有時既含有觀測變數,又含有隱變數,如果概率模型的變數都是觀測變數,那麼給定資料,可以直接利用極大似然估計法或者貝葉斯估計法估計模型引數。但是,當模型同時又含有隱變數時,就不能簡單地使用這些方法。em演算法適用於帶有隱變數的概率模型的引數估計,利用極大似然估計法逐步迭代求解。二 je...
FPGrowth演算法理論
背景 頻繁項集挖掘演算法用於挖掘 經常一起出現的item集合 稱為頻繁項集 通過挖掘出這些頻繁項集,當在乙個事務中出現頻繁項集的其中乙個item,則可以把該頻繁項集的其他item作為推薦 比如經典的購物籃分析中啤酒 尿布故事,啤酒和尿布經常在使用者的購物籃中一起出現,通過挖掘出啤酒 尿布這個啤酒項集...
演算法理論 PLA
perceptron learning algrithm 二值分類問題,資料線性可分 找到一條直線wtx 0,一邊全為 1,另一邊全為 1。找到了這條線 即,向量w 就得到了分類器。每次選取分類出錯的樣本點,迭代執行 wt 1 t wt t yn t xn t t代表第t次迭代 我的問題 這裡是不是...