Ohjelmointi

Koneoppimisalgoritmit selitetty

Koneoppiminen ja syvällinen oppiminen on otettu laajasti huomioon, ja vielä laajemmin väärinymmärrettyinä. Tässä artikkelissa haluaisin vetäytyä taaksepäin ja selittää sekä koneoppimisen että syvällisen oppimisen peruskäsitteillä, keskustella yleisimmistä koneoppimisalgoritmeista ja selittää kuinka nämä algoritmit liittyvät muihin ennustavien mallien luomisen palapelin paloihin historiallisten tietojen perusteella.

Mitä ovat koneoppimisalgoritmit?

Palautetaan mieleen, että koneoppiminen on luokka menetelmiä mallien automaattiseen luomiseen datasta. Koneoppimisalgoritmit ovat koneoppimisen moottoreita, eli algoritmit tekevät tietojoukosta mallin. Mikä algoritmi toimii parhaiten (valvottu, valvomaton, luokittelu, regressio jne.), Riippuu ratkaisemasi ongelman tyypistä, käytettävissä olevista laskentaresursseista ja tietojen luonteesta.

Kuinka koneoppiminen toimii

Tavalliset ohjelmointialgoritmit kertovat tietokoneelle, mitä tehdä suoraviivaisella tavalla. Esimerkiksi lajittelualgoritmit muuttavat järjestämättömät tiedot tietyiksi kriteereiksi järjestetyiksi tiedoiksi, usein yhden tai useamman kentän numeerisessa tai aakkosjärjestyksessä.

Lineaariset regressioalgoritmit sopivat suoraantai jokin muu funktio, jonka parametrit ovat lineaarisia, kuten polynomi, numeeriseen dataan, tyypillisesti suorittamalla matriisikääntöjä viivan ja datan välisen neliövirheen minimoimiseksi. Neliövirhettä käytetään mittarina, koska et välitä, onko regressioviiva datapisteiden ylä- tai alapuolella; välität vain viivan ja pisteiden välisestä etäisyydestä.

Epälineaariset regressioalgoritmit, jotka sopivat käyriin, jotka eivät ole parametreissaan lineaarisia tietoihin, ovat hieman monimutkaisempia, koska toisin kuin lineaariset regressio-ongelmat, niitä ei voida ratkaista deterministisellä menetelmällä. Sen sijaan epälineaariset regressioalgoritmit toteuttavat jonkinlaisen iteratiivisen minimointiprosessin, usein jonkin verran vaihtelua jyrkimmän laskeutumisen menetelmässä.

Jyrkkä lasku laskee pohjimmiltaan neliövirheen ja sen kaltevuuden nykyisillä parametriarvoilla, valitsee askeleen koon (eli oppimisnopeuden), seuraa kaltevuuden suuntaa "mäkeä alas" ja laskee sitten neliövirheen ja sen kaltevuuden uudessa parametriarvot. Lopulta, onneksi, prosessi yhtyy. Jyrkimmän laskeutumisen variantit yrittävät parantaa lähentymisominaisuuksia.

Koneoppimisen algoritmit ovat jopa vähemmän suoraviivaisia ​​kuin epälineaarinen regressio, osittain siksi, että koneoppiminen luopuu tietyn matemaattisen funktion, kuten polynomin, sovittamisen rajoituksesta. On olemassa kaksi pääryhmää ongelmia, jotka usein ratkaistaan ​​koneoppimisen avulla: regressio ja luokittelu. Regressio koskee numeerisia tietoja (esim. Mikä on todennäköinen tulo jollekin, jolla on tietty osoite ja ammatti?) Ja luokitus ei-numeerisiin tietoihin (esim. Laiminlyökö hakija tämän lainan?).

Ennakointiongelmat (esim. Mikä on Microsoftin osakkeiden avaushinta huomenna?) Ovat osa aikasarjatietojen regressio-ongelmia. Luokitteluongelmat jaetaan joskus binäärisiin (kyllä ​​tai ei) ja moniluokkaisiin (eläin-, vihannes- tai mineraaliongelmiin).

Ohjattu oppiminen vs. valvomaton oppiminen

Näistä jakoista riippumatta on olemassa vielä kaksi erilaista koneoppimisalgoritmia: valvottu ja valvomaton. Sisään ohjattu oppiminen, annat koulutuksen tietojoukon, johon sisältyy vastauksia, kuten joukko kuvia eläimistä sekä eläinten nimet. Koulutuksen tavoitteena olisi malli, joka pystyi tunnistamaan oikein kuvan (eräänlaisesta eläimestä, joka sisältyi koulutussarjaan), jota se ei ollut aiemmin nähnyt.

Sisään valvomaton oppiminen, algoritmi käy läpi tiedot itse ja yrittää saada aikaan mielekkäitä tuloksia. Tuloksena voi olla esimerkiksi joukko datapisteiden klustereita, jotka voivat olla yhteydessä kussakin klusterissa. Se toimii paremmin, kun klusterit eivät ole päällekkäisiä.

Koulutus ja arviointi muuttavat valvotut oppimisalgoritmit malleiksi optimoimalla niiden parametrit löytääksesi arvojoukon, joka parhaiten vastaa tietojesi perustotuutta. Algoritmit luottavat optimoijiinsa usein jyrkimmän laskeutumisen muunnoksiin, esimerkiksi stokastiseen gradientin laskeutumiseen (SGD), joka on olennaisesti jyrkempi lasku, joka suoritetaan useita kertoja satunnaistetuista lähtökohdista. SGD: n yleiset tarkennukset lisäävät tekijöitä, jotka korjaavat kaltevuuden suunnan vauhdin perusteella tai säätävät oppimisnopeutta tietojen kulkemisen perusteella (kutsutaan aikakaudeksi) seuraavaan.

Tietojen puhdistus koneoppimista varten

Ei ole olemassa sellaista asiaa kuin puhdasta tietoa luonnossa. Jotta tiedoista olisi hyötyä koneoppimisessa, ne on suodatettava aggressiivisesti. Haluat esimerkiksi:

  1. Tarkastele tietoja ja sulje pois kaikki sarakkeet, joissa on paljon puuttuvia tietoja.
  2. Katso tietoja uudelleen ja valitse sarakkeet, joita haluat käyttää ennusteessasi. (Tämä on asia, jota haluat ehkä muuttaa, kun toistat.)
  3. Sulje pois kaikki rivit, joista edelleen puuttuu tietoja jäljellä olevista sarakkeista.
  4. Korjaa ilmeiset kirjoitusvirheet ja yhdistä vastaavat vastaukset. Esimerkiksi Yhdysvallat, Yhdysvallat, Yhdysvallat ja Amerikka tulisi yhdistää yhteen luokkaan.
  5. Sulje pois rivit, joiden tietoja on alueen ulkopuolella. Jos esimerkiksi analysoit taksimatkoja New York Cityssä, sinun kannattaa suodattaa pois rivit, joissa on nouto- tai pudotusleveysasteita ja -asteita, jotka ovat pääkaupunkiseudun raja-alueen ulkopuolella.

Voit tehdä paljon enemmän, mutta se riippuu kerätyistä tiedoista. Tämä voi olla työlästä, mutta jos määrität tiedonsiirtovaiheen koneoppimisputkellesi, voit muokata sitä ja toistaa sen haluamallasi tavalla.

Tietojen koodaus ja normalisointi koneoppimista varten

Jos haluat käyttää kategorisia tietoja koneiden luokittelussa, sinun on koodattava tekstitarrat toiseen muotoon. Koodauksia on kaksi.

Yksi on tarran koodaus, mikä tarkoittaa, että jokainen tekstitarran arvo korvataan numerolla. Toinen on yksi kuuma koodaus, mikä tarkoittaa, että jokainen tekstitarra-arvo muutetaan sarakkeeksi, jossa on binääriarvo (1 tai 0). Useimmissa koneoppimisen puitteissa on toimintoja, jotka tekevät muunnoksen puolestasi. Yleensä yksi kuuma koodaus on edullinen, koska tarrojen koodaus voi joskus sekoittaa koneoppimisalgoritmin ajattelemaan, että koodattu sarake on järjestetty.

Jos haluat käyttää numeerista dataa koneen regressiossa, sinun on yleensä normalisoitava tiedot. Muussa tapauksessa suurempien alueiden luvut saattavat hallita euklidista etäisyyttä ominaisuusvektorit, niiden vaikutuksia voidaan suurentaa muiden kenttien kustannuksella, ja jyrkimmällä laskeutumisoptimoinnilla voi olla vaikeuksia lähentyä. ML: n normalisointiin ja standardointiin on useita tapoja, mukaan lukien min-max-normalisointi, keskimääräinen normalisointi, standardointi ja skaalaus yksikön pituudelle. Tätä prosessia kutsutaan usein ominaisuuksien skaalaus.

Mitä koneoppimisominaisuudet ovat?

Koska mainitsin ominaisuusvektorit edellisessä osassa, minun pitäisi selittää, mitä ne ovat. Ensinnäkin a ominaisuus on havaittavan ilmiön yksilöllinen mitattava ominaisuus tai ominaisuus. "Ominaisuuden" käsite liittyy selittävän muuttujan käsitteeseen, jota käytetään tilastollisissa tekniikoissa, kuten lineaarisessa regressiossa. Ominaisuusvektorit yhdistävät kaikki yhden rivin ominaisuudet numeeriseksi vektoriksi.

Osa ominaisuuksien valitsemisesta on valita vähimmäisjoukko riippumaton muuttujat, jotka selittävät ongelman. Jos kaksi muuttujaa korreloi voimakkaasti, ne on joko yhdistettävä yhdeksi ominaisuudeksi tai yksi on hylättävä. Joskus ihmiset suorittavat pääkomponenttianalyysin muuntamaan korreloivat muuttujat joukoksi lineaarisesti korreloimattomia muuttujia.

Jotkut muunnoksista, joita ihmiset käyttävät uusien ominaisuuksien rakentamiseen tai piirteiden vektorien ulottuvuuden vähentämiseen, ovat yksinkertaisia. Esimerkiksi vähennä Syntymävuosi alkaen Kuoleman vuosi ja sinä rakennat Ikä kuolemassa, joka on tärkein riippumaton muuttuja elinikä- ja kuolleisuusanalyysissä. Muissa tapauksissa ominaisuusrakenne ei ehkä ole niin ilmeinen.

Yleiset koneoppimisalgoritmit

On olemassa kymmeniä koneoppimisalgoritmeja, jotka vaihtelevat monimutkaisuudesta lineaarisesta regressiosta ja logistisesta regressiosta syviin hermoverkoihin ja kokonaisuuksiin (muiden mallien yhdistelmät). Joitakin yleisimpiä algoritmeja ovat kuitenkin:

  • Lineaarinen regressio, aka pienimmän neliösumman regressio (numeerisille tiedoille)
  • Logistinen regressio (binääriluokitusta varten)
  • Lineaarinen erotteluanalyysi (usean luokan luokittelu)
  • Päätöspuut (sekä luokitteluun että regressioon)
  • Naiviset Bayes (sekä luokitteluun että regressioon)
  • K-lähimmät naapurit, alias KNN (sekä luokitteluun että regressioon)
  • Opi vektorikvantisointia, alias LVQ (sekä luokitteluun että regressioon)
  • Support Vector Machines, alias SVM (binääriluokitusta varten)
  • Random Forests, eräänlainen "säkitys" kokonaisuusalgoritmi (sekä luokitteluun että regressioon)
  • Tehostamismenetelmät, mukaan lukien AdaBoost ja XGBoost, ovat yhdistelmäalgoritmeja, jotka luovat sarjan malleja, joissa kukin uusi malli yrittää korjata edellisen mallin virheet (sekä luokittelun että regression osalta).

Missä ovat hermoverkot ja syvät hermoverkot, joista kuulemme niin paljon? Niillä on taipumus olla paljon laskutoimitusta siinä määrin, että tarvitsevat grafiikkasuoritimia tai muita erikoistuneita laitteita, joten sinun tulee käyttää niitä vain erikoistuneisiin ongelmiin, kuten kuvien luokitteluun ja puheen tunnistamiseen, jotka eivät sovi hyvin yksinkertaisempiin algoritmeihin. Huomaa, että "syvä" tarkoittaa, että hermoverkossa on monia piilotettuja kerroksia.

Lisätietoja hermoverkoista ja syvällisestä oppimisesta, katso ”Mitä syvä oppiminen todella tarkoittaa”.

Hyperparametrit koneoppimisalgoritmeille

Koneoppimisalgoritmit harjoittavat dataa saadakseen parhaan painopaketin jokaiselle itsenäiselle muuttujalle, joka vaikuttaa ennustettuun arvoon tai luokkaan. Algoritmeilla itsessään on muuttujia, joita kutsutaan hyperparametreiksi. Niitä kutsutaan hyperparametreiksi, toisin kuin parametreiksi, koska ne ohjaavat algoritmin toimintaa eikä määritettäviä painoja.

Tärkein hyperparametri on usein oppimisnopeus, joka määrittää vaiheiden koon käytettäessä seuraavaa optimointia varten yritettävää painosarjaa. Jos oppimisnopeus on liian korkea, kaltevuuslasku voi lähentyä nopeasti tasangolla tai epäoptimaalisella pisteellä. Jos oppimisnopeus on liian alhainen, kaltevuuslasku voi pysähtyä eikä koskaan lähestyä täysin.

Monet muut yleiset hyperparametrit riippuvat käytetyistä algoritmeista. Suurimmalla osalla algoritmeista on pysäytysparametreja, kuten aikakausien enimmäismäärä tai enimmäisaika tai vähiten parannuksia aikakausista toiseen. Tiettyillä algoritmeilla on hyperparametreja, jotka ohjaavat haun muotoa. Esimerkiksi satunnaisessa metsäluokittelussa on hyperparametrit vähimmäisnäytteille lehtiä kohden, enimmäissyvyydelle, vähimmäisnäytteille halkeamalla, pienimmille paino-osuuksille lehdelle ja noin kahdeksalle muulle.

Hyperparametrien viritys

Useat tuotantokoneiden oppimisalustat tarjoavat nyt automaattisen hyperparametrien virityksen. Pohjimmiltaan kerrot järjestelmälle, mitä hyperparametreja haluat muuttaa, ja mahdollisesti mitä mittareita haluat optimoida, ja järjestelmä pyyhkäisee nämä hyperparametrit niin monta kertaa kuin sallit. (Google Cloud -parametriviritys poimii sopivan muuttujan TensorFlow-mallista, joten sinun ei tarvitse määrittää sitä.)

Hyperparametreille on kolme hakualgoritmia: Bayesin optimointi, ruudukkohaku ja satunnaishaku. Bayesin optimointi on yleensä tehokkainta.

Luulisi, että mahdollisimman monien hyperparametrien virittäminen antaisi sinulle parhaan vastauksen. Ellet kuitenkaan käytä omaa henkilökohtaista laitteistoa, se voi olla erittäin kallista. Joka tapauksessa tuotot vähenevät. Kokemuksen avulla huomaat, mitkä hyperparametrit ovat tärkeimmät tietojesi ja algoritmivalintasi kannalta.

Automatisoitu koneoppiminen

Algoritmien valinnasta puhuttaessa on vain yksi tapa tietää, mikä algoritmi tai algoritmien yhdistelmä antaa sinulle parhaan mallin tiedoillesi, ja se on kokeilla kaikkia. Jos kokeilet myös kaikkia mahdollisia normalisointeja ja ominaisuuksien valintoja, kohtaat yhdistelmäräjähdyksen.

Kaikkien kokeileminen on epäkäytännöllistä tehdä manuaalisesti, joten tietenkin koneoppimisen työkalujen tarjoajat ovat panostaneet paljon AutoML-järjestelmien julkaisemiseen. Parhaat yhdistävät ominaisuuksien suunnittelun pyyhkäisemällä algoritmeja ja normalisointeja. Parhaan mallin tai mallien hyperparametrien viritys jätetään usein myöhemmäksi. Ominaisuuksien suunnittelu on kuitenkin vaikea automatisoida, eivätkä kaikki AutoML-järjestelmät käsittele sitä.

Yhteenvetona voidaan todeta, että koneoppimisalgoritmit ovat vain yksi osa koneoppimispalapelistä. Algoritmivalinnan (manuaalinen tai automaattinen) lisäksi sinun on käsiteltävä optimoijia, tietojen puhdistusta, ominaisuuksien valintaa, ominaisuuksien normalisointia ja (valinnaisesti) hyperparametrien viritystä.

Kun olet käsitellyt kaiken tämän ja rakentanut tietojesi kannalta sopivan mallin, on aika ottaa malli käyttöön ja päivittää se olosuhteiden muuttuessa. Koneoppimismallien hallinta tuotannossa on kuitenkin aivan toinen matoja.

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