Programiranje

Razloženi algoritmi strojnega učenja

Strojno učenje in globoko učenje sta bila široko sprejeta in še bolj napačno razumljena. V tem članku bi rad stopil nazaj in v osnovnih pogledih razložil tako strojno kot globoko učenje, razpravljal o nekaterih najpogostejših algoritmih strojnega učenja in pojasnil, kako se ti algoritmi navezujejo na druge koščke uganke ustvarjanja napovednih modelov. iz zgodovinskih podatkov.

Kaj so algoritmi strojnega učenja?

Spomnimo se, da je strojno učenje razred metod za samodejno ustvarjanje modelov iz podatkov. Algoritmi strojnega učenja so motorji strojnega učenja, kar pomeni, da so algoritmi tisti, ki nabor podatkov spremenijo v model. Kateri algoritem deluje najbolje (nadzorovan, nenadzorovan, klasifikacija, regresija itd.) Je odvisen od vrste težave, ki jo rešite, razpoložljivih računalniških virov in narave podatkov.

Kako deluje strojno učenje

Navadni algoritmi za programiranje računalniku povedo, kaj naj naredi naravnost. Algoritmi za razvrščanje na primer pretvorijo neurejene podatke v podatke, razvrščene po nekaterih merilih, pogosto številskem ali abecednem vrstnem redu enega ali več polj v podatkih.

Algoritmi linearne regresije ustrezajo ravni črtiali drugo funkcijo, ki je linearna po svojih parametrih, kot je polinom, na numerične podatke, običajno z izvajanjem matričnih inverzij, da se zmanjša napaka na kvadrat med vrstico in podatki. Napaka na kvadrat se uporablja kot metrika, ker vas ne zanima, ali je regresijska črta nad ali pod podatkovnimi točkami; skrbi vas le razdalja med premico in točkami.

Nelinearni regresijski algoritmi, ki krivulje, ki po svojih parametrih niso linearne, prilegajo podatkom, so nekoliko bolj zapleteni, ker jih v nasprotju z linearno regresijsko problematiko ni mogoče rešiti z deterministično metodo. Namesto tega nelinearni regresijski algoritmi izvajajo nekakšen iterativni postopek minimizacije, pogosto nekaj sprememb metode najbolj strmega spusta.

Najstrmejši spust v bistvu izračuna kvadratno napako in njen gradient pri trenutnih vrednostih parametrov, izbere velikost koraka (aka stopnja učenja), sledi smeri gradienta "po hribu navzdol", nato pa izračuna novo kvadratno napako in njen gradient pri novem vrednosti parametrov. Sčasoma se z srečo postopek zbliža. Različice najbolj strmega spusta skušajo izboljšati konvergenčne lastnosti.

Algoritmi strojnega učenja so celo manj enostavni kot nelinearna regresija, deloma zato, ker se strojno učenje odpove omejevanju prilagajanja določeni matematični funkciji, kot je polinom. Obstajata dve glavni kategoriji težav, ki jih pogosto rešuje strojno učenje: regresija in klasifikacija. Regresija velja za numerične podatke (npr. Kakšen je verjeten dohodek za nekoga z določenim naslovom in poklicem?), Razvrstitev pa za neštevilske podatke (npr. Ali bo prosilec zamudil to posojilo?).

Težave z napovedmi (npr. Kakšna bo začetna cena za delnice Microsofta jutri?) So podmnožica težav z regresijo podatkov časovnih vrst. Težave s klasifikacijo včasih delimo na binarne (da ali ne) in večkategorijske (živalske, zelenjavne ali mineralne).

Nadzorovano učenje v primerjavi z nenadzorovanim učenjem

Neodvisno od teh oddelkov obstajata še dve vrsti algoritmov strojnega učenja: nadzorovani in nenadzorovani. V nadzorovano učenje, zagotovite nabor podatkov o usposabljanju z odgovori, na primer nabor slik živali skupaj z imeni živali. Cilj tega treninga bi bil model, ki bi lahko pravilno identificiral sliko (vrste živali, ki je bila vključena v sklop treningov), ki je prej ni videl.

V nenadzorovano učenje, algoritem gre skozi podatke sam in poskuša priti do pomembnih rezultatov. Rezultat je lahko na primer skupek podatkovnih točk, ki bi jih lahko povezali znotraj vsake gruče. To deluje bolje, če se grozdi ne prekrivajo.

Usposabljanje in evalvacija pretvorijo nadzorovane učne algoritme v modele z optimizacijo njihovih parametrov, da bi našli nabor vrednosti, ki se najbolje ujemajo z resničnostjo vaših podatkov. Algoritmi se pri svojih optimizatorjih pogosto zanašajo na različice najstrmejšega spusta, na primer stohastični gradientni spust (SGD), ki je v bistvu najbolj strm spust, izveden večkrat z naključnih izhodišč. Skupne izboljšave SGD dodajajo dejavnike, ki popravijo smer naklona glede na zagon ali prilagodijo stopnjo učenja na podlagi napredka od enega prehoda skozi podatke (imenovanega epoha) do naslednjega.

