Maskininlärning utan Python, Anaconda och andra reptiler

Nej, visst, jag är inte seriös. Det måste finnas en gräns för hur mycket det går att förenkla ett ämne. Men för de första stegen, att förstå grundläggande begrepp och snabbt "gå in" i ämnet, kan det vara acceptabelt. Vi kommer att diskutera hur man korrekt namnger detta material (alternativ: "Maskininlärning för dummies", "Dataanalys från blöjor", "Algorithmer för de små") i slutet.

Till poängen. Skrev flera applikationsprogram i MS Excel för visualisering och visuell representation av processer som förekommer i olika maskininlärningsmetoder vid analys av data. Att se är trots allt att tro, som bärarna av kulturen säger, som utvecklade de flesta av dessa metoder (förresten, inte alla. Den mest kraftfulla "stödvektormaskinen", eller SVM, stödvektormaskinen är uppfinningen av vår landsman Vladimir Vapnik, Moscow Institute of Management. 1963 förresten! Nu däremot undervisar och arbetar han i USA).

Tre filer för granskning

1. K-betyder klustring

Problem av den här typen hänvisar till "oövervakat lärande", när vi behöver dela in de initiala uppgifterna i ett visst antal kategorier kända i förväg, men vi har inte ett antal "rätta svar"; vi måste extrahera dem från själva datan. . Det grundläggande klassiska problemet med att hitta underarter av irisblommor (Ronald Fisher, 1936!), som anses vara det första tecknet på detta kunskapsområde, är av just denna karaktär.

Metoden är ganska enkel. Vi har en uppsättning objekt representerade som vektorer (uppsättningar av N tal). Hos iris är dessa uppsättningar av 4 nummer som kännetecknar blomman: längden och bredden på periantens yttre respektive inre lober (Fischers iris - Wikipedia). Den vanliga kartesiska metriken väljs som avstånd, eller mått på närhet mellan objekt.

Därefter väljs klustercentrum slumpmässigt (eller inte slumpmässigt, se nedan), och avstånden från varje objekt till klustercentrumen beräknas. Varje objekt vid ett givet iterationssteg markeras som tillhörande närmaste centrum. Sedan överförs mitten av varje kluster till det aritmetiska medelvärdet av koordinaterna för dess medlemmar (i analogi med fysiken kallas det också "massacentrum") och proceduren upprepas.

Processen konvergerar ganska snabbt. På bilder i två dimensioner ser det ut så här:

1. Initial slumpmässig fördelning av punkter på planet och antalet kluster

Maskininlärning utan Python, Anaconda och andra reptiler

2. Ange klustercentrum och tilldela punkter till deras kluster

Maskininlärning utan Python, Anaconda och andra reptiler

3. Överföra koordinaterna för klustercentrumen, räkna om kopplingen av punkterna tills centra stabiliseras. Banan för klustercentrum som rör sig till dess slutliga position är synlig.

Maskininlärning utan Python, Anaconda och andra reptiler

När som helst kan du ställa in nya klustercenter (utan att generera en ny fördelning av poäng!) och se att partitioneringsprocessen inte alltid är entydig. Matematiskt betyder detta att för funktionen som optimeras (summan av de kvadratiska avstånden från punkter till mitten av deras kluster) finner vi inte ett globalt, utan ett lokalt minimum. Detta problem kan övervinnas antingen genom ett icke-slumpmässigt val av initiala klustercentra, eller genom att räkna upp möjliga centra (ibland är det fördelaktigt att placera dem exakt på en av punkterna, då finns det åtminstone en garanti för att vi inte blir tomma kluster). I vilket fall som helst har en finit mängd alltid ett infimum.

Du kan spela med den här filen på den här länken (glöm inte att aktivera makrostöd. Filerna har genomsökts efter virus)

Beskrivning av metoden på Wikipedia - k-betyder metod

2. Approximation genom polynom och datauppdelning. Omskolning

Anmärkningsvärd vetenskapsman och populariserare av datavetenskap K.V. Vorontsov beskriver kortfattat maskininlärningsmetoder som "vetenskapen om att rita kurvor genom punkter." I det här exemplet hittar vi ett mönster i data med minsta kvadratmetoden.

Tekniken att dela upp källdata i "träning" och "kontroll" visas, liksom ett sådant fenomen som omskolning eller "omanpassning" till data. Med korrekt approximation kommer vi att ha ett visst fel på träningsdata och ett något större fel på kontrolldata. Om felaktigt resulterar det i exakt justering av träningsdata och ett stort fel på testdata.

(Det är ett välkänt faktum att genom N punkter kan man rita en enda kurva av N-1:e graden, och denna metod ger i det allmänna fallet inte det önskade resultatet. Lagrange-interpolationspolynom på Wikipedia)

1. Ställ in den initiala fördelningen

Maskininlärning utan Python, Anaconda och andra reptiler

2. Vi delar upp poängen i "träning" och "kontroll" i förhållandet 70 till 30.

Maskininlärning utan Python, Anaconda och andra reptiler

3. Vi ritar den approximativa kurvan längs träningspunkterna, vi ser felet det ger på kontrolldata

Maskininlärning utan Python, Anaconda och andra reptiler

4. Vi ritar en exakt kurva genom träningspunkterna, och vi ser ett monstruöst fel på kontrolldata (och noll på träningsdata, men vad är poängen?).

Maskininlärning utan Python, Anaconda och andra reptiler

Det enklaste alternativet visas naturligtvis med en enda uppdelning i "tränings-" och "kontroll"-delmängder; i det allmänna fallet görs detta många gånger för bästa justering av koefficienterna.

Filen är tillgänglig här, skannad av antivirus. Aktivera makron för korrekt funktion

3. Gradientnedstigning och feldynamik förändras

Det kommer att finnas ett 4-dimensionellt fall och linjär regression. Linjära regressionskoefficienter kommer att bestämmas steg för steg med hjälp av gradient descent-metoden, initialt är alla koefficienter noll. En separat graf visar dynamiken för felreduktion då koefficienterna justeras mer och mer exakt. Det är möjligt att se alla fyra 2-dimensionella projektioner.

Om du ställer in lutningssänkningssteget för stort kan du se att vi varje gång hoppar över minimum och kommer fram till resultatet i ett större antal steg, även om vi i slutändan fortfarande kommer fram (såvida vi inte försenar sänkningssteget också mycket - då går algoritmen "i spader"). Och grafen för felet beroende på iterationssteget kommer inte att vara jämn, utan "ryckig".

1. Generera data, ställ in steget för gradientnedstigning

Maskininlärning utan Python, Anaconda och andra reptiler

2. Med rätt val av gradientnedstigningssteget når vi smidigt och snabbt minimum

Maskininlärning utan Python, Anaconda och andra reptiler

3. Om steget för gradientnedstigning är felaktigt valt överskrider vi det maximala, feldiagrammet är "ryckigt", konvergensen tar ett större antal steg

Maskininlärning utan Python, Anaconda och andra reptiler
и

Maskininlärning utan Python, Anaconda och andra reptiler

4. Om vi ​​väljer gradientnedstigningssteget helt felaktigt går vi bort från minimum

Maskininlärning utan Python, Anaconda och andra reptiler

(För att återskapa processen med hjälp av gradientnedstigningsstegvärdena som visas i bilderna, kryssa i rutan "referensdata").

Filen finns på denna länk, du måste aktivera makron, det finns inga virus.

Enligt den respekterade gemenskapen, är en sådan förenkling och metod för att presentera materialet acceptabel? Är det värt att översätta artikeln till engelska?

Källa: will.com

Lägg en kommentar