Strojno učenje bez Pythona, Anaconde i ostalih gmazova

Ne, pa, naravno, nisam ozbiljan. Mora postojati granica do koje je moguće pojednostaviti predmet. Ali za prve faze, razumijevanje osnovnih pojmova i brzo "ulaženje" u temu, može biti prihvatljivo. Razgovarat ćemo o tome kako pravilno nazvati ovaj materijal (opcije: "Strojno učenje za lutke", "Analiza podataka iz pelena", "Algoritmi za najmlađe") na kraju.

Do točke. Napisao nekoliko aplikativnih programa u MS Excelu za vizualizaciju i vizualni prikaz procesa koji se javljaju u različitim metodama strojnog učenja pri analizi podataka. Vidjeti je vjerovati, uostalom, kako kažu nositelji kulture koji su razvili većinu ovih metoda (usput, ne sve. Najmoćniji “potporni vektorski stroj”, ili SVM, potporni vektorski stroj izum je naš sunarodnjak Vladimir Vapnik, Moskovski institut za menadžment (1963, inače! Sada, međutim, predaje i radi u SAD-u).

Tri datoteke za pregled

1. K-znači grupiranje

Problemi ove vrste odnose se na „učenje bez nadzora“, kada početne podatke trebamo podijeliti u određeni broj unaprijed poznatih kategorija, ali nemamo neki broj „točnih odgovora“, već ih moramo izdvojiti iz samih podataka. . Temeljni klasični problem pronalaženja podvrsta cvjetova perunike (Ronald Fisher, 1936!), koji se smatra prvim znakom ovog područja znanja, upravo je takve prirode.

Metoda je prilično jednostavna. Imamo skup objekata predstavljenih kao vektori (skupovi od N brojeva). Kod perunika, to su skupovi od 4 broja koji karakteriziraju cvijet: duljina i širina vanjskog i unutarnjeg režnja periantha, respektivno (Fischerove perunike - Wikipedia). Uobičajena kartezijanska metrika odabrana je kao udaljenost ili mjera blizine između objekata.

Zatim se središta klastera odabiru nasumično (ili ne slučajno, vidi dolje), a izračunavaju se udaljenosti od svakog objekta do središta klastera. Svaki objekt u određenom koraku iteracije označen je kao pripadajući najbližem centru. Zatim se središte svakog klastera prenosi na aritmetičku sredinu koordinata njegovih članova (po analogiji s fizikom naziva se i “centar mase”), te se postupak ponavlja.

Proces konvergira prilično brzo. Na slikama u dvije dimenzije to izgleda ovako:

1. Početna slučajna raspodjela točaka na ravnini i broj klastera

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

2. Određivanje centara klastera i dodjeljivanje točaka njihovim klasterima

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

3. Prijenos koordinata središta klastera, preračunavanje pripadnosti točaka dok se središta ne stabiliziraju. Vidljiva je putanja središta klastera koja se kreće do svoje konačne pozicije.

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

U bilo kojem trenutku možete postaviti nove centre klastera (bez generiranja nove distribucije točaka!) i vidjeti da proces particioniranja nije uvijek nedvosmislen. Matematički to znači da za funkciju koja se optimizira (zbroj kvadrata udaljenosti od točaka do središta njihovih klastera) ne nalazimo globalni, već lokalni minimum. Ovaj problem se može prevladati ili nenasumičnim izborom početnih centara klastera, ili nabrajanjem mogućih centara (ponekad je korisno smjestiti ih točno na jednu od točaka, tada barem postoji jamstvo da nećemo ostati prazni klasteri). U svakom slučaju, konačan skup uvijek ima infimum.

Možete igrati s ovom datotekom na ovoj poveznici (ne zaboravite omogućiti makro podršku. Datoteke su skenirane na viruse)

Opis metode na Wikipediji - metoda k-srednjih vrijednosti

2. Aproksimacija polinomima i raščlanjivanje podataka. Prekvalifikacija

Izvanredni znanstvenik i popularizator podatkovne znanosti K.V. Vorontsov ukratko opisuje metode strojnog učenja kao "znanost crtanja krivulja kroz točke". U ovom primjeru ćemo pronaći obrazac u podacima pomoću metode najmanjih kvadrata.

Prikazana je tehnika podjele izvornih podataka na “trening” i “kontrolu”, kao i takav fenomen kao što je prekvalifikacija, odnosno “ponovno prilagođavanje” podacima. Kod točne aproksimacije imat ćemo određenu pogrešku na trenažnim podacima i nešto veću pogrešku na kontrolnim podacima. Ako je netočan, to rezultira preciznim prilagođavanjem podataka o treningu i velikom pogreškom na podacima testa.

(Poznato je da se kroz N točaka može povući jedna krivulja N-1 stupnja, a ova metoda u općem slučaju ne daje željeni rezultat. Lagrangeov interpolacijski polinom na Wikipediji)

1. Postavite početnu distribuciju

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

2. Bodove dijelimo na “trenažne” i “kontrolne” u omjeru 70 prema 30.

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

3. Crtamo aproksimirajuću krivulju duž točaka treninga, vidimo pogrešku koju daje na kontrolnim podacima

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

4. Nacrtamo točnu krivulju kroz točke treninga i vidimo monstruoznu pogrešku na kontrolnim podacima (i nulu na podacima treninga, ali koja je svrha?).

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

Prikazana je, naravno, najjednostavnija opcija s jednom podjelom na podskupove "trening" i "kontrola"; u općem slučaju, to se radi mnogo puta za najbolju prilagodbu koeficijenata.

Datoteka je dostupna ovdje, skenirana antivirusnim programom. Omogućite makronaredbe za ispravan rad

3. Gradijentni pad i dinamika promjene pogreške

Bit će 4-dimenzionalni slučaj i linearna regresija. Koeficijenti linearne regresije bit će određeni korak po korak metodom spuštanja gradijenta, u početku su svi koeficijenti nula. Poseban grafikon prikazuje dinamiku smanjenja pogreške kako se koeficijenti sve točnije prilagođavaju. Moguće je vidjeti sve četiri 2-dimenzionalne projekcije.

Ako postavite prevelik korak spuštanja gradijenta, možete vidjeti da ćemo svaki put preskočiti minimum i doći ćemo do rezultata u većem broju koraka, iako ćemo na kraju ipak stići (osim ako ne odgodimo i korak spuštanja mnogo - tada će algoritam ići "u lopticama"). A grafikon pogreške ovisno o koraku iteracije neće biti gladak, već "trzav".

1. Generirajte podatke, postavite korak spuštanja gradijenta

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

2. S pravilnim odabirom koraka spuštanja gradijenta glatko i brzo dolazimo do minimuma

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

3. Ako je korak spuštanja gradijenta netočno odabran, prelazimo maksimum, graf pogreške je „trzav“, konvergencija zahtijeva veći broj koraka

Strojno učenje bez Pythona, Anaconde i ostalih gmazova
и

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

4. Odaberemo li potpuno krivo stupanj silaska gradijenta, udaljavamo se od minimuma

Strojno učenje bez Pythona, Anaconde i ostalih gmazova

(Da biste reproducirali proces pomoću vrijednosti koraka spuštanja gradijenta prikazanih na slikama, označite okvir "referentni podaci").

Datoteka je na ovom linku, morate uključiti makronaredbe, nema virusa.

Je li prema poštovanoj zajednici takvo pojednostavljenje i način prezentiranja materijala prihvatljiv? Isplati li se članak prevesti na engleski?

Izvor: www.habr.com

Dodajte komentar