Sterrekunde

Kovariansiematriks word nie bereken wanneer gaussians gepas word nie?

Kovariansiematriks word nie bereken wanneer gaussians gepas word nie?


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

ed dY Jn Vw Zd IQ cm tN fm rj zK gK TO Vq TH

Ek gebruik dus Astropy se basiese modelle.Gaussian1D model en 'n fitter = fitting.LevMarLSQfitter () om 3 Gaussiese pulse te pas met 'n bietjie toevallige geraas. Die pas is goed, maar as ek tik

fitter.fit_info, volgens dokumentasie hier, moet dit outomaties die kovariansiematriks bereken en dit by die fit_info voeg, maar dit doen dit nie, fit_info ['param_cov'] is eenvoudig Geen. Wat gaan aan?


Gaussian Mixture Model (GMM) wat EM-algoritme van voor af gebruik

Veld van masjienleer kan in drie soorte leer verdeel word: Leer onder toesig, leer sonder toesig en versterkingsleer. Terwyl leer onder toesig gebruik kan word vir klassifikasie of regressie-analise van data, word leer sonder toesig gebruik om verborge strukture in data te vind. Die datastel wat gebruik word sonder toesig, bevat geen etikette nie. Principle Component Analysis (PCA), Singular Value Decomposition (SVD), K-Means clustering, K-Medoid clustering, and Expectation-Maximization (EM) clustering is enkele van die leeralgoritmes wat gebruik word in leer sonder toesig.

EM-algoritme modelleer dat die data gegenereer word deur 'n mengsel van Gaussers. Die EM-algoritme skat die parameters van (gemiddelde en kovariansiematriks) van elke Gaussiese. Elke Gaussiër definieer 'n enkele groep data. Die grootste verskil tussen EM-algoritme en K-middele is dat lidmaatskap van 'n groep in EM-algoritme gedeeltelik is.

Gestel ons het 'n digtheidsfunksie F, sodat,

dan sou die grafiek van hierdie digtheidsfunksie en die gepaste Gaussian so lyk.

In die figuur hierbo toon dit die aangepaste Gaussies vir die gegewe data. En dit was duidelik dat dit baie swak pas. Oor die algemeen het Gaussians aantreklike eienskappe soos om slegs twee parameters te leer (μ en σ), en dit verg dus min opleidingsdata om te skat. Vir sommige gegewens pas Gaussers egter net nie. Mengsels van Gaussers is dikwels 'n beter oplossing. Hulle benodig nog relatief min parameters om te skat, en kan dus geleer word uit relatiewe klein hoeveelhede data. Dit kan redelik goed pas by werklike verspreidings van data.

Expectation-Maximization algoritme bestaan ​​uit drie stappe. Initialisering, E-stap, M-stap. Eerstens verdeel ons die datastel lukraak in K verskillende groepe en begin ons met M-stap om gewig-, gemiddelde- en kovariansiematriks te vind. Ons gebruik die waardes en pas E-stap toe. Ons hou aan om hierdie twee stappe deur te loop totdat aan 'n drempelvoorwaarde voldoen is.

Gestel ons het 'n datastel met n rye- en d-eienskappe. Laat K die aantal trosse wees. Laat x_1, x_2, ..., x_n d-dimensionele vektore wees. Dan, x_i = (x_i, 1, x_i, 2,…, x_i, d), waar elke x_i, j 'n reële getal is.

Inisialisering

Eerstens initialiseer ons 'n gewigsvektor met grootte K. Vervolgens skep ons 'n 2D-skikking wat die gemiddelde waardes met grootte k x d bevat. Waar elke ry die gemiddelde waarde vir elke Gauss bevat. Dan skep ons 'n 3D-skikking om die waardes vir kovariansiematriks met grootte k x d x d op te slaan. Waar elke dimensie 'n d x d kovariansiematriks vir elke Gaussiese voorstel. Nou ken ons data willekeurig toe aan elke Gaussies met 'n 2D-waarskynlikheidsmatriks van n x k. Waar, n, is die aantal data wat ons het. Die luislangkode vir die initialiseringsfase word hieronder getoon.

In die M-stap gebruik ons ​​die waarskynlikhede wat ons vroeër geïnisialiseer het om gewigte, gemiddelde en kovariansiematriks van elke Gaussies te vind deur die volgende vergelykings te gebruik.


Inhoud

Gaussiese funksies ontstaan ​​deur die eksponensiële funksie saam te stel met 'n konkawe kwadratiese funksie:

Die Gaussiese funksies is dus die funksies waarvan die logaritme 'n konkawe kwadratiese funksie is.

Die parameter c hou verband met die volle breedte by die helfte maksimum (FWHM) van die piek volgens

Die funksie kan dan uitgedruk word in terme van die FWHM, voorgestel deur w:

Alternatiewelik kan die parameter c geïnterpreteer word deur te sê dat die twee buigpunte van die funksie by x = b - c en x = b + c voorkom.

Die volle breedte op tiende van maksimum (FWTM) vir 'n Gaussier kan van belang wees en is

Gaussiese funksies is analities en hul limiet as x → ∞ is 0 (vir bogenoemde geval van b = 0).

Gaussiese funksies is een van die funksies wat elementêr is, maar nie elementêre antidivatiewe het nie. Die integraal van die Gaussiese funksie is die foutfunksie. Nietemin kan hul onbehoorlike integrale oor die hele werklike lyn presies geëvalueer word met behulp van die Gaussiese integraal

Hierdie Gaussers word in die meegaande figuur geteken.

