Învățarea automată fără Python, Anaconda și alte reptile

Nu, bineînțeles, nu vorbesc serios. Trebuie să existe o limită până la care este posibil să simplificăm subiectul. Dar pentru primele etape, pentru a înțelege conceptele de bază și pentru a ne familiariza rapid cu tema, poate fi acceptabil. Vom discuta la final cum să denumim corect acest material (opțiuni: „Învățarea automată pentru începători”, „Analiza datelor de la început”, „Algoritmi pentru cei mai mici”).

La subiect. Am scris câteva programe aplicate în MS Excel pentru a vizualiza și reprezenta în mod clar procesele care au loc în diferite metode de învățare automată atunci când analizăm date. Seeing is believing, până la urmă, cum spun cei din cultura care a dezvoltat majoritatea acestor metode (apropos, nu toate dintre ele. Puternicul „metodă a vectorilor de suport”, sau SVM, support vector machine – este invenția compatriotului nostru Vladimir Vapnik, Institutul din Moscova. 1963, apropo! Acum, desigur, predă și lucrează în SUA).

Trei fișiere pentru revizuire

1. Clustering prin metoda k-means

Sarcinile acestui tip se încadrează în „învățarea nesupravegheată”, atunci când trebuie să împărțim datele originale într-un număr prestabilit de categorii, dar nu avem niciun număr de „răspunsuri corecte” - acestea trebuie extrase din datele în sine. Clasicul exemplu fundamental de identificare a subspeciilor florilor de iris (Ronald Fisher, 1936!), care este considerat prima piatră de temelie în acest domeniu de cunoaștere - este exact de această natură.

Metoda este destul de simplă. Avem un set de obiecte, reprezentate sub formă de vectori (seturi de N numere). În cazul irisurilor, acestea sunt seturi de 4 numere, care caracterizează floarea: lungimea și lățimea petalelor externe și interne, respectiv (Irisurile lui Fisher - Wikipedia). Ca măsură a distanței sau a similitudinii între obiecte, se alege metrica euclideană obișnuită.

Apoi, în mod arbitrar (sau nu, vezi mai departe), se aleg centrele clusterelor, iar distanțele de la fiecare obiect la centrele clusterelor sunt calculate. Fiecare obiect în această etapă a iterației este marcat ca aparținând celui mai apropiat centru. Apoi, centrul fiecărui cluster este mutat în media aritmetică a coordonatelor membrilor săi (similar cu fizica, este denumit și „centru de masă”), iar procedura se repetă.

Procesul converge destul de rapid. În imaginile bidimensionale, acesta arată astfel:

1. Distribuția inițială aleatorie a punctelor pe plan și numărul de clustere

Învățarea automată fără Python, Anaconda și alte reptile

2. Stabilirea centrelor de cluster și atribuite punctelor la clusterele lor

Învățarea automată fără Python, Anaconda și alte reptile

3. Mutarea coordonatelor centrelor de cluster, recalcularea apartenenței punctelor, până când centrele se stabilizează. Se observă traiectoria de mișcare a centrului clusterului către poziția finală.

Învățarea automată fără Python, Anaconda și alte reptile

În orice moment, se pot stabili noi centre de cluster (fără a genera o nouă distribuție a punctelor!) și se poate observa că procesul de divizare nu este întotdeauna univoc. Matematic, aceasta înseamnă că, pentru funcția optimizată (suma pătratelor distanțelor de la puncte la centrele clusterelor lor), găsim un minim local, nu global. Această problemă poate fi rezolvată fie prin alegerea deterministă a centrelor inițiale ale clusterelor, fie prin explorarea centrelor posibile (uneori este avantajos să le plasăm exact în una dintre puncte, atunci avem măcar garanția că nu vom obține clustere goale). În orice caz, un set finit are întotdeauna o margine inferioară precisă.

Puteți experimenta cu acest fișier la acest link (nu uitați să activați suportul pentru macrocomenzi. Fișierele au fost verificate pentru virusuri)

