Maskinlæring uden Python, Anaconda og andre krybdyr

Nej, selvfølgelig er jeg ikke seriøs. Der skal være en grænse for, i hvor høj grad det er muligt at forenkle et fag. Men for de første stadier, at forstå grundlæggende begreber og hurtigt "indtræde" i emnet, kan det være acceptabelt. Vi vil diskutere, hvordan man korrekt navngiver dette materiale (muligheder: "Maskinlæring til dummies", "Dataanalyse fra bleer", "Algorithmer for de små") til sidst.

Til sagen. Skrev flere applikationsprogrammer i MS Excel til visualisering og visuel repræsentation af processer, der forekommer i forskellige maskinlæringsmetoder ved analyse af data. At se er trods alt at tro, som bærerne af kulturen siger, som udviklede de fleste af disse metoder (i øvrigt ikke dem alle. Den mest kraftfulde "støtte vektormaskine", eller SVM, støtte vektormaskine er opfindelsen af vor landsmand Vladimir Vapnik, Moscow Institute of Management. 1963 i øvrigt! Nu underviser og arbejder han imidlertid i USA).

Tre filer til gennemsyn

1. K-betyder klyngedannelse

Problemer af denne type refererer til "uovervåget læring", når vi skal opdele de indledende data i et bestemt antal kategorier, der er kendt på forhånd, men vi ikke har et antal "korrekte svar"; vi skal udtrække dem fra selve dataene . Det grundlæggende klassiske problem med at finde underarter af irisblomster (Ronald Fisher, 1936!), som betragtes som det første tegn på dette vidensfelt, er netop af denne art.

Metoden er ret simpel. Vi har et sæt af objekter repræsenteret som vektorer (sæt af N tal). Hos iris er disse sæt af 4 numre, der karakteriserer blomsten: længden og bredden af ​​henholdsvis periantens ydre og indre lapper (Fischers iris - Wikipedia). Den sædvanlige kartesiske metrik er valgt som afstanden eller mål for nærhed mellem objekter.

Dernæst vælges klyngecentre tilfældigt (eller ikke tilfældigt, se nedenfor), og afstandene fra hvert objekt til klyngecentrene beregnes. Hvert objekt ved et givet iterationstrin er markeret som tilhørende det nærmeste center. Derefter overføres midten af ​​hver klynge til det aritmetiske middelværdi af koordinaterne for dets medlemmer (i analogi med fysik kaldes det også "massecentrum"), og proceduren gentages.

Processen konvergerer ret hurtigt. På billeder i to dimensioner ser det sådan ud:

1. Indledende tilfældig fordeling af punkter på planet og antallet af klynger

Maskinlæring uden Python, Anaconda og andre krybdyr

2. Angivelse af klyngecentre og tildeling af punkter til deres klynger

Maskinlæring uden Python, Anaconda og andre krybdyr

3. Overførsel af koordinaterne for klyngecentrene, genberegning af tilhørsforholdet af punkterne, indtil centrene stabiliserer sig. Banen for klyngecentrets bevægelse til sin endelige position er synlig.

Maskinlæring uden Python, Anaconda og andre krybdyr

Du kan til enhver tid indstille nye klyngecentre (uden at generere en ny fordeling af point!) og se, at partitioneringsprocessen ikke altid er entydig. Matematisk betyder det, at for den funktion, der optimeres (summen af ​​de kvadrerede afstande fra punkter til centrene af deres klynger), finder vi ikke et globalt, men et lokalt minimum. Dette problem kan løses enten ved et ikke-tilfældigt valg af indledende klyngecentre, eller ved at opregne mulige centre (nogle gange er det fordelagtigt at placere dem nøjagtigt på et af punkterne, så er der i det mindste en garanti for, at vi ikke bliver tomme klynger). Under alle omstændigheder har en finit mængde altid et infimum.

Du kan lege med denne fil på dette link (glem ikke at aktivere makrounderstøttelse. Filerne er blevet scannet for virus)

Beskrivelse af metoden på Wikipedia - k-betyder metode