Gaussiese funksies wat op nul gesentreer is, verminder die Fourier-onsekerheidsbeginsel.

Die produk van twee Gaussiese funksies is 'n Gaussiese, en die konvolusie van twee Gaussiese funksies is ook 'n Gaussiese, met variansie as die som van die oorspronklike afwykings: c 2 = c 1 2 + c 2 2 < displaystyle c ^ <2> = c_ <1> ^ <2> + c_ <2> ^ <2>>. Die produk van twee Gaussiese waarskynlikheidsdigtheidsfunksies (PDF's) is egter in die algemeen nie 'n Gaussiese PDF nie.

Om die Fourier-transformasie (eenheids-, hoekfrekwensie-konvensie) te neem van 'n Gaussiese funksie met parameters a = 1, b = 0 en c, lewer 'n ander Gaussiese funksie, met parameters c < displaystyle c>, b = 0 en 1 c < displaystyle < frac <1>>>. [2] In die besonder word die Gaussiese funksies met b = 0 en c = 1 < displaystyle c = 1> deur die Fourier-transform vasgehou (dit is eie funksies van die Fourier-transform met eiewaarde 1). 'N Fisiese besef is die diffraksiepatroon: 'n fotografiese skyfie waarvan die transmissie 'n Gaussiese variasie het, is ook 'n Gaussiese funksie.

Die feit dat die Gaussiese funksie 'n eie funksie van die deurlopende Fourier-transform is, stel ons in staat om die volgende interessante af te lei [ opheldering nodig ] identiteit van die Poisson-somingsformule:

Die integraal van 'n arbitrêre Gaussiese funksie is

waar f moet streng positief wees vir die integrale om te konvergeer.

Verband met standaard Gaussiese integrale Edit

vir sommige reële konstantes kan a, b, c & gt 0 bereken word deur dit in die vorm van 'n Gaussiese integraal te plaas. Eerstens die konstante a kan eenvoudig uit die integraal gereken word. Vervolgens word die veranderlike van integrasie verander van x tot y = x - b .

In twee dimensies, die krag waartoe e word verhoog in die Gaussiese funksie is enige negatief-definitiewe kwadratiese vorm. Gevolglik sal die vlakstelle van die Gaussies altyd ellipse wees.

'N Besondere voorbeeld van 'n tweedimensionele Gaussiese funksie is

Hier is die koëffisiënt A is die amplitude, xo, yo is die middelpunt en σx, σy is die x en y versprei van die vlek. Die figuur aan die regterkant is met behulp van A = 1, xo = 0, yo = 0, σx = σy = 1.

Die volume onder die Gaussiese funksie word gegee deur

Oor die algemeen word 'n tweedimensionele elliptiese Gaussiese funksie uitgedruk as

Met behulp van hierdie formulering kan die figuur aan die regterkant met behulp van A = 1, (xo, yo) = (0, 0), a = c = 1/2, b = 0.

Betekenis van parameters vir die algemene vergelyking

Vir die algemene vorm van die vergelyking die koëffisiënt A is die hoogte van die piek en (xo, yo) is die middel van die vlek.

dan draai ons die kloksgewys met die kloksgewys θ < displaystyle theta> (vir draai linksom draai die tekens in die b koëffisiënt). [3] Dit kan gesien word in die volgende voorbeelde:

Met behulp van die volgende Octave-kode kan u die effek van die verandering van die parameters maklik sien

Sulke funksies word dikwels gebruik in beeldverwerking en in berekeningsmodelle van die visuele stelselfunksie - sien die artikels oor skaalruimte en affine shn.

Hoër-orde Gaussiese of super-Gaussiese funksie Edit

'N Meer algemene formulering van 'n Gaussiese funksie met 'n plat en Gaussiese afval kan geneem word deur die inhoud van die eksponent te verhoog tot 'n krag, P < displaystyle P>:

Die integraal van hierdie Gaussiese funksie oor die hele n < displaystyle n> -dimensionele ruimte word as gegee

Meer algemeen word 'n verskuifde Gaussiese funksie gedefinieer as

'N Aantal velde soos sterrefotometrie, Gaussiese balkkarakterisering en emissie- / absorpsielynspektroskopie werk met steekproefnemende Gaussiese funksies en moet die hoogte-, posisie- en breedteparameters van die funksie akkuraat skat. Daar is drie onbekende parameters vir 'n 1D-Gaussiese funksie (a, b, c) en vyf vir 'n 2D-Gaussiese funksie (A x 0, y 0 σ X, σ Y) < displaystyle (Ax_ <0>, y_ <0> sigma _, sigma _)> .

Die mees algemene metode om die Gaussiese parameters te skat, is om die logaritme van die data te neem en 'n parabool aan te pas by die resulterende datastel. [6] [7] Alhoewel dit 'n eenvoudige prosedure vir die aanpassing van die kromme bied, kan die resulterende algoritme bevooroordeeld wees deur klein datawaardes te veel te weeg, wat groot foute in die profielberaming kan oplewer. 'N Mens kan hierdie probleem gedeeltelik vergoed deur die geweegde skatting van die kleinste vierkante, wat die gewig van klein waardes verminder, maar dit kan ook bevooroordeeld wees deur die stert van die Gaussies toe te laat om die pasvorm te oorheers. Om die vooroordeel te verwyder, kan 'n mens die iteratief hergeweegde minste vierkantige prosedure gebruik, waarin die gewigte by elke iterasie opgedateer word. [7] Dit is ook moontlik om nie-lineêre regressie direk op die data uit te voer, sonder om die logaritmiese datatransformasie vir meer opsies te betrek, sien die aanpassing van waarskynlikheidsverdeling.

Parameter presisie Wysig

As 'n mens eers 'n algoritme het om die Gaussiese funksieparameters te skat, is dit ook belangrik om te weet hoe presies die ramings is. Enige berekeningsalgoritme met kleinste kwadrate kan numeriese beramings verskaf vir die variansie van elke parameter (dit wil sê die variansie van die geskatte hoogte, posisie en breedte van die funksie). 'N Mens kan ook die Cramér – Rao-gebonde teorie gebruik om 'n analitiese uitdrukking vir die ondergrens van die parameterafwykings te verkry, gegewe sekere aannames oor die data. [8] [9]

  1. Die geraas in die gemete profiel is óf i.i.d. Gaussies, of die geraas word deur Poisson versprei.
  2. Die spasiëring tussen elke steekproefneming (dit wil sê die afstand tussen die pixels wat die data meet) is uniform.
  3. Die piek word 'goed gemonster', sodat minder as 10% van die oppervlakte of volume onder die piek (oppervlakte as 'n 1D Gauss, volume as 'n 2D Gauss) buite die meetgebied lê.
  4. Die breedte van die piek is baie groter as die afstand tussen die monsterlokasies (dit wil sê die detektorpixels moet minstens vyf keer kleiner wees as die Gaussiese FWHM).

en in die Poisson-ruisgeval,

waar die individuele parameterafwykings gegee word deur die diagonale elemente van die kovariansiematriks.


5 Antwoorde 5

As ons 'n Gaussiaan op 'n enkele datapunt wil aanpas met die maksimum waarskynlikheid, sal ons 'n baie stekelrige Gaussiese kry wat tot daardie punt "in duie stort". Die variansie is nul as daar net een punt is, wat in die meerderheids-Gaussiese geval lei tot 'n enkelvoudige kovariansiematriks, dit word die enkelheidsprobleem genoem.

As die variansie op nul kom, gaan die waarskynlikheid van die Gaussiese komponent (formule 9.15) tot in die oneindige en word die model oorpas. Dit kom nie voor as ons net een Gauss op 'n aantal punte pas nie, aangesien die variansie nie nul kan wees nie. Maar dit kan gebeur as ons 'n mengsel van Gaussers het, soos geïllustreer op dieselfde bladsy van PRML.

Opdateer:
Die boek stel twee metodes voor om die enkelheidsprobleem aan te spreek

1) die herstel van die gemiddelde en variansie wanneer singulariteit voorkom

2) gebruik MAP in plaas van MLE deur 'n prior toe te voeg.

Hierdie antwoord gee insig in wat gebeur wat lei tot 'n enkelvoudige kovariansiematriks tydens die aanpassing van 'n GMM aan 'n datastel, waarom dit gebeur, asook wat ons kan doen om dit te voorkom.

Daarom moet ons die beste begin om die stappe te herhaal tydens die aanpassing van 'n Gaussiese mengselmodel in 'n datastel.


0. Besluit hoeveel bronne / clusters (c) u by u data wil pas
1. Initialiseer die parameters, beteken $ mu_c $, kovariansie $ Sigma_c $ en fraction_per_class $ pi_c $ per groep c

    Bereken vir elke datapunt $ x_i $ die waarskynlikheid $ r_$ dat datapunt $ x_i $ behoort tot cluster c met:

$ r_ = frac < pi_c N ( vetteken | boldsymbol < mu_c>, boldsymbol < Sigma_c>)> < Sigma_^ K pi_k N ( vetteken, boldsymbol < Sigma_k >>)> $ waar $ N ( boldsymbol | boldsymbol < mu>, boldsymbol < Sigma>) $ beskryf die meervoudige Gaussiese met:

$ r_$ gee ons vir elke datapunt $ x_i $ die maatstaf van: $ frac$ dus as $ x_i $ baie naby aan een Gaussiese c is, sal dit 'n hoë $ r_ kry$ waarde vir hierdie gaussiese en relatief lae waardes anders.

Vir elke groep c: Bereken die totale gewig $ m_c $ (losweg die breuk van punte wat aan groep c toegeken is) en werk $ pi_c $, $ mu_c $ en $ Sigma_c $ op met $ r_$ met:

$ m_c = Sigma_i r_ic $
$ pi_c = frac$
$ boldsymbol < mu_c> = frac <1> Sigma_i r_ vet simbool $
$ boldsymbol < Sigma_c> = frac <1> Sigma_i r_( vetteken- boldsymbol < mu_c>) ^ T ( boldsymbol- boldsymbol < mu_c>) $
Let daarop dat u die opgedateerde middele in hierdie laaste formule moet gebruik.

Herhaal die E- en M-stap herhaal totdat die log-waarskynlikheidsfunksie van ons model saamtrek waar die log-waarskynlikheid bereken word met:

Dus, nou het ons die enkele stappe tydens die berekening afgelei. Ons moet oorweeg wat dit beteken dat 'n matriks enkelvoudig is. 'N Matriks is enkelvoud as dit nie omkeerbaar is nie. 'N Matriks is omkeerbaar as daar 'n matriks $ X $ is sodat $ AX = XA = I $. As dit nie gegee word nie, word gesê dat die matriks enkelvoud is. Dit wil sê 'n matriks soos:

is nie omkeerbaar nie en volg enkelvoud. Dit is ook aanneemlik dat as ons aanneem dat bogenoemde matriks matriks $ A $ is, kan daar nie 'n matriks $ X $ wees wat met hierdie matriks die identiteitsmatriks $ I $ gee nie (neem eenvoudig hierdie nulmatriks en stip dit met enige ander 2x2 matriks en u sal sien dat u altyd die zero matriks sal kry). Maar waarom is dit vir ons 'n probleem? Kyk na die formule vir die meervoudige normaal hierbo. Daar sal u $ boldsymbol < Sigma_c ^ <-1>> $ vind wat die omkeerbare van die kovariansiematriks is. Aangesien 'n enkelvoudige matriks nie omkeerbaar is nie, sal dit 'n fout tydens die berekening veroorsaak.
Noudat ons dus weet hoe 'n enkelvoudige, nie omkeerbare matriks daar uitsien nie en waarom dit vir ons belangrik is tydens die GMM-berekeninge, hoe kan ons hierdie kwessie raakloop? In die eerste plek kry ons hierdie $ boldsymbol <0> $ kovariansiematriks hierbo as die meerveranderlike Gaussiaan in een punt val tydens die iterasie tussen die E- en M-stap. Dit kan gebeur as ons byvoorbeeld 'n datastel het waarby ons 3 gaussers wil pas, maar eintlik net uit twee klasse (trosse) bestaan, sodat twee van hierdie drie gaussies losweg vang hul eie groep terwyl die laaste gaussian dit net regkry. om een ​​enkele punt waarop dit sit te vang. Ons sal hieronder sien hoe dit lyk. Maar stap vir stap: neem aan dat u 'n tweedimensionele datastel het wat bestaan ​​uit twee trosse, maar u weet dit nie en wil drie Gaussiese modelle daarby pas, dit is c = 3. U initialiseer u parameters in die E-stap en plot die gaussians bo-op jou data wat smth lyk. soos (miskien kan u die twee relatief verspreide trosse links onder en regs bo sien): Nadat u die parameter geïnisialiseer het, voer u iteratief die E, T-stappe uit. Gedurende hierdie prosedure dwaal die drie Gaussers op 'n soort en soek na hul beste plek. As u die modelparameters waarneem, dit is $ mu_c $ en $ pi_c $, sal u waarneem dat hulle saamvloei, dat dit na 'n aantal iterasies nie meer sal verander nie en daarmee die ooreenstemmende Gaussian sy plek in die ruimte gevind het. In die geval waar u 'n enkelvoudmatriks het, kom u smth voor. soos: Waar ek die derde gaussiese model met rooi omkring het. U sien dus dat hierdie Gauss op een enkele datapunt sit terwyl die twee ander die res eis. Hier moet ek oplet dat ek alreeds kovariansie-regulering gebruik het om die figuur so te kan teken, wat 'n metode is om enkelvoudmatrikse te voorkom en word hieronder beskryf.

Oké, maar nou weet ons nog nie waarom en hoe ons 'n unieke matriks teëkom nie. Daarom moet ons na die berekeninge van die $ r_ kyk$ en die $ cov $ tydens die E- en M-stappe. As u na die $ r_ kykweer $ formule:
$ r_ = frac < pi_c N ( vetteken | boldsymbol < mu_c>, boldsymbol < Sigma_c>)> < Sigma_^ K pi_k N ( vetteken, boldsymbol < Sigma_k >>)> $ jy sien dat daar die $ r_

Motivering en eenvoudige voorbeeld: Pas data aan op die Gaussiese profiel¶

Kom ons begin met 'n eenvoudige en algemene voorbeeld om data aan te pas by 'n Gaussiese piek. Soos ons sal sien, is daar 'n ingeboude GaussianModel-klas wat dit kan help, maar hier bou ons ons eie. Ons begin met 'n eenvoudige definisie van die modelfunksie:

Ons wil hierdie funksie gebruik om aan te pas by data (y (x) ) wat deur die skikkings y en x voorgestel word. Met scipy.optimize.curve_fit sou dit wees:

Dit wil sê: ons skep data, raai die modelwaardes aanvanklik aan en voer scipy.optimize.curve_fit uit met die modelfunksie, datareeks en aanvanklike raaiskote. Die resultate is die optimale waardes vir die parameters en die kovariansiematriks. Dit is eenvoudig en nuttig, maar dit mis die voordele van lmfit.

Met lmfit skep ons 'n model wat die gaussiese modelfunksie omsluit, wat outomaties die toepaslike oorblywende funksie genereer en die ooreenstemmende parametername bepaal uit die funksie-handtekening self:

Soos u kan sien, het die Model gmodel die name van die parameters en die onafhanklike veranderlikes bepaal. Standaard word die eerste argument van die funksie beskou as die onafhanklike veranderlike, gehou in onafhanklike_vars, en die res van die funksies posisionele argumente (en, in sekere gevalle, sleutelwoordargumente - sien hieronder) word gebruik vir Parametername. Dus, vir die gaussiese funksie hierbo, is die onafhanklike veranderlike x, en die parameters word amp, cen en wid genoem, en - alles direk uit die handtekening van die modelfunksie. Soos u hieronder sal sien, kan u die standaardtoewysing van onafhanklike veranderlike / argumente verander en self spesifiseer wat die onafhanklike veranderlike is en watter funksieargumente as parametername geïdentifiseer moet word.

Die parameters is nie geskep wanneer die model geskep word. Die model weet wat die parameters moet heet, maar niks oor die omvang en omvang van u data nie. U sal normaalweg hierdie parameters moet opstel en aanvanklike waardes en ander kenmerke moet toewys. Om u te help om dit te doen, het elke model 'n make_params () -metode wat parameters met die verwagte name sal genereer:

Dit skep die parameters, maar gee hulle nie outomaties aanvanklike waardes nie, aangesien dit geen idee het wat die skaal moet wees nie. U kan beginwaardes vir parameters met sleutelwoordargumente stel om make_params () te maak:

of ken dit toe (en ander parameter-eienskappe) nadat die Parameters-klas geskep is.

'N Model het verskeie metodes wat daarmee verband hou. 'N Mens kan byvoorbeeld die eval () -metode gebruik om die model te evalueer of die fit () -metode om data by hierdie model met 'n Parameter-voorwerp aan te pas. Albei hierdie metodes kan eksplisiete sleutelwoordargumente vir die parameterwaardes bevat. 'N Mens kan byvoorbeeld eval () gebruik om die voorspelde funksie te bereken:

Dit is weliswaar 'n effens langdradige manier om 'n Gaussiese funksie te bereken, aangesien jy jou gaussiese funksie direk sou kon noem. Maar noudat die model opgestel is, kan ons die fit () -metode gebruik om hierdie model by data in te pas, soos met:

Om alles bymekaar te sit, wat in die voorbeeldmap met die bronkode ingesluit is, is:

wat redelik kompak en op die punt is. Die resultaat is 'n ModelResult-voorwerp. Soos ons hieronder sal sien, het dit baie komponente, insluitend 'n fit_report () -metode, wat sal wys:

Soos die skrif toon, sal die resultaat ook init_fit hê vir die pas by die aanvanklike parameterwaardes en 'n best_fit vir die pas met die beste pasparameterwaardes. Dit kan gebruik word om die volgende plot te genereer:

wat die gegewens in blou kolle toon, die beste pas as 'n soliede rooi lyn en die aanvanklike pas as 'n swart punt.

Let daarop dat die modelaanpassing regtig uitgevoer is met:

Hierdie lyne gee 'n duidelike uitdrukking dat ons die gaussiese funksie in 'n gepaste model wil verander, en dan die data van (y (x) ) by hierdie model moet pas, begin met waardes van 5 vir amp, 5 vir cen en 1 vir wid. Daarbenewens is al die ander funksies van lmfit ingesluit: Parameters kan perke en beperkings hê en die resultaat is 'n ryk voorwerp wat hergebruik kan word om die modelpas in detail te ondersoek.


Van meerveranderlike Gaussers tot afleiding

Noudat ons die eiendomme van Gaussers behandel het, kan ons praat oor hoe huisartse werk. Laat ons eerstens onthou dat ons 'n algemene taak van regressie het, ons het 'n treinstel van (x, y) pare. Soos ek vroeër gesê het:

'N Gaussiese proses word volledig gespesifiseer deur die gemiddelde funksie μ en die kernfunksie k

Die volgende vergelyking sê net dat die waarskynlikheidsverdeling van die funksie f volgens die huisarts versprei word:

Die kernfunksie is 'n mate van ooreenkoms tussen datapunte, of beter gesê k (x₁, x₂) vertel ons hoe naby y₁ en y₂ is. In wese spesifiseer ons die vorige verspreiding oor 'n oneindige aantal funksies deur die gemiddelde funksie en die kernfunksie op te gee. Ons kan hierdie verspreiding van 'n huisarts beskou as 'n plekhouer vir 'n meerveranderlike normaal, want uiteindelik gaan ons net oor veelveranderlike normale verdelings, maar die manier waarop ons die gemiddelde en die kovariansie van hierdie meerveranderlike normaalverdeling bereken, is die skoonheid van Gaussiese prosesse. Dit kan duideliker wees as ons die vorige vergelyking 'n bietjie uitbrei:

Ons kan sien dat om die gemiddelde vektor en kovariansiematriks van hierdie meerveranderlike normaalverdeling te bereken, ons net die gemiddelde funksie op elke punt in die treinstel en die kernfunksie op alle pare punte in die treinstel moet toepas. lewer die kovariansiematriks. Dit is die moeite werd om hier op te let dat ons natuurlik geen funksie as kernfunksie kan gebruik nie; die kovariansiematriks moet beslis positief wees, daarom moet die kernfunksie dienooreenkomstig gekies word.

Ek wil u aandag nou weer vestig op die sin “verspreiding oor funksies”. Waarom sien ons dit so? Kyk na die onderstaande figuur om dit duideliker te maak. Die x as definieer die invoerveranderlikes en die y-as die funksiewaarde. In blou sien ons die verskillende realisasies van die funksie vir 'n spesifieke waarde van x. 'N Rooi lyn gee 'n voorbeeld van die realisering van die funksie oor x. Hoe sou ons so 'n steekproef neem? Dit is redelik duidelik uit die definisie van die huisdokter. Ons kan net 'n sekere stel van die gesamentlike verdeling oor veranderlikes monster Y, dit is f (X). Ons het gesê dat die marginale verspreiding van 'n meerveranderlike Gaussiese ook Gaussies is, dit is die rede dat ons verskeie waardes kry f (x) van dieselfde x, omdat x word normaal versprei.

Dit is hoe dit sou lyk as ons meer data gehad het xs, weereens, dit is slegs 'n steekproef uit 'n gesamentlike verspreiding wat deur die meerveranderlike Gaussiaan gedefinieer word.

Maar natuurlik het ons nog geen behoorlike afleiding gedoen nie, of hoe? Ons het pas gesien dat ons 'n oneindige aantal funksies kan monster, en ons wil 'n waarde van 'n funksie op 'n onbekende punt voorspel x. Dit is presies wat ons bereik deur kondisionering, laat ons aanvaar dat ons treinstel die veranderlikes bevat x₂ en x₄. En ons wil die funksiewaarde voorspel op x₁ en x₃. Die logiese ding om te doen is om die bekende waardes te bepaal. Deur kondisionering verminder ons die onsekerheid (moontlike funksiewaardes f) op die punte wat naby is. Wat "naby" eintlik beteken, word gedefinieer deur die kernfunksie.

