HyperOpt Demystified

Mallin virityksen automatisointi HyperOptilla

Pidätkö mallien virittämisestä? Jos vastauksesi on "kyllä", tämä viesti on emme sinulle.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Sarjakuva isoisältäni - verkkosivusto.

Tässä blogissa käsittelemme erittäin suosittua automaattista hyperparametrien viritysalgoritmia nimeltä Puupohjaiset Parzen-estimaattorit (TPE). TPE:tä tukee avoimen lähdekoodin paketti HyperOpt. Hyödyntämällä HyperOpt ja TPE, koneoppimisinsinöörit voivat kehittää nopeasti erittäin optimoituja malleja ilman manuaalista viritystä.

Ilman lisäpuhetta, sukeltaa sisään!

HyperOpt on avoimen lähdekoodin python-paketti, joka käyttää Tree-based Parzen Esimtors (TPE) -nimistä algoritmia valitsemaan mallin hyperparametreja, jotka optimoivat käyttäjän määrittämän tavoitefunktion. Yksinkertaisesti määrittämällä kunkin hyperparametrin toiminnallinen muoto ja rajat, TPE etsii perusteellisesti mutta tehokkaasti monimutkaisen hyperavaruuden saavuttaakseen optimaalit.

TPE on peräkkäinen algoritmi, joka hyödyntää bayesilaista päivitystä ja noudattaa alla olevaa järjestystä.

  1. Kouluta malli, jossa on useita satunnaisesti valittuja hyperparametreja, jotka palauttavat tavoitefunktioarvoja.
  2. Jaa havaitut tavoitefunktioarvomme "hyviin" ja "huonoihin" ryhmiin jonkin kynnysgamman (γ) mukaan.
  3. Laske "lupaavuuden" pistemäärä, joka on vain P(x|hyvä) / P(x|huono).
  4. Määritä hyperparametrit, jotka maksimoivat lupaavuuden sekoitusmallien avulla.
  5. Sovita mallimme käyttämällä hyperparametreja vaiheesta 4.
  6. Toista vaiheet 2–5, kunnes pysähdysehto tulee näkyviin.

Tässä nopea koodiesimerkki.

Ok, se oli paljon suuria sanoja. Hidastetaan ja ymmärretään todella, mitä tapahtuu.

1.1 – Tavoitteemme

Datatieteilijöillä on kiire. Haluamme tuottaa todella hyviä malleja, mutta tehdä se tehokkaasti ja ihanteellisesti kädet irti.

Tietyt vaiheet ML-mallinnuksen elinkaaressa ovat kuitenkin erittäin vaikeita automatisoida. Esimerkiksi tutkiva data-analyysi (EDA) ja ominaisuussuunnittelu ovat yleensä aihekohtaisia ​​ja vaativat ihmisen intuitiota. Mallin viritys on toisaalta iteratiivinen prosessi, jossa tietokoneet voivat menestyä.

Tavoitteemme tässä viestissä on ymmärtää, kuinka algoritmeja voidaan hyödyntää mallin viritysprosessin automatisoimiseksi.

Auttaaksemme meitä ajattelemaan tätä tavoitetta, käytämme analogiaa: olemme merirosvoja, jotka etsivät haudattua aarretta. On myös tärkeää huomata, että olemme erittäin tehokkaita merirosvoja, jotka haluavat minimoida aikaamme haudatun aarteen etsimiseen. Joten miten meidän pitäisi minimoida etsimiseen käytetty aika? Vastaus on käytä karttaa!

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 1: esimerkki 3D-hyperparametrihakuavaruudesta. Aarrearkun sijainti on maailmanlaajuinen optimi. Kuva tekijältä.

Kuvassa 1 meillä on kuvitteellinen kartta, joka näyttää missä aartemme sijaitsee. Monien kiipeilyjen ja kaivausten jälkeen ei olisi liian vaikeaa päästä tuohon aarteeseen, koska tiedämme tarkalleen missä se sijaitsee.

Mutta mitä tapahtuu, kun meillä ei ole karttaa?

Kun tehtäväksi viritetään mallia, emme valitettavasti saa karttaa. Maastomme, joka vastaa hyperparametrin hakuavaruutta, on tuntematon. Lisäksi optimaalista hyperparametrijoukkoa vastaavan aartemme sijaintia ei myöskään tiedetä.