2. Approksimation ved polynomier og dataopdeling. Omskoling

Bemærkelsesværdig videnskabsmand og popularizer af datavidenskab K.V. Vorontsov beskriver kort maskinlæringsmetoder som "videnskaben om at tegne kurver gennem punkter." I dette eksempel finder vi et mønster i dataene ved hjælp af mindste kvadraters metode.

Teknikken til at opdele kildedataene i "træning" og "kontrol" er vist, samt et sådant fænomen som genoptræning eller "gentilpasning" til dataene. Med korrekt tilnærmelse vil vi have en vis fejl på træningsdataene og en lidt større fejl på kontroldataene. Hvis det er forkert, resulterer det i præcis justering af træningsdata og en stor fejl på testdata.

(Det er et velkendt faktum, at man gennem N punkter kan tegne en enkelt kurve af N-1. grad, og denne metode giver i det generelle tilfælde ikke det ønskede resultat. Lagrange interpolationspolynomium på Wikipedia)

1. Indstil startfordelingen

Maskinlæring uden Python, Anaconda og andre krybdyr

2. Vi deler punkterne op i "træning" og "kontrol" i forholdet 70 til 30.

Maskinlæring uden Python, Anaconda og andre krybdyr

3. Vi tegner den tilnærmede kurve langs træningspunkterne, vi ser fejlen den giver på kontroldataene

Maskinlæring uden Python, Anaconda og andre krybdyr

4. Vi tegner en nøjagtig kurve gennem træningspunkterne, og vi ser en monstrøs fejl på kontroldataene (og nul på træningsdataene, men hvad er meningen?).

Maskinlæring uden Python, Anaconda og andre krybdyr

Vist er selvfølgelig den enkleste mulighed med en enkelt opdeling i "træning" og "kontrol" undergrupper; i det generelle tilfælde gøres dette mange gange for den bedste justering af koefficienterne.

Filen er tilgængelig her, scannet af antivirus. Aktiver makroer for korrekt drift

3. Gradientnedstigning og fejldynamik

Der vil være et 4-dimensionelt tilfælde og lineær regression. Lineære regressionskoefficienter vil blive bestemt trin for trin ved hjælp af gradient descent-metoden, indledningsvis er alle koefficienter nul. En separat graf viser dynamikken i fejlreduktion, da koefficienterne justeres mere og mere præcist. Det er muligt at se alle fire 2-dimensionelle projektioner.

Hvis du indstiller gradientnedstigningstrinnet for stort, kan du se, at vi hver gang springer minimumet over og kommer frem til resultatet i et større antal trin, selvom vi i sidste ende stadig kommer frem (medmindre vi også forsinker nedstigningstrinnet meget - så vil algoritmen gå "i spar"). Og grafen for fejlen afhængigt af iterationstrinnet vil ikke være glat, men "ryk".

1. Generer data, indstil gradientnedstigningstrinnet

Maskinlæring uden Python, Anaconda og andre krybdyr

2. Med det korrekte valg af gradientnedstigningstrinnet når vi jævnt og hurtigt minimumet

Maskinlæring uden Python, Anaconda og andre krybdyr

3. Hvis gradientnedstigningstrinnet er forkert valgt, overskrider vi maksimum, fejlgrafen er "ryk", konvergens tager et større antal trin

Maskinlæring uden Python, Anaconda og andre krybdyr
и

Maskinlæring uden Python, Anaconda og andre krybdyr

4. Hvis vi vælger gradientnedstigningstrinnet helt forkert, bevæger vi os væk fra minimum

Maskinlæring uden Python, Anaconda og andre krybdyr

(For at gengive processen ved hjælp af gradient-nedstigningstrinværdierne vist på billederne, skal du markere boksen "referencedata").

Filen er på dette link, du skal aktivere makroer, der er ingen vira.

Er en sådan forenkling og metode til at præsentere materialet acceptabel ifølge det respekterede samfund? Er det værd at oversætte artiklen til engelsk?

Kilde: www.habr.com

Tilføj en kommentar