Of getoon met 'n bietjie meer funksies (deur meer te sê, daar is nie 'n vaste aantal funksies nie, ons trek net N-funksies uit die oneindige stel funksies):

U kan u afvra: 'Maar wag, ons kondisioneer op 'n soort waardes f (x), maar f (x) verskyn nie eens in die definisie van die verspreiding nie ”. Ek erken dat dit verwarrend kan wees as u oor huisdokters praat. Maar in werklikheid, f (x), dit is y, verskyn wel. Dit verskyn in die geslote vorm oplossings vir die gemiddelde en kovariansie van die voorwaardelike verspreiding en die voorspellingspunte. Die vergelykings lyk soos volg (as ons gemiddelde funksie μ 0 is):

Soos jy kan sien, y is noodsaaklik vir die berekening van die nuwe gemiddelde, wat basies die punt is waaroor ons die meeste vertroue het in ons voorspelling. Dit is die geval waar ons nie raserige gegewens aanvaar nie. Maar wat as ons gegewens luidrugtig is? Sulke gevalle is redelik standaard as ons met robotika toepassings werk. Ons neem dikwels aan dat die geraas normaal versprei word met die gemiddelde 0. Die verandering in die voorwaardelike vergelykings is minimaal, aangesien u kan sien, voeg ons net diagonale variansie by die ontwerpmatriks. Wat beteken dit intuïtief? Dit beteken dat ons die onsekerheid van ons marges verhoog, wat presies ons opleidingspunte is, en dit is wat ons wil doen in die teenwoordigheid van geraas.

Nou kan ons die voorwaardelike verspreiding oor funksies teken nadat ons hierdie klein bietjie lineêre algebra gedoen het:


Praktiese toepassings van Gaussiese mengselmodelle

Digitale beeldverwerking is 'n tegniek om spesifieke bewerkings op 'n beeld uit te voer, om 'n verbeterde beeld te kry of om nuttige inligting daaruit te haal. Beeldsegmentering, 'n belangrike fase in beeldverwerking, is die proses om 'n beeld te verdeel in stelle pixels wat ooreenstem met verskillende voorwerpe of dele van voorwerpe. Die doel van beeldsegmentering is om verdere verwerking vir die daaropvolgende fases van digitale beeldverwerking eenvoudiger te maak. Dit word wyd gebruik in die opsporing van voorwerpe, en verstaan ​​die interaksies tussen voorwerpe, beeldkompressie, beeldbewerking, ens.

Met behulp van GMM is dit moontlik om beeldsegmentering uit te voer. Namate die aantal komponente in die model toeneem, word die gepartisioneerde beeld meer gedefinieerd. In die volgende deel het ons 'n voorbeeld-jpeg-beeld van 'n motor geneem en dit in drie komponente verdeel met GMM in Python.

Vir hierdie deel is opencv-python-, gevoelloos- en scikit-leer-pakkette nodig.

Vorm die beeld weer deur die eerste 2 dimensies te vermenigvuldig en die laaste dimensie te hou soos dit is.

Definieer die GMM-model deur die aantal komponente en die tipe kovariansie te spesifiseer. In hierdie geval het ons die beeld in 3 komponente verdeel en die 'vasgemaakte' kovariansie-tipe gebruik. Die gepartisioneerde beeld word as 'output.jpg' gestoor met behulp van die imwrite meth


Hierdie bladsy is nou verouderd. Raadpleeg die cflux-model om foute op vloeistowwe te bereken.

In plaas daarvan gebruik ons ​​'n metode om stelle parameters te kies wat hulle sal onttrek uit 'n waarskynlikheidsverdeling wat die vertroue-kontoere moet benader. Dan kan ons die vloed vir elke stel parameters bereken, die vloed orden en die omvang bepaal waarin 90% van die waardes val. Dit is dan 'n skatting vir die 90% -vertroue. Dit bly dus net om 'n manier te vind om toepaslike stelle parameters te kies. Ons gebruik die kovariansiematriks. By die beste pasposisie is die eerste afgeleides van die passtatistiek ten opsigte van die parameters per definisie nul. Die matriks van tweede afgeleides word die kovariansiematriks genoem (en die omgekeerde word dikwels die Fisher-inligtingsmatriks genoem). Ons teken stelle parameters uit 'n multi-dimensionele normaalverdeling waarvan die gemiddelde gegee word deur die beste pasvorm en waarvan die sigma die kovariansiematriks is. Dit is belangrik om daarop te let dat dit 'n benadering is, en as die passtatistiek op 'n ingewikkelde manier afhang van die parameterwaardes, kan dit baie verkeerd wees. Ons ontwikkel 'n beter algoritme gebaseer op die gebruik van Markov Chain Monte Carlo.

Bereken die fout op die stroom vanaf 'n deel van die model

As voorbeeld het ons 'n skrip gegee wat gebruik kan word om die vertrouensinterval van 90% op die nie-geabsorbeerde vloed te bereken, dws die vloed vir die model sonder 'n aanvanklike Galaktiese absorpsiekomponent. Om hierdie skrif te gebruik, laai dit dan binne xspec af: hiermee word 500 parameters van die parameters uitgevoer, stel die eerste parameter op nul (dws skakel die Galaktiese absorpsie uit) en bereken dan die vloed. Die <> is 'n Tcl-lys met parameters wat op nul gestel moet word sodat ander komponente uitgeskakel kan word deur hul normalisering te nul.

Die HEASARC huur! - Daar word nou aansoeke aanvaar vir 'n wetenskaplike met beduidende ervaring en belangstelling in die tegniese aspekte van astrofisika-navorsing om in die HEASARC by NASA Goddard Space Flight Center (GSFC) in Greenbelt, MD, te werk. Verwys na die AAS Job register vir volledige besonderhede.


1 Antwoord 1

Eerstens sou ek aanbeveel om lmfit.models.GaussianModel te gebruik, en nie set_param_hint () te gebruik nie - wees net eksplisiet, nie slim nie - soos met:

Onsekerhede in die beste pasparameters word beraam deur te kyk hoe die verandering van die parameterwaardes die pas sou verander. Met chi-kwadraat gedefinieër as die som van die vierkante van die residuele skikking (data-fit) / data_onsekerheid, word die onsekerhede vir elke parameter (en die parameter-parameter korrelasies) geskat as waardes wat die chi-kwadraat met 1. verhoog meer diepgaande bronne beskikbaar vir hoe nie-lineêre kleinste-vierkante pas.


Gaussiese prosesse vir dummies

Dit verbaas my altyd hoe ek binne 'n paar sekondes 'n uitspraak kan hoor oor 'n aspek van masjienleer wat my ontelbare ure neem om te verstaan. Ek het die eerste keer van Gaussian Processes gehoor in 'n aflewering van die Talking Machines-podcast en het gedink dit klink na 'n baie netjiese idee. Ek het dadelik vir my 'n eksemplaar van die klassieke teks oor die onderwerp, Gaussian Processes for Machine Learning, van Rasmussen en Williams aangeskaf, maar my geringe begrip van die Bayesiese benadering tot masjienleer het beteken dat ek redelik vinnig gestamp het. Dit & rsquos toe ek die reis begin het, beskryf ek in my laaste pos: Van nou af: die wiskunde van lineêre regressie.