Čiščenje podatkov za strojno učenje

Čistih podatkov v naravi ni. Da bi bili podatki uporabni za strojno učenje, jih je treba agresivno filtrirati. Na primer, želeli boste:

  1. Oglejte si podatke in izključite vse stolpce, v katerih je veliko manjkajočih podatkov.
  2. Ponovno si oglejte podatke in izberite stolpce, ki jih želite uporabiti za napoved. (To lahko spremenite med ponovitvijo.)
  3. V preostalih stolpcih izključite vse vrstice, v katerih še vedno manjkajo podatki.
  4. Popravite očitne tipkarske napake in združite enakovredne odgovore. Na primer, ZDA, ZDA, ZDA in Ameriko bi bilo treba združiti v eno samo kategorijo.
  5. Izključite vrstice s podatki, ki so izven obsega. Če na primer analizirate potovanja s taksijem v New Yorku, boste želeli filtrirati vrstice z zemljepisnimi širinami in dolžinami za prevzem ali odstop, ki so zunaj mejnega polja metropolitanskega območja.

Naredite lahko še veliko več, vendar bo odvisno od zbranih podatkov. To je lahko dolgočasno, vendar če v svojem cevovodu strojnega učenja nastavite korak čiščenja podatkov, ga lahko poljubno spremenite in ponovite.

Kodiranje in normalizacija podatkov za strojno učenje

Če želite uporabiti kategorične podatke za razvrščanje strojev, morate besedilne nalepke kodirati v drug obrazec. Obstajata dve pogosti kodiranji.

Eno je kodiranje nalepk, kar pomeni, da se vsaka vrednost besedilne nalepke nadomesti s številko. Drugi pa je enodelno kodiranje, kar pomeni, da se vsaka vrednost besedilne nalepke spremeni v stolpec z binarno vrednostjo (1 ali 0). Večina okvirov strojnega učenja ima funkcije, ki opravijo pretvorbo namesto vas. Na splošno je prednostno kodiranje z enim vročim pogojem, saj lahko kodiranje nalepk včasih zmede algoritem strojnega učenja pri razmišljanju, da je kodiran stolpec razvrščen.

Če želite uporabiti numerične podatke za regresijo stroja, morate običajno normalizirati podatke. V nasprotnem primeru lahko številke z večjimi območji prevladujejo nad evklidsko razdaljo vektorji funkcij, njihove učinke je mogoče povečati na račun drugih polj, optimizacija strmega spusta pa ima lahko težave pri konvergenci. Obstajajo številni načini za normalizacijo in standardizacijo podatkov za ML, vključno z min-max normalizacijo, povprečno normalizacijo, standardizacijo in spreminjanjem na dolžino enote. Ta postopek se pogosto imenuje skaliranje funkcij.

Kaj so funkcije strojnega učenja?

Ker sem v prejšnjem poglavju omenil vektorje lastnosti, bi moral razložiti, kaj so. Najprej a funkcija je posamezna merljiva lastnost ali značilnost opaženega pojava. Pojem "značilnost" je povezan s konceptom razlagalne spremenljivke, ki se uporablja v statističnih tehnikah, kot je linearna regresija. Vektorji funkcij združujejo vse funkcije za eno vrstico v številčni vektor.

Del umetnosti izbiranja lastnosti je, da izberemo najmanjši nabor neodvisen spremenljivke, ki pojasnjujejo težavo. Če sta dve spremenljivki močno povezani, jih je treba združiti v eno samo funkcijo ali pa eno izpustiti. Včasih ljudje izvedejo analizo glavnih komponent, da pretvorijo korelirane spremenljivke v niz linearno nekoreliranih spremenljivk.

Nekatere transformacije, ki jih ljudje uporabljajo za konstruiranje novih značilnosti ali zmanjšanje dimenzionalnosti vektorjev lastnosti, so preproste. Na primer, odštej Leto rojstva iz Leto smrti in konstruirate Starost ob smrti, ki je glavna neodvisna spremenljivka za analizo življenjske dobe in smrtnosti. V drugih primerih konstrukcija značilnosti morda ni tako očitno.

Pogosti algoritmi strojnega učenja

Obstaja na desetine algoritmov strojnega učenja, ki so zapleteni, od linearne regresije in logistične regresije do globokih nevronskih mrež in ansamblov (kombinacije drugih modelov). Nekateri najpogostejši algoritmi pa vključujejo:

  • Linearna regresija, tudi regresija najmanjših kvadratov (za numerične podatke)
  • Logistična regresija (za binarno klasifikacijo)
  • Linearna diskriminatorna analiza (za večkategorijsko klasifikacijo)
  • Drevesa odločanja (tako za razvrščanje kot za regresijo)
  • Naivni Bayes (tako za razvrščanje kot za regresijo)
  • K-Najbližji sosedje, aka KNN (tako za razvrščanje kot za regresijo)
  • Učenje vektorske kvantizacije, aka LVQ (tako za klasifikacijo kot za regresijo)
  • Support Vector Machines, znan tudi kot SVM (za binarno klasifikacijo)
  • Naključni gozdovi, vrsta algoritma "vreče" (za klasifikacijo in regresijo)
  • Pospeševalne metode, vključno z AdaBoost in XGBoost, so algoritmi ansambla, ki ustvarijo vrsto modelov, pri katerih vsak nov model poskuša popraviti napake prejšnjega modela (tako za klasifikacijo kot za regresijo)

Kje so nevronske mreže in globoke nevronske mreže, o katerih toliko slišimo? Ponavadi so računalniško zahtevne do te mere, da potrebujejo grafične procesorje ali drugo specializirano strojno opremo, zato jih uporabljajte samo za posebne težave, kot sta klasifikacija slik in prepoznavanje govora, ki niso primerne za preprostejše algoritme. Upoštevajte, da "globoko" pomeni, da je v nevronski mreži veliko skritih plasti.

Za več informacij o nevronskih mrežah in globokem učenju glejte »Kaj globinsko učenje v resnici pomeni.«

Hiperparametri za algoritme strojnega učenja

Algoritmi strojnega učenja se učijo na podatkih, da bi našli najboljši nabor uteži za vsako neodvisno spremenljivko, ki vpliva na predvideno vrednost ali razred. Sami algoritmi imajo spremenljivke, imenovane hiperparametri. V nasprotju s parametri se imenujejo hiperparametri, ker nadzorujejo delovanje algoritma in ne uteži, ki se določajo.

Najpomembnejši hiperparameter je pogosto stopnja učenja, ki določa velikost koraka, uporabljenega pri iskanju naslednjega niza uteži, ki ga želimo poskusiti pri optimizaciji. Če je stopnja učenja previsoka, se lahko gradientni spust hitro zbliža na planoti ali neoptimalni točki. Če je stopnja učenja prenizka, se lahko gradientni spust ustavi in ​​se nikoli popolnoma ne zbliža.

Številni drugi pogosti hiperparametri so odvisni od uporabljenih algoritmov. Večina algoritmov ima zaustavitvene parametre, na primer največje število obdobij, največji čas za zagon ali minimalno izboljšanje iz obdobja v obdobje. Določeni algoritmi imajo hiperparametre, ki nadzorujejo obliko njihovega iskanja. Klasifikator naključnih gozdov ima na primer hiperparametre za najmanjši vzorec na list, največjo globino, najmanjše vzorce na razcepu, najmanjši delež teže za list in še približno 8.

Nastavitev hiperparametrov

Številne platforme za strojno učenje zdaj ponujajo samodejno uglaševanje hiperparametrov. V bistvu sistemu poveste, katere hiperparametre želite spremeniti, in morda kakšno metriko želite optimizirati, sistem pa te hiperparametre pometa v poljubnem številu zavojev. (Nastavitev hiperparametrov Google Cloud izvleče ustrezno metriko iz modela TensorFlow, zato je ni treba določiti.)

Obstajajo trije algoritmi iskanja za pometanje hiperparametrov: Bayesova optimizacija, iskanje po mreži in naključno iskanje. Bayesova optimizacija je ponavadi najučinkovitejša.

Mislili bi, da bi vam najboljši odgovor prilagodilo čim več hiperparametrov. Če pa ne uporabljate lastne osebne strojne opreme, je to lahko zelo drago. V vsakem primeru se donosnosti zmanjšujejo. Z izkušnjami boste odkrili, kateri hiperparametri so najbolj pomembni za vaše podatke in izbiro algoritmov.

Avtomatizirano strojno učenje

Ko že govorimo o izbiri algoritmov, obstaja samo en način, da veste, kateri algoritem ali sklop algoritmov vam bo dal najboljši model za vaše podatke, in sicer preizkusiti vse. Če preizkusite tudi vse možne normalizacije in izbire funkcij, vas čaka kombinatorna eksplozija.

Poskusiti vse, kar je nepraktično narediti ročno, so seveda ponudniki orodij za strojno učenje vložili veliko truda v sprostitev sistemov AutoML. Najboljši kombinirajo funkcijski inženiring s prečkanjem algoritmov in normalizacij. Uglaševanje hiperparametrov najboljšega modela ali modelov je pogosto prepuščeno pozneje. Inženiring funkcij je težko avtomatizirati in tega ne delajo vsi sistemi AutoML.

Če povzamemo, algoritmi strojnega učenja so le en del sestavljanke strojnega učenja. Poleg izbire algoritma (ročnega ali samodejnega) se boste morali ukvarjati z optimizatorji, čiščenjem podatkov, izbiro funkcij, normalizacijo lastnosti in (neobvezno) nastavitvijo hiperparametrov.

Ko boste vse to obdelali in izdelali model, ki deluje za vaše podatke, bo čas, da model uvedete in nato posodobite, ko se spremenijo pogoji. Upravljanje modelov strojnega učenja v proizvodnji pa je povsem druga konzerva črvov.

$config[zx-auto] not found$config[zx-overlay] not found