Strojno učenje brez Pythona, Anaconde in drugih plazilcev

Ne, no, seveda ne mislim resno. Obstajati mora meja, do katere mere je mogoče poenostaviti predmet. Toda za prve stopnje, razumevanje osnovnih konceptov in hiter "vstop" v temo, je morda sprejemljivo. Na koncu se bomo pogovorili o tem, kako pravilno poimenovati to gradivo (možnosti: »Strojno učenje za lutke«, »Analiza podatkov iz plenic«, »Algoritmi za najmlajše«).

Do točke. Napisal več aplikativnih programov v MS Excelu za vizualizacijo in vizualno predstavitev procesov, ki se pojavljajo pri različnih metodah strojnega učenja pri analizi podatkov. Videti je navsezadnje verjeti, kot pravijo nosilci kulture, ki je razvila večino teh metod (mimogrede, ne vseh. Najmočnejši “support vector machine” ali SVM, support vector machine je izum naš rojak Vladimir Vapnik, Moskovski inštitut za management (1963, mimogrede! Sedaj pa poučuje in dela v ZDA).

Tri datoteke za pregled

1. K-pomeni združevanje v gruče

Težave te vrste se nanašajo na »nenadzorovano učenje«, ko moramo začetne podatke razdeliti na določeno število vnaprej znanih kategorij, vendar nimamo nobenega števila »pravilnih odgovorov«, ampak jih moramo izluščiti iz samih podatkov. . Temeljni klasični problem iskanja podvrst cvetov perunike (Ronald Fisher, 1936!), ki velja za prvo znamenje tega področja znanja, je prav te narave.

Metoda je precej preprosta. Imamo množico predmetov, predstavljenih kot vektorji (množice N števil). Pri perunikah so to nizi 4 številk, ki označujejo cvet: dolžina in širina zunanjega oziroma notranjega režnja periantha (Fischerjeve perunike - Wikipedia). Običajna kartezična metrika je izbrana kot razdalja ali merilo bližine med predmeti.

Nato se središča gruč izberejo naključno (ali ne naključno, glejte spodaj) in izračunajo se razdalje od vsakega objekta do središč gruč. Vsak objekt v danem koraku ponovitve je označen kot pripadajoči najbližjemu središču. Nato se središče vsakega grozda prenese v aritmetično sredino koordinat njegovih članov (po analogiji s fiziko se imenuje tudi »središče mase«) in postopek se ponovi.

Postopek konvergira precej hitro. Na slikah v dveh dimenzijah je to videti takole:

1. Začetna naključna porazdelitev točk na ravnini in število grozdov

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

2. Določanje centrov gruč in dodeljevanje točk njihovim gručom

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

3. Prenos koordinat središč gruč, preračunavanje pripadnosti točk, dokler se središča ne stabilizirajo. Vidna je pot središča grozda, ki se premika v končni položaj.

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

Kadar koli lahko nastavite nove centre gruč (brez generiranja nove porazdelitve točk!) in preverite, da proces particioniranja ni vedno nedvoumen. Matematično to pomeni, da za funkcijo, ki jo optimiziramo (vsota kvadratov razdalj od točk do središč njihovih grozdov), ne najdemo globalnega, ampak lokalni minimum. To težavo je mogoče rešiti bodisi z nenaključno izbiro začetnih središč grozdov bodisi z naštevanjem možnih središč (včasih je koristno, da jih postavimo točno na eno od točk, potem je vsaj zagotovilo, da ne bomo ostali prazni grozdi). V vsakem primeru ima končna množica vedno infimum.

S to datoteko se lahko igrate na tej povezavi (ne pozabite omogočiti podpore za makre. Datoteke so bile pregledane glede virusov)

Opis metode na Wikipediji - metoda k-sredstev

2. Približek s polinomi in razčlenitev podatkov. Prekvalifikacija

Izjemen znanstvenik in popularizator podatkovne znanosti K.V. Vorontsov na kratko opisuje metode strojnega učenja kot »znanost risanja krivulj skozi točke«. V tem primeru bomo našli vzorec v podatkih z uporabo metode najmanjših kvadratov.

Prikazana je tehnika delitve izvornih podatkov na »usposabljanje« in »kontrolo«, pa tudi pojav, kot je prekvalificiranje ali »ponovno prilagajanje« podatkom. Pri pravilni aproksimaciji bomo imeli določeno napako na vadbenih podatkih in nekoliko večjo napako na kontrolnih podatkih. Če je napačen, povzroči natančno prilagoditev podatkov o vadbi in veliko napako v podatkih o testu.

(Znano dejstvo je, da lahko skozi N točk narišemo eno samo krivuljo N-1. stopnje in ta metoda v splošnem primeru ne daje želenega rezultata. Lagrangeov interpolacijski polinom na Wikipediji)

1. Nastavite začetno porazdelitev

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

2. Točke razdelimo na »trening« in »kontrolo« v razmerju 70 proti 30.

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

3. Narišemo aproksimativno krivuljo vzdolž vadbenih točk, vidimo napako, ki jo daje na kontrolnih podatkih

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

4. Skozi vadbene točke narišemo natančno krivuljo in na kontrolnih podatkih vidimo pošastno napako (in ničlo na vadbenih podatkih, ampak v čem je smisel?).

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

Seveda je prikazana najpreprostejša možnost z eno samo razdelitvijo na podmnožico "trening" in "kontrola", v splošnem primeru se to naredi večkrat za najboljšo prilagoditev koeficientov.

Datoteka je na voljo tukaj, pregledana s protivirusnim programom. Za pravilno delovanje omogočite makre

3. Gradientni spust in dinamika spreminjanja napak

Na voljo bo 4-dimenzionalni primer in linearna regresija. Koeficienti linearne regresije bodo določeni korak za korakom z uporabo metode gradientnega spuščanja, na začetku so vsi koeficienti nič. Poseben graf prikazuje dinamiko zmanjševanja napak, ko se koeficienti vse bolj natančno prilagajajo. Možen je ogled vseh štirih 2-dimenzionalnih projekcij.

Če nastavite korak gradientnega spusta prevelik, lahko vidite, da bomo vsakič preskočili minimum in bomo do rezultata prišli v večjem številu korakov, čeprav bomo na koncu vseeno prispeli (razen če tudi korak spusta odložimo veliko - potem bo algoritem šel "v piki"). In graf napake glede na korak ponovitve ne bo gladek, ampak "sunkovit".

1. Ustvarite podatke, nastavite korak gradientnega spuščanja

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

2. S pravilno izbiro koraka gradientnega spusta gladko in hitro dosežemo minimum

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

3. Če je stopnja spuščanja gradienta nepravilno izbrana, prekoračimo maksimum, graf napake je "sunkovit", konvergenca zahteva večje število korakov

Strojno učenje brez Pythona, Anaconde in drugih plazilcev
и

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

4. Če povsem napačno izberemo stopničko spuščanja gradienta, se odmaknemo od minimuma

Strojno učenje brez Pythona, Anaconde in drugih plazilcev

(Za reprodukcijo postopka z uporabo vrednosti korakov gradientnega spuščanja, prikazanih na slikah, označite polje »referenčni podatki«).

Datoteka je na tej povezavi, morate omogočiti makre, virusov ni.

Ali je po mnenju spoštovane skupnosti takšna poenostavitev in način podajanja gradiva sprejemljiv? Se splača članek prevesti v angleščino?

Vir: www.habr.com

Dodaj komentar