Gaussiese prosesse (GP's) is die volgende stap in die reis, want dit bied 'n alternatiewe benadering tot regressieprobleme. Hierdie pos is daarop gemik om die noodsaaklikhede van huisdokters aan te bied sonder om te ver in die verskillende konyngate te gaan waarin hulle u kan lei (byvoorbeeld om te verstaan ​​hoe u die vierkantswortel van 'n matriks kan kry.)

Onthou dat ons in die eenvoudige lineêre regressie-instelling 'n afhanklike veranderlike y het wat ons aanneem dat dit gemodelleer kan word as 'n funksie van 'n onafhanklike veranderlike x, dws $ y = f (x) + epsilon $ (waar $ epsilon $ die onherleibare fout), maar ons neem verder aan dat die funksie $ f $ 'n lineêre verhouding definieer en daarom probeer ons die parameters $ theta_0 $ en $ theta_1 $ vind wat onderskeidelik die afsnit en die helling van die lyn definieer, dws $ y = theta_0 + theta_1x + epsilon $. Bayesiese lineêre regressie bied 'n waarskynlike benadering hiertoe deur 'n verspreiding te vind oor die parameters wat bygewerk word wanneer nuwe datapunte waargeneem word. Die huisartsbenadering is daarenteen 'n nie-parametries benadering, deurdat dit 'n verspreiding oor die moontlike vind funksies $ f (x) $ wat ooreenstem met die waargenome data. Soos met alle Bayes-metodes, begin dit met 'n voorafgaande verspreiding en werk dit by, aangesien datapunte waargeneem word, wat die posterior verspreiding oor funksies lewer.

Om 'n intuïsie te kry oor wat dit selfs beteken, dink aan die eenvoudige OLS-lyn wat gedefinieer word deur 'n onderskep en helling wat u bes doen om by u data te pas.

Die probleem is dat hierdie lyn eenvoudig nie voldoende is vir die taak nie, of hoe? U & rsquod hou regtig van 'n geboë lyn: in plaas van net twee parameters $ theta_0 $ en $ theta_1 $ vir die funksie $ hat = heta_0 + heta_1x$ it looks like a quadratic function would do the trick, i.e. $ hat = heta_0 + heta_1x + heta_2x^2 $. Now we&rsquod need to learn 3 parameters. But what if we don&rsquot want to specify upfront how many parameters are involved? We&rsquod like to consider every possible function that matches our data, with however many parameters are involved. That&rsquos what non-parametric means: it&rsquos not that there aren&rsquot parameters, it&rsquos that there are infinitely many parameters.

But of course we need a prior before we&rsquove seen any data. What might that look like? Well, we don&rsquot really want ALL THE FUNCTIONS, that would be nuts. So let&rsquos put some constraints on it. First of all, we&rsquore only interested in a specific domain &mdash let&rsquos say our x values only go from -5 to 5. Now we can say that within that domain we&rsquod like to sample functions that produce an output whose mean is, say, 0 and that are not too wiggly. Here&rsquos an example of a very wiggly function:

And here&rsquos a much smoother function:

There&rsquos a way to specify that smoothness: we use a covariance matrix to ensure that values that are close together in input space will produce output values that are close together. This covariance matrix, along with a mean function to output the expected value of $ f(x) $ defines a Gaussian Process.

Here&rsquos how Kevin Murphy explains it in the excellent textbook Machine Learning: A Probabilistic Perspective:

A GP defines a prior over functions, which can be converted into a posterior over functions once we have seen some data. Although it might seem difficult to represent a distrubtion over a function, it turns out that we only need to be able to define a distribution over the function&rsquos values at a finite, but arbitrary, set of points, say ( x_1,dots,x_N ) . A GP assumes that ( p(f(x_1),dots,f(x_N)) ) is jointly Gaussian, with some mean $ mu(x) $ and covariance $ sum(x) $ given by $ sum_ = k(x_i, x_j) $, where k is a positive definite kernel function. The key idea is that if ( x_i ) and ( x_j) are deemed by the kernel to be similar, then we expect the output of the function at those points to be similar, too.

The mathematical crux of GPs is the multivariate Gaussian distribution.

It&rsquos easiest to imagine the bivariate case, pictured here. The shape of the bell is determined by the covariance matrix. If we imagine looking at the bell from above and we see a perfect circle, this means these are two independent normally distributed variables &mdash their covariance is 0. If we assume a variance of 1 for each of the independent variables, then we get a covariance matrix of $ Sigma = egin 1 & 0 0 & 1 end $. The diagonal will simply hold the variance of each variable on its own, in this case both 1&rsquos. Anything other than 0 in the top right would be mirrored in the bottom left and would indicate a correlation between the variables. This would give the bell a more oval shape when looking at it from above.

If we have the joint probability of variables $ x_1 $ and $ x_2 $ as follows:

it is possible to get the conditional probability of one of the variables given the other, and this is how, in a GP, we can derive the posterior from the prior and our observations. It&rsquos just that we&rsquore not just talking about the joint probability of two variables, as in the bivariate case, but the joint probability of the values of $ f(x) $ for all the $ x $ values we&rsquore looking at, e.g. real numbers between -5 and 5.

So, our posterior is the joint probability of our outcome values, some of which we have observed (denoted collectively by $f$ ) and some of which we haven&rsquot (denoted collectively by $f_<*>$ ):

Here, $K$ is the matrix we get by applying the kernel function to our observed $x$ values, i.e. the similarity of each observed $x$ to each other observed $x$ . $K_<*>$ gets us the similarity of the training values to the test values whose output values we&rsquore trying to estimate. $K_<**>$ gives the similarity of the test values to each other.

I&rsquom well aware that things may be getting hard to follow at this point, so it&rsquos worth reiterating what we&rsquore actually trying to do here. There are some points $x$ for which we have observed the outcome $f(x)$ (denoted above as simply $f$ ). There are some points $x_<*>$ for which we would like to estimate $f(x_<*>)$ (denoted above as $f_<*>$ ). So we are trying to get the probability distribution $p(f_ <*>| x_<*>,x,f)$ and we are assuming that $f$ and $f_<*>$ together are jointly Gaussian as defined above.

About 4 pages of matrix algebra can get us from the joint distribution $p(f, f_<*>)$ to the conditional $p(f_ <*>| f)$ . I am conveniently going to skip past all that but if you&rsquore interested in the gory details then the Kevin Murphy book is your friend. At any rate, what we end up with are the mean, $mu_<*>$ and covariance matrix $Sigma_<*>$ that define our distribution $f_ <*>sim mathcal, Sigma_<*> ight) >$

Now we can sample from this distribution. Recall that when you have a univariate distribution $x sim mathcal$ you can express this in relation to standard normals, i.e. as $x sim mu + sigma(mathcal) $ . And generating standard normals is something any decent mathematical programming language can do (incidently, there&rsquos a very neat trick involved whereby uniform random variables are projected on to the CDF of a normal distribution, but I digress&hellip) We need the equivalent way to express our multivariate normal distribution in terms of standard normals: $f_ <*>sim mu + Bmathcal<(0, I)>$ , where B is the matrix such that $BB^T = Sigma_<*>$ , i.e. the square root of our covariance matrix. We can use something called a Cholesky decomposition to find this.

OK, enough math &mdash time for some code. The code presented here borrows heavily from two main sources: Nando de Freitas&rsquo UBC Machine Learning lectures (code for GPs can be found here) and the PMTK3 toolkit, which is the companion code to Kevin Murphy&rsquos textbook Machine Learning: A Probabilistic Perspective.

Below we define the points at which our functions will be evaluated, 50 evenly spaced points between -5 and 5. We also define the kernel function which uses the Squared Exponential, a.k.a Gaussian, a.k.a. Radial Basis Function kernel. It calculates the squared distance between points and converts it into a measure of similarity, controlled by a tuning parameter. Note that we are assuming a mean of 0 for our prior.

Note that the K_ss variable here corresponds to $K_<**>$ in the equation above for the joint probability. It will be used again below, along with $K$ and $K_<*>$

Now we&rsquoll observe some data. The actual function generating the $y$ values from our $x$ values, unbeknownst to our model, is the $sin$ function. We generate the output at our 5 training points, do the equivalent of the above-mentioned 4 pages of matrix algebra in a few lines of python code, sample from the posterior and plot it.

See how the training points (the blue squares) have &ldquoreined in&rdquo the set of possible functions: the ones we have sampled from the posterior all go through those points. The dotted red line shows the mean output and the grey area shows 2 standard deviations from the mean. Note that this is 0 at our training points (because we did not add any noise to our data). Also note how things start to go a bit wild again to the right of our last training point $x = 1$ &mdash that won&rsquot get reined in until we observe some data over there.

This has been a very basic intro to Gaussian Processes &mdash it aimed to keep things as simple as possible to illustrate the main idea and hopefully whet the appetite for a more extensive treatment of the topic such as can be found in the Rasmussen and Williams book.