MaskininlÀrning utan Python, Anaconda och andra reptiler

Nej, jag menar förstÄs inte allvar. Det mÄste finnas en grÀns för hur mycket man kan förenkla Àmnet. Men för de första stegen, för att förstÄ grundlÀggande koncept och snabbt "komma in i Àmnet", kanske det Àr acceptabelt. Hur vi korrekt ska namnge detta material (alternativ: "MaskininlÀrning för nybörjare", "Dataanalys frÄn grunden", "Algoritmer för de minsta") diskuterar vi i slutet.

Till saken. Jag har skrivit flera tillĂ€mpade program i MS Excel för att visualisera och tydligt visa processerna som Ă€ger rum i olika metoder för maskininlĂ€rning vid dataanalys. Seeing is believing, som kulturtillverkarna sĂ€ger, som har utvecklat de flesta av dessa metoder (för övrigt, lĂ„ngt ifrĂ„n alla. Den kraftfulla "stötdimensionmetoden", eller SVM, support vector machine – Ă€r uppfinning av vĂ„r landsman Vladimir Vapnik, Moskva Institute of Management. 1963, för att vara exakt! Nu lĂ€r han visserligen ut och arbetar i USA).

Tre filer för granskning

1. Klustring med k-means-metoden

Denna typ av uppgift hör till "obevakat lÀrande", nÀr vi behöver dela upp ingÄngsdata i ett förutbestÀmt antal kategorier, men vi har ingen mÀngd "korrekta svar"; dessa mÄste vi extrahera ur sjÀlva data. Den fundamentala klassiska uppgiften att hitta underarter av irisblommor (Ronald Fisher, 1936!) anses vara den första spÄren av detta kunskapsomrÄde - Àr just av den naturen.

Metoden Àr ganska enkel. Vi har en uppsÀttning objekt som representeras som vektorer (uppsÀttningar av N nummer). För irisar handlar det om uppsÀttningar av 4 nummer som karaktÀriserar blomman: lÀngden och bredden av den yttre och inre delen av kalkbladet, respektive (Iris av Fisher - Wikipedia). Som avstÄnd, eller mÄtt pÄ nÀrhet mellan objekten, vÀljs den vanliga euklidiska metrik.

Vidare vÀljs klustercentrerna slumpmÀssigt (eller inte slumpmÀssigt, se vidare), och avstÄndet frÄn varje objekt till klustercentrerna berÀknas. Varje objekt i detta iterationssteg mÀrks som tillhörande den nÀrmaste centrum. Sedan flyttas centrum för varje kluster till medelvÀrdet av koordinaterna för sina medlemmar (i analogi med fysiken kallas det ocksÄ "tyngdpunkt"), och proceduren upprepas.

Processen konvergerar tillrÀckligt snabbt. PÄ bilderna i tvÄ dimensioner ser det ut sÄ hÀr:

1. Den ursprungliga slumpmÀssiga fördelningen av punkter pÄ planet och antalet kluster

MaskininlÀrning utan Python, Anaconda och andra reptiler

2. Angivande av klustrets centra och tilldelning av punkter till sina kluster

MaskininlÀrning utan Python, Anaconda och andra reptiler

3. Flytta koordinater för klustrets centra, omberÀkna punkternas tillhörighet tills centren stabiliseras. Man kan se klustrets centrumrörelse mot sitt slutliga lÀge.

MaskininlÀrning utan Python, Anaconda och andra reptiler

Vid varje tidpunkt kan man ange nya klustercentra (utan att generera en ny punktfördelning!) och se att uppdelningsprocessen inte alltid Àr entydig. Matematiskt betyder detta att för den optimerade funktionen (summan av kvadraterna av avstÄnden frÄn punkterna till centren av sina kluster) hittar vi inte det globala, utan ett lokalt minimum. Detta problem kan övervinnas antingen genom att vÀlja initiala klustercentra pÄ ett icke-slumpmÀssigt sÀtt, eller genom att pröva möjliga centra (ibland Àr det fördelaktigt att placera dem exakt pÄ nÄgon av punkterna, sÄ att vi Ätminstone har en garanti för att vi inte fÄr tomma kluster). I vilket fall som helst har en Àndlig mÀngd alltid en exakt nedre grÀns.

Du kan leka med den hÀr filen via den hÀr lÀnken (glöm inte att aktivera makro-support. Filen har kontrollerats för virus)