Descrierea metodei pe Wikipedia — Metoda k-medii

2. Aproximarea cu polinoame și divizarea datelor. Supraînvățarea

Cercetătorul și popularizatorul științei datelor K.V. Voronțov vorbește pe scurt despre metodele de învățare automată ca despre „știința de a trasa curbe prin puncte”. În acest exemplu, vom găsi regularități în date folosind metoda minimelor pătrate.

Este ilustrată tehnica de împărțire a datelor originale în „date de învățare” și „date de control”, precum și fenomenul de supraînvățare sau „fine-tuning” pe date. La o aproximare corectă, vom avea o anumită eroare pe datele de învățare și o eroare mai mare pe datele de control. La o aproximare greșită – o ajustare exactă la datele de învățare și o eroare uriașă pe cele de control.

(Este un fapt cunoscut că prin N puncte se poate trasa o singură curbă de grad N-1, iar această metodă în general nu dă rezultatul dorit. Polinomul de interpolare Lagrange pe Wikipedia)

1. Stabilim distribuția inițială

Învățarea automată fără Python, Anaconda și alte reptile

2. Împărțim punctele în „date de învățare” și „date de control” în proporție de 70 la 30.

Învățarea automată fără Python, Anaconda și alte reptile

3. Trasezăm o curbă de aproximare prin punctele de învățare, observăm eroarea pe care o dă la datele de testare

Învățarea automată fără Python, Anaconda și alte reptile

4. Trasezăm o curbă exactă prin punctele de învățare și vedem o eroare uriașă la datele de testare (și zero la cele de învățare, dar ce folos?).

Învățarea automată fără Python, Anaconda și alte reptile

Este arătat, desigur, cea mai simplă variantă cu o singură împărțire în submulțimi 'de învățare' și 'de control', în cazul general această operațiune se realizează de mai multe ori pentru o ajustare optimă a coeficientilor.

Fișierul este disponibil aici, verificat cu un antivirus. Activați macrocomenzile pentru o funcționare corectă

3. Căderea gradientului și dinamica schimbării erorii

Aici va fi cazul în 4 dimensiuni și regresia liniară. Coeficienții regresiei liniară vor fi determinați pas cu pas prin metoda căderii gradientului, începând cu toți coeficienții – zero. Pe un grafic separat se poate observa dinamica reducerii erorii pe măsură ce coeficienții sunt ajustați tot mai exact. Există posibilitatea de a vizualiza toate cele patru proiecții în 2 dimensiuni.

Dacă setăm un pas prea mare pentru căderea gradientului, se observă că de fiecare dată vom sări peste minim și vom ajunge la rezultat în mai multe pași, deși, în final, tot vom ajunge (dacă nu ne vom ridica pasul prea mult – atunci algoritmul va „sări” necontrolat). Și graficul dependenței erorii de pasul iterației va fi neregulat, nu lin.

1. Generăm date, setăm pasul căderii gradientului

Învățarea automată fără Python, Anaconda și alte reptile

2. Cu un set corect al pasului căderii gradientului, ajungem lin și destul de rapid la minim

Învățarea automată fără Python, Anaconda și alte reptile

3. Cu un set incorect al pasului căderii gradientului sărim peste maxim, graficul erorii – neregulat, convergența necesită mai mulți pași

Învățarea automată fără Python, Anaconda și alte reptile
și

Învățarea automată fără Python, Anaconda și alte reptile

4. Cu un set complet greșit al pasului căderii gradientului ne îndepărtăm de minim

Învățarea automată fără Python, Anaconda și alte reptile

(Pentru a reproduce procesul cu valorile pasului căderii gradientului arătate în imagini, bifați 'datele de referință').

Fișierul – la acest link, trebuie să activați macrocomenzile, nu sunt virusuri.

Cum consideră comunitatea respectabilă, este acceptabilă o astfel de simplificare și metoda de prezentare a materialului? Ar trebui să traduc articolul în engleză?

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster