Programavimas

Mašininio mokymosi algoritmai paaiškinti

Mašinų mokymasis ir gilus mokymasis buvo plačiai aprėpti ir dar plačiau neteisingai suprantami. Šiame straipsnyje norėčiau atsitraukti ir paaiškinti mašininį mokymąsi ir gilųjį mokymąsi iš esmės, aptarti keletą dažniausiai naudojamų mašininio mokymosi algoritmų ir paaiškinti, kaip šie algoritmai yra susiję su kitais predikcinių modelių kūrimo galvosūkio elementais. iš istorinių duomenų.

Kas yra mašininio mokymosi algoritmai?

Prisiminkime, kad mašininis mokymasis yra metodų klasė, skirta automatiškai kurti modelius iš duomenų. Mašininio mokymosi algoritmai yra mašininio mokymosi varikliai, vadinasi, būtent algoritmai paverčia duomenų rinkinį modeliu. Kuris algoritmas veikia geriausiai (prižiūrimas, neprižiūrimas, klasifikavimas, regresija ir kt.), Priklauso nuo jūsų sprendžiamos problemos rūšies, turimų skaičiavimo išteklių ir duomenų pobūdžio.

Kaip veikia mašininis mokymasis

Įprasti programavimo algoritmai tiesiai šviesiai nurodo kompiuteriui, ką daryti. Pvz., Rūšiavimo algoritmai nesutvarkytus duomenis paverčia duomenimis, išdėstytais pagal tam tikrus kriterijus, dažnai vieno ar daugiau duomenų laukų skaičių arba abėcėlės tvarka.

Tiesinės regresijos algoritmai tinka tiesei, arba kita funkcija, kuri yra tiesinė savo parametrais, pvz., daugianario, prie skaitmeninių duomenų, paprastai atliekant matricos inversijas, kad būtų sumažinta paklaida tarp linijos ir duomenų. Kvadratinė klaida naudojama kaip metrika, nes jums nesvarbu, ar regresijos linija yra virš, ar žemiau duomenų taškų; jums rūpi tik atstumas tarp linijos ir taškų.

Netiesiniai regresijos algoritmai, kurios pagal parametrus nėra tiesinės kreivės duomenims, yra šiek tiek sudėtingesni, nes, skirtingai nei tiesinės regresijos uždaviniai, jų negalima išspręsti deterministiniu metodu. Vietoj to, netiesiniai regresijos algoritmai įgyvendina tam tikrą iteracinį minimizavimo procesą, dažnai kai kuriuos didžiausio nusileidimo metodo variantus.

Kietas nusileidimas iš esmės apskaičiuoja kvadrato paklaidą ir jos gradientą pagal dabartines parametro vertes, pasirenka žingsnio dydį (dar žinomą kaip mokymosi greitis), seka nuolydžio kryptį „žemyn nuo kalno“ ir tada apskaičiuoja kvadrato paklaidą ir jos gradientą naujame parametrų reikšmės. Galų gale, pasisekus, procesas suartėja. Stačiausio nusileidimo variantai bando pagerinti konvergencijos savybes.

Mašininio mokymosi algoritmai yra dar mažiau tiesūs nei netiesinė regresija, iš dalies dėl to, kad mašininis mokymasis neapima apribojimų, susijusių su pritaikymu konkrečiai matematinei funkcijai, tokiai kaip daugianaris. Yra dvi pagrindinės problemų kategorijos, kurias dažnai išsprendžia mašininis mokymasis: regresija ir klasifikacija. Regresija taikoma skaitiniams duomenims (pvz., Kokios yra tikėtinos pajamos tam asmeniui, turinčiam nurodytą adresą ir profesiją?), O klasifikacija taikoma ne skaitmeniniams duomenims (pvz., Ar pareiškėjas nevykdys šios paskolos?).

Nuspėjamos problemos (pvz., Kokia rytoj bus „Microsoft“ akcijų pradinė kaina?) Yra laiko eilučių duomenų regresijos problemų pogrupis. Klasifikavimo problemos kartais skirstomos į dvejetaines (taip arba ne) ir daugialypes (gyvūnų, daržovių ar mineralų) problemas.

Prižiūrėtas mokymasis, palyginti su neprižiūrimu mokymu

