logo

ML | Cerību maksimizēšanas algoritms

Reālajā pasaulē mašīnmācība lietojumprogrammām, parasti ir daudzas atbilstošas ​​funkcijas, taču var būt novērojama tikai daļa no tām. Strādājot ar mainīgajiem, kas dažreiz ir novērojami un dažreiz nē, patiešām ir iespējams izmantot gadījumus, kad šis mainīgais ir redzams vai novērots, lai uzzinātu un veiktu prognozes gadījumiem, kad tas nav novērojams. Šo pieeju bieži dēvē par trūkstošo datu apstrādi. Izmantojot pieejamos gadījumus, kad mainīgais ir novērojams, mašīnmācīšanās algoritmi var apgūt modeļus un attiecības no novērotajiem datiem. Pēc tam šos apgūtos modeļus var izmantot, lai prognozētu mainīgā lieluma vērtības gadījumos, kad tā trūkst vai nav novērojama.

Gaidījumu maksimizēšanas algoritmu var izmantot, lai risinātu situācijas, kurās mainīgie ir daļēji novērojami. Ja daži mainīgie ir novērojami, mēs varam izmantot šos gadījumus, lai uzzinātu un novērtētu to vērtības. Tad mēs varam paredzēt šo mainīgo vērtības gadījumos, kad tas nav novērojams.



EM algoritms tika ierosināts un nosaukts pamatrakstā, ko 1977. gadā publicēja Arturs Dempsters, Nans Lairds un Donalds Rubins. Viņu darbs formalizēja algoritmu un parādīja tā lietderību statistiskajā modelēšanā un novērtēšanā.

EM algoritms ir piemērojams latentiem mainīgajiem, kas ir mainīgie, kas nav tieši novērojami, bet ir izsecināti no citu novēroto mainīgo vērtībām. Izmantojot zināmo vispārējo varbūtības sadalījuma formu, kas regulē šos latentos mainīgos, EM algoritms var paredzēt to vērtības.
EM algoritms kalpo par pamatu daudziem nepārraudzītiem klasterizācijas algoritmiem mašīnmācības jomā. Tas nodrošina sistēmu, lai atrastu statistiskā modeļa lokālos maksimālās iespējamības parametrus un izsecinātu latentos mainīgos gadījumos, kad trūkst datu vai tie ir nepilnīgi.

Expectation-Maximization (EM) algoritms

Expectation-Maximization (EM) algoritms ir iteratīva optimizācijas metode, kas apvieno dažādas bez uzraudzības mašīnmācība algoritmus, lai atrastu parametru maksimālo iespējamību vai maksimālos aizmugures aplēses statistikas modeļos, kas ietver nenovērotus latentus mainīgos. EM algoritmu parasti izmanto latentiem mainīgo modeļiem, un tas var apstrādāt trūkstošos datus. Tas sastāv no aplēses soļa (E-solis) un maksimizācijas posma (M-solis), veidojot iteratīvu procesu, lai uzlabotu modeļa piemērotību.



  • E solī algoritms aprēķina latentos mainīgos, t.i., loga varbūtības prognozi, izmantojot pašreizējos parametru aprēķinus.
  • M solī algoritms nosaka parametrus, kas maksimāli palielina sagaidāmo E solī iegūto log-iespējamību, un atbilstošie modeļa parametri tiek atjaunināti, pamatojoties uz aplēstiem latentiem mainīgajiem.
Cerības-maksimizācija EM algoritmā-Geeksforgeeks

Cerības-maksimizācija EM algoritmā

Iteratīvi atkārtojot šīs darbības, EM algoritms cenšas maksimāli palielināt novēroto datu iespējamību. To parasti izmanto neuzraugotiem mācību uzdevumiem, piemēram, klasteru veidošanai, kur tiek secināti latenti mainīgie, un to var izmantot dažādās jomās, tostarp mašīnmācībā, datorredzēšanā un dabiskās valodas apstrādē.

Galvenie termini gaidu maksimizēšanas (EM) algoritmā

Daži no visbiežāk izmantotajiem galvenajiem terminiem gaidu maksimizēšanas (EM) algoritmā ir šādi:



    Latentie mainīgie: latentie mainīgie ir nenovēroti mainīgie statistikas modeļos, kurus var secināt tikai netieši, izmantojot to ietekmi uz novērojamajiem mainīgajiem. Tos nevar tieši izmērīt, bet tos var noteikt pēc to ietekmes uz novērojamajiem mainīgajiem. Varbūtība: tā ir doto datu novērošanas varbūtība, ņemot vērā modeļa parametrus. EM algoritmā mērķis ir atrast parametrus, kas palielina iespējamību. Log-Likelihood: tas ir iespējamības funkcijas logaritms, kas mēra atbilstību starp novērotajiem datiem un modeli. EM algoritms cenšas maksimāli palielināt log-iespējamību. Maksimālās varbūtības novērtējums (MLE) : MLE ir metode, lai novērtētu statistiskā modeļa parametrus, atrodot parametru vērtības, kas maksimāli palielina iespējamības funkciju, kas mēra, cik labi modelis izskaidro novērotos datus. Aizmugurējā varbūtība: Bajesa secinājuma kontekstā EM algoritmu var paplašināt, lai novērtētu maksimālos a posteriori (MAP) aprēķinus, kur parametru posterior varbūtība tiek aprēķināta, pamatojoties uz iepriekšējo sadalījumu un iespējamības funkciju. Gaidīšanas (E) solis: EM algoritma E-solis aprēķina latento mainīgo paredzamo vērtību vai posterioro varbūtību, ņemot vērā novērotos datus un pašreizējos parametru aplēses. Tas ietver katra latentā mainīgā varbūtības aprēķināšanu katram datu punktam. Maksimizācijas (M) solis: EM algoritma M-solis atjaunina parametru aplēses, maksimāli palielinot paredzamo log-iespējamību, kas iegūta no E-soļa. Tas ietver parametru vērtību atrašanu, kas optimizē varbūtības funkciju, parasti izmantojot skaitliskās optimizācijas metodes. Konverģence: Konverģence attiecas uz stāvokli, kad EM algoritms ir sasniedzis stabilu risinājumu. Parasti to nosaka, pārbaudot, vai izmaiņas loga varbūtībā vai parametru aplēsēs ir zemākas par iepriekš noteiktu slieksni.

Kā darbojas cerību maksimizēšanas (EM) algoritms:

Expectation-Maximization algoritma būtība ir izmantot pieejamos novērotos datu kopas datus, lai novērtētu trūkstošos datus, un pēc tam izmantot šos datus, lai atjauninātu parametru vērtības. Ļaujiet mums sīkāk izprast EM algoritmu.

EM algoritma plūsmas diagramma-Geeksforgeeks

EM algoritma blokshēma

    Inicializācija:
    • Sākotnēji tiek ņemta vērā parametru sākotnējo vērtību kopa. Nepilnīgu novēroto datu kopa tiek dota sistēmai ar pieņēmumu, ka novērotie dati nāk no konkrēta modeļa.
    E-solis (gaidīšanas solis): šajā darbībā mēs izmantojam novērotos datus, lai novērtētu vai uzminētu trūkstošo vai nepilnīgo datu vērtības. To galvenokārt izmanto, lai atjauninātu mainīgos.
    • Aprēķiniet katra latentā mainīgā posterioro varbūtību vai atbildību, ņemot vērā novērotos datus un pašreizējos parametru aplēses.
    • Novērtējiet trūkstošās vai nepilnīgās datu vērtības, izmantojot pašreizējos parametru aprēķinus.
    • Aprēķiniet novēroto datu logaritmisko varbūtību, pamatojoties uz pašreizējiem parametru aprēķiniem un aplēstajiem trūkstošajiem datiem.
    M-solis (maksimizācijas solis): šajā solī mēs izmantojam visus datus, kas ģenerēti iepriekšējā Expectation solī, lai atjauninātu parametru vērtības. To pamatā izmanto hipotēzes atjaunināšanai.
    • Atjauniniet modeļa parametrus, maksimāli palielinot paredzamo pilnīgo datu žurnāla iespējamību, kas iegūta no E-soļa.
    • Tas parasti ietver optimizācijas problēmu risināšanu, lai atrastu parametru vērtības, kas palielina žurnāla varbūtību.
    • Konkrētā izmantotā optimizācijas metode ir atkarīga no problēmas veida un izmantotā modeļa.
    Konverģence: šajā darbībā tiek pārbaudīts, vai vērtības konverģē vai nē, ja jā, tad pārtrauciet, pretējā gadījumā atkārtojiet solis-2 un solis-3 i., Expectation – solis un Maksimizācija – solis, līdz notiek konverģence.
    • Pārbaudiet konverģenci, salīdzinot loga varbūtības izmaiņas vai parametru vērtības starp iterācijām.
    • Ja izmaiņas ir zemākas par iepriekš noteiktu slieksni, apstājieties un uzskatiet, ka algoritms ir konverģēts.
    • Pretējā gadījumā atgriezieties pie E-soļa un atkārtojiet procesu, līdz tiek sasniegta konverģence.

Cerību maksimizēšanas algoritms Soli pa solim ieviešana

Importējiet nepieciešamās bibliotēkas

Python3


kurš ir urfi javed



import> numpy as np> import> matplotlib.pyplot as plt> from> scipy.stats>import> norm>

>

>

Ģenerējiet datu kopu ar diviem Gausa komponentiem

Python3




# Generate a dataset with two Gaussian components> mu1, sigma1>=> 2>,>1> mu2, sigma2>=> ->1>,>0.8> X1>=> np.random.normal(mu1, sigma1, size>=>200>)> X2>=> np.random.normal(mu2, sigma2, size>=>600>)> X>=> np.concatenate([X1, X2])> # Plot the density estimation using seaborn> sns.kdeplot(X)> plt.xlabel(>'X'>)> plt.ylabel(>'Density'>)> plt.title(>'Density Estimation of X'>)> plt.show()>

>

>

Izvade :

Blīvums Plot-Geeksforgeeks

Blīvuma grafiks

f-string python

Inicializējiet parametrus

Python3

java kolekcijas ietvars




# Initialize parameters> mu1_hat, sigma1_hat>=> np.mean(X1), np.std(X1)> mu2_hat, sigma2_hat>=> np.mean(X2), np.std(X2)> pi1_hat, pi2_hat>=> len>(X1)>/> len>(X),>len>(X2)>/> len>(X)>

>

>

Izpildiet EM algoritmu

  • Atkārtojas noteiktajam laikmetu skaitam (šajā gadījumā 20).
  • Katrā laikmetā E-solis aprēķina pienākumus (gamma vērtības), novērtējot katra komponenta Gausa varbūtības blīvumus un sverot tos ar atbilstošajām proporcijām.
  • M-solis atjaunina parametrus, aprēķinot katra komponenta svērto vidējo un standarta novirzi

Python3




# Perform EM algorithm for 20 epochs> num_epochs>=> 20> log_likelihoods>=> []> for> epoch>in> range>(num_epochs):> ># E-step: Compute responsibilities> >gamma1>=> pi1_hat>*> norm.pdf(X, mu1_hat, sigma1_hat)> >gamma2>=> pi2_hat>*> norm.pdf(X, mu2_hat, sigma2_hat)> >total>=> gamma1>+> gamma2> >gamma1>/>=> total> >gamma2>/>=> total> > ># M-step: Update parameters> >mu1_hat>=> np.>sum>(gamma1>*> X)>/> np.>sum>(gamma1)> >mu2_hat>=> np.>sum>(gamma2>*> X)>/> np.>sum>(gamma2)> >sigma1_hat>=> np.sqrt(np.>sum>(gamma1>*> (X>-> mu1_hat)>*>*>2>)>/> np.>sum>(gamma1))> >sigma2_hat>=> np.sqrt(np.>sum>(gamma2>*> (X>-> mu2_hat)>*>*>2>)>/> np.>sum>(gamma2))> >pi1_hat>=> np.mean(gamma1)> >pi2_hat>=> np.mean(gamma2)> > ># Compute log-likelihood> >log_likelihood>=> np.>sum>(np.log(pi1_hat>*> norm.pdf(X, mu1_hat, sigma1_hat)> >+> pi2_hat>*> norm.pdf(X, mu2_hat, sigma2_hat)))> >log_likelihoods.append(log_likelihood)> # Plot log-likelihood values over epochs> plt.plot(>range>(>1>, num_epochs>+>1>), log_likelihoods)> plt.xlabel(>'Epoch'>)> plt.ylabel(>'Log-Likelihood'>)> plt.title(>'Log-Likelihood vs. Epoch'>)> plt.show()>

>

>

Izvade :

Epoch vs Log-likelihood-Geeksforgeeks

Laikmets pret žurnāla varbūtību

ascii no a in Java

Uzzīmējiet galīgo aprēķināto blīvumu

Python3




# Plot the final estimated density> X_sorted>=> np.sort(X)> density_estimation>=> pi1_hat>*>norm.pdf(X_sorted,> >mu1_hat,> >sigma1_hat)>+> pi2_hat>*> norm.pdf(X_sorted,> >mu2_hat,> >sigma2_hat)> plt.plot(X_sorted, gaussian_kde(X_sorted)(X_sorted), color>=>'green'>, linewidth>=>2>)> plt.plot(X_sorted, density_estimation, color>=>'red'>, linewidth>=>2>)> plt.xlabel(>'X'>)> plt.ylabel(>'Density'>)> plt.title(>'Density Estimation of X'>)> plt.legend([>'Kernel Density Estimation'>,>'Mixture Density'>])> plt.show()>

>

>

Izvade :

Paredzamais blīvums-Geeksforgeeks

Paredzamais blīvums

Lietojumprogrammas EM algoritms

  • To var izmantot, lai aizpildītu trūkstošos datus paraugā.
  • To var izmantot kā pamatu klasteru nepārraudzītai apguvei.
  • To var izmantot, lai novērtētu slēptā Markova modeļa (HMM) parametrus.
  • To var izmantot latento mainīgo vērtību atklāšanai.

EM algoritma priekšrocības

  • Vienmēr tiek garantēts, ka iespējamība palielināsies ar katru iterāciju.
  • E-solis un M-solis bieži vien ir diezgan vienkāršs daudzu problēmu risināšanai ieviešanas ziņā.
  • M-pakāpju risinājumi bieži pastāv slēgtā formā.

EM algoritma trūkumi

  • Tam ir lēna konverģence.
  • Tas veic konverģenci tikai uz vietējo optimālo.
  • Tam nepieciešamas gan varbūtības, gan uz priekšu, gan atpakaļ (skaitliskajai optimizācijai nepieciešama tikai uz priekšu vērsta varbūtība).