Metodens beskrivning pĂ„ Wikipedia — k-medelvĂ€rdesmetoden

2. Approximationspolynom och datauppdelning. Överanpassning

Den berömda forskaren och vetenskapskommunikatören K.V. Vorontsov beskriver kort maskininlÀrningstekniker som "vetenskapen om att dra kurvor genom punkter". I det hÀr exemplet ska vi hitta mönster i data med metoden för minsta kvadrat.

Tekniken för uppdelning av ursprunglig data i "trĂ€nings" och "test" data visas, liksom fenomenet överanpassning. Vid korrekt approximation kommer vi att ha en viss felmarginal pĂ„ trĂ€ningsdata och en nĂ„got större pĂ„ testdata. Vid felaktig – en exakt anpassning till trĂ€ningsdata och ett enormt fel pĂ„ testdata.

(Det Àr ett kÀnt faktum att det genom N punkter endast gÄr att dra en unik kurva av N-1 grad, och denna metod ger i allmÀnhet inte det önskade resultatet. Lagrange interpoleringspolynom pÄ Wikipedia)

1. Vi angiver den ursprungliga fördelningen

MaskininlÀrning utan Python, Anaconda och andra reptiler

2. Dela punkterna i "trÀnings" och "test" data i förhÄllandet 70 till 30.

MaskininlÀrning utan Python, Anaconda och andra reptiler

3. Vi genererar en approximativ kurva baserat pÄ trÀningspunkter och ser felet den ger pÄ testdata.

MaskininlÀrning utan Python, Anaconda och andra reptiler

4. Vi drar en exakt kurva genom trÀningspunkterna och ser ett enormt fel pÄ testdata (och noll pÄ trÀningsdata, men vad Àr poÀngen?).

MaskininlÀrning utan Python, Anaconda och andra reptiler

HÀr visas givetvis den enklaste varianten med en enda uppdelning i "trÀnings" och "test" delmÀngder, men i allmÀnhet görs detta flera gÄnger för att bÀst justera koefficienterna.

Fil tillgÀnglig hÀr, har kontrollerats av antivirus. Aktivera makron för korrekt funktion.

3. Gradientnedstigning och dynamiken av felets förÀndring.

HÀr kommer ett fyrdimensionellt fall och linjÀr regression. Koefficienterna för den linjÀra regressionen kommer att bestÀmmas stegvis med hjÀlp av gradientnedstigning, dÀr alla koefficienter initialt Àr noll. PÄ en separat graf syns dynamiken av minskningen av felet i takt med att koefficienterna justeras mer exakt. Det finns möjlighet att se alla fyra tvÄdimensionella projektioner.

Om steget för gradientnedstigningen anges för stort, kommer vi att se att vi dÀrmed missar minimipunkten varje gÄng och kommer till resultatet pÄ fler steg, Àven om vi till slut ÀndÄ kommer dit (om vi inte ökar steget för mycket, dÄ gÄr algoritmen "ur spÄr"). Och grafen av felet i förhÄllande till iterationssteget kommer att vara ryckig snarare Àn jÀmn.

1. Vi genererar data och anger steget för gradientnedstigningen.

MaskininlÀrning utan Python, Anaconda och andra reptiler

2. Vid korrekt val av steget för gradientnedstigning kommer vi smidigt och tillrÀckligt snabbt till minimipunkten.

MaskininlÀrning utan Python, Anaconda och andra reptiler

3. Vid felaktigt val av steget för gradientnedstigning missar vi maximipunkten, grafen över felet Àr "ryckig" och konvergensen tar fler steg.

MaskininlÀrning utan Python, Anaconda och andra reptiler
och

MaskininlÀrning utan Python, Anaconda och andra reptiler

4. Vid helt felaktigt val av steget för gradientnedstigning avlÀgsnar vi oss frÄn minimipunkten.

MaskininlÀrning utan Python, Anaconda och andra reptiler

(För att reproducera processen med de steg av gradientnedstigning som visas pÄ bilderna, sÀtt i kryss i "referensdata").

Fil – via denna lĂ€nk, makron mĂ„ste aktiveras, det finns inga virus.

Som det respekterade samhÀllet bedömer, Àr det acceptabelt att förenkla sÄ hÀr och metoden att presentera materialet? Ska artikeln översÀttas till engelska?

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster