Programmēšana

Mašīnmācīšanās algoritmi ir izskaidroti

Mašīnmācība un padziļināta mācīšanās ir plaši aptverta un vēl plašāk pārprasta. Šajā rakstā es gribētu atkāpties un pamatprincipos izskaidrot gan mašīnmācīšanos, gan padziļinātu mācīšanos, apspriest dažus visizplatītākos mašīnmācīšanās algoritmus un paskaidrot, kā šie algoritmi ir saistīti ar citiem prediktīvo modeļu veidošanas uzdevumiem no vēsturiskajiem datiem.

Kas ir mašīnmācīšanās algoritmi?

Atgādināsim, ka mašīnmācīšanās ir metožu klase, lai automātiski izveidotu modeļus no datiem. Mašīnmācīšanās algoritmi ir mašīnmācīšanās dzinēji, tas nozīmē, ka tieši algoritmi padara datu kopu par modeli. Tas, kurš algoritms darbojas vislabāk (uzraudzīts, nepieskatīts, klasifikācija, regresija utt.), Ir atkarīgs no jūsu risinātās problēmas veida, pieejamajiem skaitļošanas resursiem un datu veida.

Kā darbojas mašīnmācīšanās

Parastie programmēšanas algoritmi vienkāršā veidā norāda datoram, kas jādara. Piemēram, šķirošanas algoritmi nepārkārtotus datus pārvērš par datiem, kas sakārtoti pēc dažiem kritērijiem, bieži vien skaitliskā vai alfabētiskā secībā vienā vai vairākos datu laukos.

Lineārās regresijas algoritmi atbilst taisneivai cita funkcija, kas pēc parametriem ir lineāra, piemēram, polinoms, skaitliskiem datiem, parasti veicot matricas inversijas, lai samazinātu kļūdu kvadrātā starp līniju un datiem. Kvadrāta kļūda tiek izmantota kā metrika, jo jums ir vienalga, vai regresijas līnija atrodas virs vai zem datu punktiem; jums rūp tikai attālums starp līniju un punktiem.

Nelineāras regresijas algoritmi, kas atbilst līknēm, kas pēc parametriem nav lineāri datiem, ir nedaudz sarežģītāki, jo atšķirībā no lineārās regresijas problēmām tos nevar atrisināt ar deterministisku metodi. Tā vietā nelineārās regresijas algoritmi īsteno sava veida iteratīvu minimizācijas procesu, bieži vien dažas variācijas par visstingrākās nolaišanās metodi.

Stāvākais nobrauciens pamatā aprēķina kvadrāta kļūdu un tās gradientu pie pašreizējām parametru vērtībām, izvēlas pakāpiena lielumu (aka mācīšanās ātrumu), seko gradienta virzienam “lejup no kalna” un pēc tam pārrēķina kvadrāta kļūdu un tās gradientu jaunajā parametru vērtības. Galu galā ar veiksmi process saplūst. Stāvākā nobrauciena varianti mēģina uzlabot konverģences īpašības.

Mašīnmācīšanās algoritmi ir pat mazāk vienkārši nekā nelineārā regresija, daļēji tāpēc, ka mašīnmācīšanās nepieļauj ierobežojumu, kas saistīts ar atbilstību noteiktai matemātiskai funkcijai, piemēram, polinomam. Ir divas galvenās problēmu kategorijas, kuras bieži atrisina mašīnmācīšanās: regresija un klasifikācija. Regresija attiecas uz skaitliskiem datiem (piemēram, kādi ir iespējamie ienākumi kādam ar norādītu adresi un profesiju?), Un klasifikācija attiecas uz skaitliskiem datiem (piemēram, vai pretendents neizpildīs šo aizdevumu?).

Prognozēšanas problēmas (piemēram, kāda būs Microsoft akciju atvēršanas cena rīt?) Ir regresijas problēmu apakškopa laika rindu datiem. Klasifikācijas problēmas dažreiz iedala binārā (jā vai nē) un daudzkategoriju (dzīvnieku, dārzeņu vai minerālu) problēmās.

Uzraudzīta mācīšanās pret bez uzraudzības

Neatkarīgi no šiem dalījumiem ir vēl divi mašīnmācīšanās algoritmu veidi: uzraudzīti un bez uzraudzības. In uzraudzīta mācīšanās, jūs sniedzat apmācības datu kopu ar atbildēm, piemēram, dzīvnieku attēlu kopu kopā ar dzīvnieku vārdiem. Šīs apmācības mērķis būtu modelis, kas varētu pareizi identificēt attēlu (par tāda veida dzīvnieku, kurš tika iekļauts apmācības komplektā), kuru tas iepriekš nebija redzējis.

In bez uzraudzības mācīšanās, algoritms pats iziet datus un mēģina iegūt nozīmīgus rezultātus. Rezultāts varētu būt, piemēram, datu punktu kopu kopa, kas varētu būt saistīta katrā klasterī. Tas darbojas labāk, ja kopas nepārklājas.

Apmācība un novērtēšana pārrauga mācību algoritmus pārvērš modeļos, optimizējot to parametrus, lai atrastu vērtību kopu, kas vislabāk atbilst jūsu datu patiesībai. Algoritmi to optimizētājiem bieži paļaujas uz visstiprākā nolaišanās variantiem, piemēram, uz stohastisko gradienta nolaišanos (SGD), kas būtībā ir visstingrākais nobrauciens, kas veikts vairākas reizes no nejaušinātām sākumpunktiem. Parasti SGD precizējumi pievieno faktorus, kas koriģē gradienta virzienu, pamatojoties uz impulsu, vai koriģē mācīšanās ātrumu, pamatojoties uz progresu no vienas datu caurlaides (ko sauc par laikmetu) uz nākamo.

Datu tīrīšana mašīnmācībai

Savvaļā nav tādas lietas kā tīri dati. Lai dati būtu noderīgi mašīnmācībai, tie ir agresīvi jāfiltrē. Piemēram, jūs vēlaties:

  1. Apskatiet datus un izslēdziet visas kolonnas, kurās trūkst daudz datu.
  2. Vēlreiz apskatiet datus un izvēlieties kolonnas, kuras vēlaties izmantot savai prognozēšanai. (To var atkārtot atkārtojot.)
  3. Izslēdziet visas rindas, kurās atlikušajās kolonnās joprojām trūkst datu.
  4. Labojiet acīmredzamas drukas kļūdas un apvienojiet līdzvērtīgas atbildes. Piemēram, ASV, ASV, ASV un Amerika būtu jāapvieno vienā kategorijā.
  5. Izslēdziet rindas, kuru dati ir ārpus diapazona. Piemēram, ja analizējat taksometru braucienus Ņujorkā, vēlēsities filtrēt rindas ar uzņemšanas vai nomešanas platuma un garuma grādiem, kas atrodas ārpus lielpilsētas rajona.

Jūs varat darīt daudz vairāk, taču tas būs atkarīgs no savāktajiem datiem. Tas var būt garlaicīgs, taču, ja mašīnmācības cauruļvadā iestatāt datu attīrīšanas soli, to varat mainīt un atkārtot pēc vēlēšanās.

Datu kodēšana un normalizēšana mašīnmācībai

Lai mašīnu klasifikācijai izmantotu kategoriskus datus, teksta etiķetes jākodē citā formā. Ir divi kopīgi kodējumi.

Viens ir etiķetes kodējums, kas nozīmē, ka katra teksta etiķetes vērtība tiek aizstāta ar skaitli. Otrs ir vienas karstās kodēšana, kas nozīmē, ka katra teksta etiķetes vērtība tiek pārvērsta kolonnā ar bināro vērtību (1 vai 0). Lielākajai daļai mašīnmācīšanās ietvaru ir funkcijas, kas pārveido jūsu vietā. Parasti priekšroka tiek dota vienreizējai kodēšanai, jo etiķešu kodēšana dažkārt var sajaukt mašīnmācīšanās algoritmu domājot, ka kodētā kolonna ir sakārtota.

Lai izmantotu skaitliskos datus mašīnas regresijai, parasti dati ir jā normalizē. Pretējā gadījumā skaitļi ar lielākiem diapazoniem var būt tendence dominēt Eiklida attālumā starp pazīmju vektori, to ietekmi var palielināt uz citu lauku rēķina, un visstingrākajai nolaišanās optimizācijai var būt grūtības saplūst. Ir vairāki veidi, kā normalizēt un standartizēt datus par ML, tostarp min-max normalizācija, vidējā normalizācija, standartizācija un mērogošana pēc vienības garuma. Šo procesu bieži sauc funkciju mērogošana.