Nepriklausomai nuo šių skirstymų, yra dar du mašininio mokymosi algoritmų tipai: prižiūrimi ir neprižiūrimi. Į prižiūrimas mokymasis, pateikiate mokymo duomenų rinkinį su atsakymais, pvz., gyvūnų nuotraukų rinkinį kartu su gyvūnų pavadinimais. Tų mokymų tikslas būtų modelis, kuris galėtų teisingai identifikuoti anksčiau nematytą paveikslėlį (apie gyvūną, kuris buvo įtrauktas į dresūros rinkinį).

Į neprižiūrimas mokymasis, algoritmas pats peržiūri duomenis ir bando pateikti reikšmingus rezultatus. Rezultatas gali būti, pavyzdžiui, duomenų taškų grupių rinkinys, kuris gali būti susijęs kiekviename klasteryje. Tai veikia geriau, kai klasteriai nesutampa.

Mokymai ir vertinimas paverčia prižiūrimus mokymosi algoritmus modeliais, optimizuodami jų parametrus, kad surastų verčių rinkinį, kuris geriausiai atitiktų jūsų duomenų teisingumą. Algoritmai savo optimizatoriams dažnai remiasi stačiausio nusileidimo variantais, pavyzdžiui, stochastiniu gradientiniu nusileidimu (SGD), kuris yra iš esmės stačiausias nusileidimas, atliekamas kelis kartus iš atsitiktinių imčių pradinių taškų. Įprasti SGD patobulinimai prideda veiksnių, kurie koreguoja gradiento kryptį pagal pagreitį arba koreguoja mokymosi greitį pagal pažangą nuo vieno duomenų perėjimo (vadinamas epocha) prie kito.

Duomenų valymas mašininiam mokymuisi

Gamtoje nėra švarių duomenų. Kad duomenys būtų naudingi mokymuisi mašinoje, jie turi būti agresyviai filtruojami. Pvz., Norėsite:

  1. Peržiūrėkite duomenis ir išskirkite stulpelius, kuriuose trūksta daug duomenų.
  2. Dar kartą peržiūrėkite duomenis ir pasirinkite stulpelius, kuriuos norite naudoti numatydami. (Tai galite pakeisti, kai kartojate.)
  3. Išskirkite visas eilutes, kuriose vis dar trūksta duomenų likusiuose stulpeliuose.
  4. Ištaisykite akivaizdžias klaidas ir sujunkite lygiaverčius atsakymus. Pavyzdžiui, JAV, JAV, JAV ir Amerika turėtų būti sujungtos į vieną kategoriją.
  5. Išskirkite eilutes, kurių duomenys yra už diapazono ribų. Pavyzdžiui, jei analizuojate keliones taksi Niujorke, norėsite išfiltruoti eiles su paėmimo arba atsisakymo platumomis ir ilgumomis, esančiomis už metropolinės zonos ribų.

Galite padaryti daug daugiau, bet tai priklausys nuo surinktų duomenų. Tai gali būti varginantis, tačiau jei nustatysite duomenų valymo veiksmą mašininio mokymosi procese, galėsite jį modifikuoti ir pakartoti savo nuožiūra.

Duomenų kodavimas ir normalizavimas mokymuisi mašinoje

Norėdami klasikinius duomenis naudoti mašinų klasifikacijai, turite užkoduoti teksto etiketes į kitą formą. Yra du įprasti kodavimai.

Vienas yra etikečių kodavimas, o tai reiškia, kad kiekviena teksto etiketės vertė yra pakeista skaičiumi. Kitas yra vienkartinis kodavimas, o tai reiškia, kad kiekviena teksto etiketės vertė yra paversta stulpeliu, kuriame yra dvejetainė reikšmė (1 arba 0). Daugelis mašininio mokymosi sistemų turi funkcijas, kurios konversiją atlieka už jus. Paprastai pirmenybė teikiama vienkartiniam kodavimui, nes etikečių kodavimas kartais gali suklaidinti mašininio mokymosi algoritmą galvojant, kad užkoduotas stulpelis yra užsakytas.

Norėdami naudoti skaitinius duomenis mašinos regresijai, paprastai turite normalizuoti duomenis. Kitu atveju skaičiai, turintys didesnį diapazoną, gali dominuoti euklido atstumu tarp jų požymių vektoriai, jų poveikį galima padidinti kitų laukų sąskaita, o stačiausiam nusileidimo optimizavimui gali būti sunku suartėti. Yra keletas būdų, kaip normalizuoti ir standartizuoti duomenis apie ML, įskaitant min-max normalizavimą, vidutinį normalizavimą, standartizavimą ir mastelio keitimą pagal vieneto ilgį. Šis procesas dažnai vadinamas funkcijų mastelis.

Kokios yra mašininio mokymosi funkcijos?

Kadangi ankstesniame skyriuje minėjau funkcijų vektorius, turėčiau paaiškinti, kokie jie yra. Visų pirma, a funkcija yra individuali išmatuojama stebimo reiškinio savybė ar charakteristika. „Ypatybės“ sąvoka yra susijusi su aiškinamojo kintamojo sąvoka, kuri naudojama statistikos metoduose, pavyzdžiui, tiesinėje regresijoje. Funkcijų vektoriai sujungia visas vienos eilutės ypatybes į skaitinį vektorių.

Dalis meno pasirinkimo funkcijų yra pasirinkti minimalų rinkinį nepriklausomas kintamieji, paaiškinantys problemą. Jei du kintamieji yra labai susiję, juos reikia arba sujungti į vieną požymį, arba vieną atsisakyti. Kartais žmonės atlieka pagrindinio komponento analizę, kad koreliuojančius kintamuosius paverstų tiesiškai nekoreliuojamų kintamųjų rinkiniu.

Kai kurios transformacijos, kurias žmonės naudoja kurdami naujas ypatybes arba mažindami ypatybių vektorių matmenis, yra paprasti. Pavyzdžiui, atimkite Gimimo metai nuo Mirties metai ir tu konstruoji Amžius mirties metu, kuris yra pagrindinis nepriklausomas kintamasis viso gyvenimo ir mirtingumo analizei. Kitais atvejais funkcijų konstrukcija gali būti ne taip akivaizdu.

Bendrieji mašininio mokymosi algoritmai

Yra dešimtys mašininio mokymosi algoritmų, kurių sudėtingumas svyruoja nuo linijinės regresijos ir logistinės regresijos iki gilių neuroninių tinklų ir ansamblių (kitų modelių deriniai). Tačiau kai kurie iš labiausiai paplitusių algoritmų apima:

  • Linijinė regresija, dar vadinama mažiausių kvadratų regresija (skaitiniams duomenims)
  • Logistinė regresija (binarinei klasifikacijai)
  • Linijinė diskriminantų analizė (kelių kategorijų klasifikacijai)
  • Sprendimų medžiai (klasifikacijai ir regresijai)
  • Naivieji Bayes (tiek klasifikacijai, tiek regresijai)
  • K-artimiausi kaimynai, dar žinomi kaip KNN (tiek klasifikacijai, tiek regresijai)
  • Mokymasis vektorinis kvantavimas, dar žinomas kaip LVQ (klasifikacijai ir regresijai)
  • Palaikykite „Vector Machines“, dar žinomą kaip SVM (dvejetainiai klasifikacijai)
  • „Random Forests“ - „maišelių“ ansamblio algoritmo tipas (klasifikavimui ir regresijai)
  • „Boosting“ metodai, įskaitant „AdaBoost“ ir „XGBoost“, yra ansamblių algoritmai, kurie sukuria modelių seriją, kurioje kiekvienas naujas modelis bando ištaisyti ankstesnio modelio klaidas (tiek klasifikacijai, tiek regresijai).

Kur yra neuroniniai tinklai ir gilieji neuroniniai tinklai, apie kuriuos tiek daug girdime? Jie paprastai reikalauja daug skaičiavimų, kol reikia GPU ar kitos specializuotos aparatūros, todėl juos turėtumėte naudoti tik spręsdami specializuotas problemas, tokias kaip vaizdo klasifikavimas ir kalbos atpažinimas, kurios nėra gerai pritaikytos paprastesniems algoritmams. Atkreipkite dėmesį, kad „giliai“ reiškia, kad neuroniniame tinkle yra daug paslėptų sluoksnių.

Norėdami daugiau sužinoti apie neuroninius tinklus ir gilųjį mokymąsi, žr.

Mašininio mokymosi algoritmų hiperparametrai

Mašininio mokymosi algoritmai mokosi duomenų, kad surastų geriausią kiekvieno nepriklausomo kintamojo svorio rinkinį, kuris turi įtakos numatomai vertei ar klasei. Patys algoritmai turi kintamuosius, vadinamus hiperparametrais. Jie vadinami hiperparametrais, o ne parametrais, nes jie kontroliuoja algoritmo veikimą, o ne nustatomus svorius.

Svarbiausias hiperparametras dažnai yra mokymosi greitis, kuris nustato žingsnio dydį, kuris naudojamas ieškant kito svorio rinkinio, kurį reikia išbandyti optimizuojant. Jei mokymosi greitis yra per didelis, gradiento nusileidimas gali greitai susilyginti plokščiakalnyje ar neoptimaliame taške. Jei mokymosi greitis yra per mažas, gradientinis nusileidimas gali strigti ir niekada visiškai nesusilieti.

Daugelis kitų įprastų hiperparametrų priklauso nuo naudojamų algoritmų. Dauguma algoritmų turi stabdymo parametrus, tokius kaip maksimalus epochų skaičius arba maksimalus laikas paleisti, arba minimalus pagerėjimas epochoje į epochą. Konkretūs algoritmai turi hiperparametrus, kurie valdo jų paieškos formą. Pavyzdžiui, atsitiktinių miškų klasifikatoriuje yra hiperparametrai, skirti mažiausiam lapo mėginiui, maksimaliam gyliui, mažiausiam mėginiui padalijus, mažiausia lapo svorio daliai ir dar apie 8.

Hiperparametrų derinimas

Keletas gamybos mašinų mokymosi platformų dabar siūlo automatinį hiperparametrų derinimą. Iš esmės jūs nurodote sistemai, kokius hiperparametrus norite keisti, ir galbūt kokią metriką norite optimizuoti, o sistema šiuos hiperparametrus nušluoja tiek, kiek leidžiate. („Google Cloud“ hiperparametrų derinimas ištraukia atitinkamą metriką iš „TensorFlow“ modelio, todėl jums nereikia jos nurodyti.)

Yra trys paieškos algoritmai, skirti šluoti hiperparametrus: Bayeso optimizavimas, tinklelio paieška ir atsitiktinė paieška. Bajeso optimizavimas paprastai būna efektyviausias.

Manytumėte, kad sureguliavę kuo daugiau hiperparametrų, gausite geriausią atsakymą. Tačiau nebent jūs naudojatės savo asmenine aparatine įranga, tai gali būti labai brangu. Bet kokiu atveju grąža mažėja. Turėdami patirties sužinosite, kurie hiperparametrai yra svarbiausi jūsų duomenims ir algoritmų pasirinkimui.

Automatizuotas mašininis mokymasis

Kalbant apie algoritmų pasirinkimą, yra tik vienas būdas sužinoti, kuris algoritmas ar algoritmų rinkinys suteiks jums geriausią duomenų modelį, tai yra išbandyti juos visus. Jei taip pat išbandysite visus galimus normalizavimo ir funkcijų pasirinkimo variantus, susidursite su kombinatoriniu sprogimu.

Viską išbandyti yra nepraktiška rankiniu būdu, todėl, žinoma, mašininio mokymosi įrankių teikėjai įdėjo daug pastangų, kad išleistų „AutoML“ sistemas. Geriausi sujungia funkcijų inžineriją su algoritmų ir normalizavimo peržiūra. Geriausio modelio ar modelių hiperparametrų derinimas dažnai paliekamas vėlesniam laikui. Funkcijų inžinerija yra sunki problema, kurią reikia automatizuoti, ir ne visos „AutoML“ sistemos ją sprendžia.

Apibendrinant galima pasakyti, kad mašininio mokymosi algoritmai yra tik viena mašininio mokymosi galvosūkio dalis. Be algoritmo pasirinkimo (rankinio ar automatinio), turėsite spręsti optimizavimo priemones, duomenų valymą, funkcijų pasirinkimą, funkcijų normalizavimą ir (pasirinktinai) hiperparametrų derinimą.

Kai atliksite visa tai ir sukūrėte modelį, kuris tinka jūsų duomenims, bus laikas įdiegti modelį ir tada jį atnaujinti, pasikeitus sąlygoms. Mašininio mokymosi modelių valdymas gamyboje yra visa kita kirmėlių skardinė.