Puhutaanpa tällä asetuksella mahdollisista tavoista tutkia tätä tilaa tehokkaasti ja löytää aarre!

1.2 – Mahdolliset ratkaisut

Alkuperäinen mallin viritysmenetelmä on "manuaalinen" – insinööri itse asiassa testaa manuaalisesti monia erilaisia ​​kokoonpanoja ja katsoa, ​​mikä hyperparametriyhdistelmä tuottaa parhaan mallin. Vaikka tämä prosessi on informatiivinen, se on tehoton. Täytyy olla parempi tapa…

1.2.1 – Ruudukkohaku (pahin)

Ensimmäinen optimointialgoritmimme on ruudukkohaku. Ruudukkohaku testaa iteratiivisesti kaikkia mahdollisia hyperparametrien yhdistelmiä käyttäjän määrittämässä ruudukossa.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 2: esimerkki ruudukkohaun asettelusta. Kuva tekijältä

Esimerkiksi kuvassa 2, missä näet punaisen pisteen, koulutamme mallimme uudelleen ja arvioimme sen. Tämä kehys on tehoton, koska se käyttää uudelleen huonoja hyperparametreja. Jos esimerkiksi hyperparametrilla 2 on vain vähän vaikutusta tavoitefunktioomme, testaamme silti kaikki sen arvojen yhdistelmät, mikä lisää vaadittua iteraatioiden määrää 10x (tässä esimerkissä).

Mutta ennen kuin siirryt eteenpäin, on tärkeää huomata, että ruudukkohaku on edelleen melko suosittu, koska se taatusti löytää optimaalisen oikein määritellyllä ruudukolla. Jos päätät käyttää menetelmää, Varmista, että muutat ruudukon vastaamaan hyperparametriesi toiminnallista muotoa. Esimerkiksi max_depth a:lle satunnainen metsäluokittaja on kokonaisluku – älä anna sen etsiä jatkuvasta tilasta. On myös epätodennäköistä, että sillä on tasainen jakautuminen – jos tiedät hyperparametrisi toiminnallisen muodon, muuta ruudukko vastaamaan sitä.

Yhteenvetona, ruudukkohaku on ulottuvuuden kirouksen alainen ja laskee tiedot uudelleen arvioiden välillä, mutta sitä käytetään edelleen laajalti.

1.2.2 – Satunnainen haku (hyvä)

Toinen algoritmimme on satunnainen haku. Satunnaishaku yrittää satunnaisia ​​arvoja käyttäjän määrittämässä ruudukossa. Toisin kuin ruudukkohaussa, emme ole jääneet testaamaan kaikkia mahdollisia hyperparametrien yhdistelmiä, mikä lisää tehokkuutta.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 3: esimerkki satunnaishausta. Kuva tekijältä.

Tässä on hieno tosiasia: satunnainen haku löytää (keskimäärin) ylimmän 5 %:n hyperparametrimäärityksen 60 XNUMX iteraatiota. Siitä huolimatta, kuten ruudukkohaussa, sinun on muutettava hakutila vastaamaan kunkin hyperparamin toiminnallista muotoa.

Satunnaishaku on hyvä lähtökohta hyperparametrien optimoinnille.

1.2.3 – Bayesin optimointi (parempi)

Kolmas ehdokkaamme on ensimmäinen SMBO (Sequential Model-Based Optimization) -algoritmimme. Keskeinen käsitteellinen ero aikaisempiin tekniikoihin on me Käytä iteratiivisesti aikaisempia ajoja tulevien tutkimuspisteiden määrittämiseen.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 4: bayesilainen optimointiesimerkki — src. Kuva tekijältä.

Bayesilainen hyperparametrioptimointi pyrkii kehittämään hyperparametrihakuavaruutemme todennäköisyysjakauman. Sieltä se käyttää hankintatoimintoa, kuten odotettua odotettua parannusta, muuttaakseen hyperavaruudestamme "haettavamman". Lopuksi se käyttää optimointialgoritmia, kuten stokastista gradienttilaskua, löytääkseen hyperparametrit, jotka maksimoivat hankintafunktiomme. Näitä hyperparametrejä käytetään sopimaan malliimme ja prosessia toistetaan konvergenssiin asti.

Bayesin optimointi ylittää tyypillisesti satunnaisen haun, mutta sillä on joitain keskeisiä rajoituksia, kuten numeeristen hyperparametrien vaatiminen.

1.2.4 – Puupohjaiset Parzen-estimaattorit (paras)

Lopuksi puhutaan ohjelman tähdestä: Tree-Based Parzen Estimators (TPE). TPE on toinen SMBO-algoritmi, joka tyypillisesti ylittää perusbayesilaisen optimoinnin, mutta tärkein myyntivaltti on se, että se käsittelee monimutkaisia ​​hyperparametrisuhteita puurakenteen kautta.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 5: esimerkki TPE:n hierarkkisesta rakenteesta — src. Kuva tekijältä.

Ymmärtääksemme tämän käyttämällä kuvaa 5 puun rakenne. Täällä opetamme tukivektorikoneen (SVM) luokittelijaa. Testaamme kahta ydintä: linear ja RBF. linear ydin ei ota leveysparametria, mutta RBF ei, joten käyttämällä sisäkkäistä sanakirjaa voimme koodata tämän rakenteen ja siten rajoittaa hakutilaa.

TPE tukee myös kategorisia muuttujia, joita perinteinen Bayesin optimointi ei tue.

Nopea vastuuvapauslauseke ennen kuin jatkat, on olemassa monet muut hyperparametrien virityspaketit. Jokainen tukee erilaisia ​​​​algoritmeja, joista osa sisältää satunnaisia ​​​​metsiä, Gaussin prosesseja ja geneettisiä algoritmeja. TPE on erittäin suosittu ja yleiskäyttöinen algoritmi, mutta ei välttämättä paras.

Yleisesti ottaen TPE on todella vankka ja tehokas hyperparametrien optimointiratkaisu.

Nyt kun meillä on yleinen käsitys joistakin suosituista hyperparametrien optimointialgoritmeista, sukeltakaamme syvällisesti TPE:n toimintaan.

Palatakseni analogiimme, olemme merirosvoja, jotka etsivät haudattua aarretta mutta sinulla ei ole karttaa. Kapteenimme tarvitsee aarteen mahdollisimman pian, joten meidän on kaivettava strategisista paikoista, joissa on suuri todennäköisyys saada aarre, käyttämällä aikaisempia kaivauksia tulevien kaivausten paikan määrittämiseen.

2.1 – Alustus

Aloittaaksemme me määritellä tilamme rajoitukset. Kuten edellä mainittiin, hyperparametreillämme on usein toiminnallinen muoto, max/min-arvot ja hierarkkinen suhde muihin hyperparametreihin. ML-algoritmejamme ja tietojamme koskevan tietämyksemme avulla voimme määrittää hakuavaruutemme.

Seuraava meidän on määrittää tavoitefunktiomme, jota käytetään arvioimaan, kuinka "hyvä" hyperparametriyhdistelmämme on. Joitakin esimerkkejä ovat klassiset ML-häviöfunktiot, kuten RMSE tai AUC.

Loistava! Nyt kun meillä on rajallinen hakutila ja tapa mitata menestystä, olemme valmiita aloittamaan haun…

2.2 — Iteratiivinen Bayesin optimointi

Bayesin optimointi on peräkkäinen algoritmi, joka löytää hyperavaruudesta pisteitä suurella todennäköisyydellä "onnistua" kohdefunktion mukaan. TPE hyödyntää bayesilaista optimointia, mutta käyttää fiksuja temppuja parantaakseen suorituskykyä ja käsitelläkseen hakutilan monimutkaisuutta…

2.2.0 — Käsitteellinen asennus

Ensimmäinen temppu on mallinnus P(x|y) sijasta P(y|x)…

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 6: ehdollinen todennäköisyys, jonka TPE näyttää ratkaisevan. Kuva tekijältä.

Bayesin optimointi näyttää yleensä mallintavalta P(y|x), joka on tavoitefunktion arvon todennäköisyys (y), annettu hyperparametrit (x). TPE tekee päinvastoin – se näyttää mallintavan P(x|y), mikä on hyperparametrien todennäköisyys (x), annettu tavoitefunktion arvo (y).

Lyhyesti sanottuna TPE yrittää löytää parhaat tavoitefunktioarvot ja määrittää sitten niihin liittyvät hyperparametrit.

Tällä erittäin tärkeällä asetuksella päästään varsinaiseen algoritmiin.

2.2.1 — Jaa tietomme "hyviin" ja "huonoihin" ryhmiin

Muista, että tavoitteemme on löytää parhaat hyperparametriarvot jonkin tavoitefunktion mukaan. Joten kuinka voimme hyödyntää P(x|y) tehdä se?

Ensinnäkin TPE jakaa havaitut tietopisteemme kahteen ryhmään: hyvä, merkitty g(x), ja huono, merkitty l(x). Hyvän ja huonon rajan määrittää käyttäjän määrittelemä gamma-parametri (γ), joka vastaa tavoitefunktion prosenttipistettä, joka jakaa havainnot (y*).

Joten kun γ = 0.5, tavoitefunktiomme arvo, joka jakaa havainnot (y*) on havaitsemiemme pisteiden mediaani.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 7: p(x|y):n jakautuminen kahdeksi joukoksi. Kuva tekijältä.

Kuten kuvasta 7 näkyy, voimme formalisoida p(x|y) käyttämällä yllä olevaa kehystä. Ja kun otetaan huomioon merirosvo-analogia…

Pirate Perspective: katsomalla paikkoja, joita olemme jo tutkineet, l(x) luettelee paikkoja, joissa on hyvin vähän aarteita ja g(x) luetteloi paikkoja, joissa on paljon aarteita.

2.2.32— Laske "lupaus"-pisteet

Toiseksi TPE määrittelee, kuinka meidän tulee arvioida havaitsematon hyperparametriyhdistelmä "lupaavuus" -pisteet.

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 8: lupaavuuspisteiden määritelmä. Kuva tekijältä.

Kuva 8 määrittelee lupaavuuspisteemme (P), joka on vain suhde seuraavien komponenttien kanssa…

  • Osoittaja: todennäköisyys havaita joukko hyperparametrit (x), koska vastaava tavoitefunktion arvo on "hyvä"
  • Nimittäjä: todennäköisyys havaita joukko hyperparametrit (x), koska vastaava tavoitefunktion arvo on "huono"

Mitä suurempi "lupaavuuden" arvo on, sitä todennäköisemmin hyperparametrimme ovat x tuottaa "hyvän" tavoitefunktion.

Pirate Perspective: lupaavuus osoittaa, kuinka todennäköisesti tietyllä sijainnilla maastossamme on paljon aarteita.

Jos olet perehtynyt Bayesin optimointiin, tämä yhtälö toimii hankintafunktiona ja on verrannollinen Odotettu parannus (EI).

2.2.3— Luo todennäköisyystiheysestimaatit

Kolmanneksi TPE arvioi "lupaavuuden" pistemäärän kautta sekoitusmalleja. Seosmallien ideana on ottaa useita todennäköisyysjakaumia ja koota ne lineaarisella yhdistelmällä — src. Näitä yhdistettyjä todennäköisyysjakaumia käytetään sitten kehitettäessä todennäköisyystiheysestimaatteja.

Yleensä seosmallinnusprosessi on…

  1. Määrittele pisteiden jakelutyyppi. Meidän tapauksessamme, jos muuttujamme on kategorinen, käytämme uudelleenpainotettua kategorista jakaumaa ja jos sen numeerinen, käytämme Gaussin (eli normaali) tai tasaista jakaumaa.
  2. Toista jokaisen pisteen yli ja lisää jakauma tähän pisteeseen.
  3. Summaa kaikkien jakaumien massat saadaksesi todennäköisyystiheysestimaatin.

Huomaa, että tämä prosessi suoritetaan erikseen molemmille sarjoille l(x) ja g(x).

Käydään läpi esimerkki kuvassa 9…

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 9: ​​esimerkki typistetyistä Gaussin jakaumista, jotka sopivat 3 hyperparametrihavaintoon. Kuva tekijältä.

Jokaiselle havainnolle (siniset pisteet x-akselilla) luomme normaalijakauman ~N(μ, σ), jossa…

  • μ (mu) on normaalijakautuksemme keskiarvo. Sen arvo on pisteemme sijainti x-akselilla.
  • σ (sigma) on normaalijakautuksemme keskihajonna. Sen arvo on etäisyys lähimpään naapuripisteeseen.

Jos pisteet ovat lähellä toisiaan, keskihajonta on pieni ja siten jakauma erittäin korkea ja päinvastoin, jos pisteet ovat hajallaan, jakauma on tasainen (kuva 10)…

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 10: esimerkki keskihajonnan vaikutuksesta normaalijakauman muotoon. Kuva tekijältä.

Pirate Perspective: NA — merirosvot eivät ole hyviä sekamalleissa.

Toinen lyhyt sivuhuomio ennen kuin jatkat eteenpäin: jos luet kirjallisuutta, huomaat, että TPE käyttää "katkaistuja" gaussianeita, mikä yksinkertaisesti tarkoittaa, että gausseja rajoittaa alue, jonka määritämme hyperparametrikonfiguraatiossamme sen sijaan, että ne ulottuisivat +/- äärettömyyteen. .

2.2.4 — Seuraavan tutkittavan pisteen määrittäminen!

Laitetaan nämä palaset yhteen. Tähän mennessä olemme 1) hankkineet tavoitefunktiohavaintoja, 2) määrittäneet "lupaavuus"-kaavamme ja 3) luoneet todennäköisyystiheysestimaatin sekoitusmalleilla, jotka perustuvat aikaisempiin arvoihin. Meillä on kaikki osat tietyn pisteen arvioimiseen!

Ensimmäinen askel on luoda keskimääräinen todennäköisyystiheysfunktio (PDF) molemmille g(x) ja l(x).

Hyperparametri hyperparametrien viritysmallin viritys koneoppimisen datatiede sklearn malli mllib kipinä hyperopt puu parzen estimator tpe puupohjainen parzen esimtator mlflow databricks
Kuva 11: Keskimääräisen todennäköisyystiheyden päällekkäisyys annettaessa 3 havaittua pistettä. Kuva tekijältä.

Esimerkkiprosessi on esitetty kuvassa 11 – punainen viiva on keskimääräinen PDF-tiedostomme ja se on yksinkertaisesti kaikkien PDF-tiedostojen summa jaettuna PDF-tiedostojen lukumäärällä.

Keskimääräistä PDF-tiedostoa käyttämällä voimme saada minkä tahansa hyperparametrin arvon todennäköisyyden (x) olla sisällä g(x) or l(x).

Oletetaan esimerkiksi, että havaitut arvot kuvassa 11 kuuluvat "hyvään" joukkoon, g(x). Keskimääräisen PDF-tiedostomme perusteella on epätodennäköistä, että hyperparametrin arvo 3.9 tai 0.05 kuuluisi "hyvään" joukkoon. Sitä vastoin hyperparametrin arvo ~1.2 näyttää hyvin todennäköisesti kuuluvan "hyvään" joukkoon.

Nyt tämä on vain puolet kuvasta. Käytämme samaa menetelmää "huonolle" joukolle, l(x). Koska pyrimme maksimoimaan g(x) / l(x), lupaavat kohdat tulisi sijaita missä g(x) on korkea ja l(x) on matala.

Melko viileä, eikö?

Näiden todennäköisyysjakaumien avulla voimme ottaa näytteitä puurakenteisista hyperparametreistamme ja löytää joukon hyperparametreja, jotka maksimoivat "lupaavuuden" ja ovat siten tutkimisen arvoisia.

Pirate Perspective: seuraava paikka, jonka kaivamme, on paikka, joka maksimoi (todennäköisyys, että sinulla on paljon aarteita) / (todennäköisyys, että meillä on vähän aarretta).

Nyt kun tiedät, miten se toimii, tässä on joitain käytännön vinkkejä TPE:n toteuttamiseen avoimen lähdekoodin paketin HyperOpt kautta.

3.1 — HyperOpt-sovelluksen rakenne

Yleensä HyperOpt:n hyödyntämisessä on kolme päävaihetta…

  1. Määritä hakutila, joka on vain optimoitavien hyperparametrien alueet ja toiminnalliset muodot.
  2. Määritä sovitustoiminto, joka kutsuu sinua model.fit() toiminto tietyssä juna-/testi-jaossa.
  3. Määritä tavoitefunktio, joka on mikä tahansa klassisista tarkkuusmittareista, kuten RMSE tai AUC.

Valitettavasti nämä automatisoidut viritysmenetelmät vaativat edelleen suunnittelupanoksen datatieteilijältä - se ei ole täysin ilmainen lounas. Kuitenkin anekdoottisesti TPE on melko vankka hyperparametrien virheellisiin määrityksiin (järjestyksen rajoissa).

3.2 – Vinkkejä ja temppuja

  • HyperOpt on rinnakkaistavissa molempien kautta Apache Spark ja MongoDB. Jos työskentelet useiden ytimien kanssa, olipa se sitten pilvessä tai paikallisella koneellasi, tämä voi lyhentää suoritusaikaa dramaattisesti.
  • Jos rinnastat viritysprosessin Apache Sparkin kautta, käytä a SparkTrialsobjekti yhden solmun ML-malleille (sklearn) ja a Trails objekti rinnakkaisille ML-malleille (MLlib). Koodi on alla.
  • MLvirtaus on avoimen lähdekoodin menetelmä mallin ajojen seuraamiseen. Se integroituu helposti HyperOptiin.
  • Älä kavenna hakua liian aikaisin. Jotkut hyperparametrien yhdistelmät voivat olla yllättävän tehokkaita.
  • Hakutilan määrittäminen voi olla hankalaa, varsinkin jos et tiedä sitä hyperparametriesi toiminnallinen muoto. Kuitenkin henkilökohtaisen kokemuksen perusteella TPE on melko vankka näiden toiminnallisten muotojen virheelliseen määrittelyyn.
  • Hyvän tavoitefunktion valitseminen riittää pitkälle. Useimmissa tapauksissa virhettä ei luoda tasa-arvoiseksi. Jos tietyntyyppinen virhe on ongelmallisempi, muista rakentaa tämä logiikka toimintoosi.

3.3- Koodiesimerkki

Tässä on koodia HyperOptin suorittamiseen hajautetusti. Se on muokattu kirjan koodista, Koneoppimistekniikka toiminnassa - tässä on git repo.

Joitakin tämän katkelman mukavia ominaisuuksia ovat rinnastaminen kautta Apache Spark ja mallin kirjaus kautta MLvirtaus. Huomaa myös, että tämä katkelma optimoi sklearn RandomForestRegressorin - sinun on vaihdettava mallia ja sovitustoimintoa tarpeidesi mukaan.

Ja siinä se on – HyperOpt kaikessa komeudessaan!

Kertaamme nopeasti yhteenvedon toivon avainkohdista.

Hyperparametrien viritys on välttämätön osa ML-mallin elinkaarta, mutta se vie aikaa. SMBO (Sequential Model-Based Optimization) -algoritmit ovat loistavia optimien etsimisessä monimutkaisista hyperavaruuksista, ja niitä voidaan soveltaa hyperparametrien virittämiseen. Tree-based Parzen Estimators (TPE) on erittäin tehokas SMBO ja toimii paremmin kuin Bayesin optimointi ja satunnaishaku.

TPE toistaa alla olevat vaiheet pysäytyskriteeriin asti:

  1. Jaa havaitut pisteet "hyviin" ja "huonoihin" ryhmiin jonkin hyperparametrin, gamman, mukaan.
  2. Sovita sekoitusmalli sekä "hyvään" että "huonoon" joukkoon kehittääksesi keskimääräisen todennäköisyystiheyden arvion.
  3. Valitse piste, joka optimoi "lupaavuus" -pistemäärän, joka hyödyntää vaihetta 2 arvioidakseen todennäköisyyttä olla "hyvä" ja "huono" joukossa.

Lopuksi meillä on todella siisti koodinpätkä, joka näyttää kuinka HyperOpt rinnakkaistaan ​​SparkTrialsin kautta. Se myös kirjaa kaikki iteraatiomme MLflow:hon.

HyperOpt Demystified julkaistu uudelleen lähteestä https://towardsdatascience.com/hyperopt-demystified-3e14006eb6fa?source=rss—-7f60cf5620c9—4 kautta https://towardsdatascience.com/feed

<!-

->

Aikaleima:

Lisää aiheesta Blockchain-konsultit