Kādas ir mašīnmācīšanās funkcijas?

Tā kā iepriekšējā sadaļā es pieminēju iezīmju vektorus, man vajadzētu paskaidrot, kas tie ir. Pirmkārt, a iezīme ir novērojama fenomena individuāls izmērāms īpašums vai raksturojums. “Pazīmes” jēdziens ir saistīts ar skaidrojošā mainīgā jēdzienu, ko izmanto tādās statistikas metodēs kā lineārā regresija. Funkciju vektori apvieno visas vienas rindas pazīmes skaitliskā vektorā.

Daļa no iezīmju izvēles mākslas ir izvēlēties minimālo komplektu neatkarīgs mainīgie, kas izskaidro problēmu. Ja divi mainīgie ir ļoti korelēti, vai nu tie jāapvieno vienā pazīmē, vai arī viens ir jānomet. Dažreiz cilvēki veic galveno komponentu analīzi, lai korelētos mainīgos pārveidotu par lineāri nekorrelētu mainīgo kopumu.

Dažas no transformācijām, kuras cilvēki izmanto, lai izveidotu jaunas funkcijas vai samazinātu iezīmju vektoru dimensiju, ir vienkāršas. Piemēram, atņemt Dzimšanas gads no Nāves gads un jūs konstruējat Vecums pie nāves, kas ir galvenais neatkarīgais mainīgais mūža un mirstības analīzei. Citos gadījumos funkciju uzbūve var nebūt tik acīmredzama.

Parasti mašīnmācīšanās algoritmi

Ir desmitiem mašīnmācīšanās algoritmu, sākot no sarežģītības, sākot no lineārās regresijas un loģistiskās regresijas līdz dziļajiem neironu tīkliem un ansambļiem (citu modeļu kombinācijām). Tomēr daži no visbiežāk sastopamajiem algoritmiem ietver:

  • Lineārā regresija, aka mazāko kvadrātu regresija (skaitliskiem datiem)
  • Loģistiskā regresija (binārai klasifikācijai)
  • Lineārā diskriminantu analīze (vairāku kategoriju klasifikācijai)
  • Lēmumu koki (gan klasifikācijai, gan regresijai)
  • Naivie Beiji (gan klasifikācijai, gan regresijai)
  • K-tuvākie kaimiņi, jeb KNN (gan klasifikācijai, gan regresijai)
  • Mācīšanās vektoru kvantēšana, aka LVQ (gan klasifikācijai, gan regresijai)
  • Atbalsta Vector Machines, jeb SVM (binārai klasifikācijai)
  • Random Forests, “maisīšanas” ansambļa algoritma veids (gan klasifikācijai, gan regresijai)
  • Palielināšanas metodes, ieskaitot AdaBoost un XGBoost, ir ansambļa algoritmi, kas izveido virkni modeļu, kur katrs jauns modelis mēģina labot iepriekšējā modeļa kļūdas (gan klasifikācijai, gan regresijai)

Kur ir neironu tīkli un dziļi neironu tīkli, par kuriem mēs tik daudz dzirdam? Tie parasti ir intensīvi aprēķini, līdz tiem ir nepieciešami GPU vai cita specializēta aparatūra, tāpēc tos vajadzētu izmantot tikai specializētām problēmām, piemēram, attēlu klasifikācijai un runas atpazīšanai, kas nav labi piemēroti vienkāršākiem algoritmiem. Ņemiet vērā, ka “dziļi” nozīmē, ka neironu tīklā ir daudz slēptu slāņu.

Plašāku informāciju par neironu tīkliem un dziļām mācībām skatiet rakstā “Ko patiesībā nozīmē dziļa mācīšanās”.

Mašīnmācīšanās algoritmu hiperparametri

Mašīnmācīšanās algoritmi trenējas uz datiem, lai atrastu labāko svaru kopu katram neatkarīgajam mainīgajam, kas ietekmē paredzamo vērtību vai klasi. Pašiem algoritmiem ir mainīgie, kurus sauc par hiperparametriem. Pretstatā parametriem tos sauc par hiperparametriem, jo ​​tie kontrolē algoritma darbību, nevis nosakāmos svarus.

Vissvarīgākais hiperparametrs bieži ir mācīšanās ātrums, kas nosaka pakāpes lielumu, kas tiek izmantots, atrodot nākamo svaru komplektu, kuru izmēģināt, veicot optimizāciju. Ja mācīšanās ātrums ir pārāk augsts, gradienta nolaišanās var ātri saplūst plato vai zem optimāla punkta. Ja mācīšanās ātrums ir pārāk zems, gradienta nolaišanās var apstāties un nekad pilnībā nesaplūst.

Daudzi citi izplatīti hiperparametri ir atkarīgi no izmantotajiem algoritmiem. Lielākajai daļai algoritmu ir apstāšanās parametri, piemēram, maksimālais laikmetu skaits vai maksimālais laiks, lai palaistu, vai minimālais uzlabojums no laikmeta uz laikmetu. Konkrētiem algoritmiem ir hiperparametri, kas kontrolē meklēšanas formu. Piemēram, nejaušā meža klasifikatorā ir hiperparametri minimālajiem paraugu daudzumiem vienā lapā, maksimālais dziļums, minimālais paraugu skaits sadalījumā, minimālā svara daļa lapai un vēl aptuveni 8.

Hiperparametru regulēšana

Vairākas ražošanas mašīnmācīšanās platformas tagad piedāvā automātisku hiperparametru regulēšanu. Būtībā jūs sakāt sistēmai, kādus hiperparametrus vēlaties mainīt, un, iespējams, kādu metriku vēlaties optimizēt, un sistēma šos hiperparametrus slauka tik daudz, cik atļauts. (Google mākoņa hiperparametru regulēšana iegūst atbilstošu metriku no modeļa TensorFlow, tāpēc jums tas nav jānorāda.)

Hiperparametru slaucīšanai ir trīs meklēšanas algoritmi: Bajesa optimizācija, meklēšana tīklā un nejauša meklēšana. Bajesa optimizācija mēdz būt visefektīvākā.

Jūs domājat, ka pēc iespējas vairāk hiperparametru noskaņošana sniegs jums vislabāko atbildi. Tomēr, ja vien jūs nedarbojaties ar savu personīgo aparatūru, tas varētu būt ļoti dārgi. Jebkurā gadījumā peļņa samazinās. Izmantojot pieredzi, jūs atklāsiet, kuri hiperparametri ir vissvarīgākie jūsu datiem un algoritmu izvēlei.

Automatizēta mašīnmācīšanās

Runājot par algoritmu izvēli, ir tikai viens veids, kā uzzināt, kurš algoritms vai algoritmu kopums jums sniegs vislabāko datu modeli, un tas ir, lai tos visus izmēģinātu. Ja izmēģināt arī visas iespējamās normalizācijas un funkciju izvēles iespējas, jūs sastopaties ar kombinatorisku sprādzienu.

Visu izmēģināt nav praktiski manuāli, tāpēc, protams, mašīnmācīšanās rīku nodrošinātāji ir pielikuši daudz pūļu, lai atbrīvotu AutoML sistēmas. Labākie apvieno funkciju inženieriju ar algoritmu un normalizēšanas pārslaukšanu. Labākā modeļa vai modeļu hiperparametru iestatīšana bieži tiek atstāta vēlāk. Funkciju inženierija ir sarežģīta automatizējama problēma, un ne visas AutoML sistēmas to apstrādā.

Kopumā mašīnmācīšanās algoritmi ir tikai viens no mašīnmācīšanās mīklu. Papildus algoritmu izvēlei (manuāla vai automātiska) jums būs jārisina arī optimizētāji, datu tīrīšana, funkciju izvēle, funkciju normalizēšana un (pēc izvēles) hiperparametru pielāgošana.

Kad esat visu paveicis un izveidojis modeli, kas darbojas jūsu datiem, būs laiks modeli izvietot un pēc tam atjaunināt, mainoties apstākļiem. Mašīnmācīšanās modeļu vadīšana ražošanā tomēr ir pavisam cita tārpu kārba.

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