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

Nu, bineînțeles, nu vorbesc serios. Trebuie să existe o limită în măsura în care este posibilă simplificarea unui subiect. Dar pentru primele etape, înțelegerea conceptelor de bază și „intrarea” rapidă în subiect, poate fi acceptabil. Vom discuta cum să denumim corect acest material (opțiuni: „Învățare automată pentru manechine”, „Analiza datelor din scutece”, „Algoritmi pentru cei mici”) la sfârșit.

Până la punctul. A scris mai multe programe de aplicație în MS Excel pentru vizualizarea și reprezentarea vizuală a proceselor care apar în diferite metode de învățare automată la analiza datelor. A vedea înseamnă, la urma urmei, a crede, așa cum spun purtătorii culturii, care a dezvoltat majoritatea acestor metode (apropo, nu toate. Cea mai puternică „mașină vectorială de sprijin” sau SVM, mașină de vector de sprijin este invenția compatriotul nostru Vladimir Vapnik, Institutul de Management din Moscova. 1963, apropo! Acum, însă, predă şi lucrează în SUA).

Trei dosare pentru revizuire

1. K înseamnă grupare

Problemele de acest tip se referă la „învățare nesupravegheată”, când trebuie să împărțim datele inițiale într-un anumit număr de categorii cunoscute în prealabil, dar nu avem niciun număr de „răspunsuri corecte”; trebuie să le extragem din datele în sine. . Problema clasică fundamentală de a găsi subspecii de flori de iris (Ronald Fisher, 1936!), care este considerată primul semn al acestui domeniu de cunoaștere, este tocmai de această natură.

Metoda este destul de simplă. Avem un set de obiecte reprezentate ca vectori (multimi de N numere). La irisi, acestea sunt seturi de 4 numere care caracterizează floarea: lungimea și lățimea lobilor exteriori și, respectiv, interior ai periantului (Irișii lui Fischer - Wikipedia). Metrica carteziană obișnuită este aleasă ca distanță sau măsură a proximității dintre obiecte.

În continuare, centrele clusterului sunt selectate aleatoriu (sau nu aleatoriu, vezi mai jos), iar distanțele de la fiecare obiect până la centrele clusterului sunt calculate. Fiecare obiect la un anumit pas de iterație este marcat ca aparținând celui mai apropiat centru. Apoi, centrul fiecărui grup este transferat la media aritmetică a coordonatelor membrilor săi (prin analogie cu fizica, este numit și „centrul de masă”), iar procedura se repetă.

Procesul converge destul de repede. În imagini în două dimensiuni arată așa:

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

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

2. Specificarea centrelor de cluster și atribuirea de puncte clusterelor lor

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

3. Transferarea coordonatelor centrelor clusterului, recalculând afilierea punctelor până la stabilizarea centrelor. Este vizibilă traiectoria centrului clusterului care se deplasează în poziția sa finală.

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

În orice moment, puteți seta noi centre de cluster (fără a genera o nouă distribuție de puncte!) și puteți vedea că procesul de partiționare nu este întotdeauna clar. Matematic, aceasta înseamnă că pentru funcția care este optimizată (suma distanțelor pătrate de la puncte la centrele clusterelor lor), găsim nu un minim global, ci un minim local. Această problemă poate fi depășită fie printr-o alegere non-aleatoare a centrelor de cluster inițiale, fie prin enumerarea unor posibile centre (uneori este avantajos să le plasăm exact într-unul dintre puncte, atunci măcar există garanția că nu ne vom goli). clustere). În orice caz, o mulțime finită are întotdeauna un infim.

Vă puteți juca cu acest fișier la acest link (nu uitați să activați suportul macro. Fișierele au fost scanate pentru viruși)

Descrierea metodei pe Wikipedia - metoda k-means

2. Aproximarea prin polinoame și defalcarea datelor. Recalificare

Remarcabil om de știință și popularizator al științei datelor K.V. Vorontsov descrie pe scurt metodele de învățare automată drept „știința trasării curbelor prin puncte”. În acest exemplu, vom găsi un model în date folosind metoda celor mai mici pătrate.

Este prezentată tehnica de împărțire a datelor sursă în „antrenament” și „control”, precum și un astfel de fenomen precum recalificarea sau „reajustarea” la date. Cu o aproximare corectă, vom avea o anumită eroare pe datele de antrenament și o eroare ceva mai mare pe datele de control. Dacă este incorect, rezultă o ajustare precisă a datelor de antrenament și o eroare uriașă a datelor de testare.

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

1. Setați distribuția inițială

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

2. Împărțim punctele în „antrenament” și „control” într-un raport de 70 la 30.

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

3. Desenăm curba de aproximare de-a lungul punctelor de antrenament, vedem eroarea pe care o dă asupra datelor de control

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

4. Desenăm o curbă exactă prin punctele de antrenament și vedem o eroare monstruoasă pe datele de control (și zero pe datele de antrenament, dar ce rost are?).

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

Este prezentată, desigur, cea mai simplă opțiune cu o singură împărțire în subseturi de „antrenament” și „control”; în cazul general, acest lucru se face de mai multe ori pentru cea mai bună ajustare a coeficienților.

Fișierul este disponibil aici, scanat de antivirus. Activați macrocomenzi pentru o funcționare corectă

3. Coborârea gradientului și dinamica modificării erorii

Va exista un caz 4-dimensional și o regresie liniară. Coeficienții de regresie liniară vor fi determinați pas cu pas folosind metoda coborârii gradientului, inițial toți coeficienții sunt zero. Un grafic separat arată dinamica reducerii erorilor pe măsură ce coeficienții sunt ajustați din ce în ce mai precis. Este posibil să vizualizați toate cele patru proiecții bidimensionale.

Dacă setați pasul de coborâre în gradient prea mare, puteți vedea că de fiecare dată vom sări peste minim și vom ajunge la rezultat într-un număr mai mare de pași, deși până la urmă vom ajunge totuși (dacă nu amânăm și pasul de coborâre). mult - atunci algoritmul va merge „în pică”). Și graficul erorii în funcție de pasul de iterație nu va fi neted, ci „sacadat”.

1. Generați date, setați pasul de coborâre a gradientului

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

2. Odată cu selectarea corectă a pasului de coborâre a gradientului, atingem ușor și rapid minimul

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

3. Dacă pasul de coborâre a gradientului este selectat incorect, depășim maximul, graficul de eroare este „sacadat”, convergența necesită un număr mai mare de pași

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

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

4. Dacă selectăm complet incorect pasul de coborâre a gradientului, ne îndepărtăm de minim

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

(Pentru a reproduce procesul folosind valorile pasului de coborâre a gradientului prezentate în imagini, bifați caseta „date de referință”).

Fișierul se află la acest link, trebuie să activați macrocomenzi, nu există viruși.

Potrivit comunității respectate, este acceptabilă o astfel de simplificare și metodă de prezentare a materialului? Merită să traduc articolul în engleză?

Sursa: www.habr.com

Adauga un comentariu