Connect with us

IA 101

Ce sunt Mașinile cu Vectori de Susținere?

mm

Ce sunt Mașinile cu Vectori de Susținere?

Mașinile cu vectori de susținere sunt un tip de clasificator de învățare automată, probabil unul dintre cele mai populare tipuri de clasificatori. Mașinile cu vectori de susținere sunt deosebit de utile pentru predicția numerică, clasificare și recunoașterea modelelor.

Mașinile cu vectori de susținere funcționează prin desenarea granițelor de decizie între punctele de date, urmărind granița de decizie care separă cel mai bine punctele de date în clase (sau care este cea mai generalizabilă). Scopul atunci când se utilizează o mașină cu vectori de susținere este ca granița de decizie între puncte să fie cât mai mare posibil, astfel încât distanța dintre orice punct de date și linia de graniță să fie maximizată. Acesta este un rezumat rapid al modului în care mașinile cu vectori de susținere (SVM) funcționează, dar să luăm ceva timp pentru a explora mai în profunzime modul în care SVM funcționează și pentru a înțelege logica din spatele funcționării lor.

Scopul Mașinilor cu Vectori de Susținere

Imaginați-vă un grafic cu un număr de puncte de date pe el, bazat pe caracteristici specificate de axele X și Y. Punctele de date de pe grafic pot fi împărțite aproximativ în două cluster diferite, iar clusterul din care face parte un punct de date indică clasa punctului de date. Acum, presupuneți că dorim să desenăm o linie pe grafic care separă cele două clase una de cealaltă, cu toate punctele de date dintr-o clasă pe o parte a liniei și toate punctele de date din cealaltă clasă pe cealaltă parte a liniei. Această linie de separare se numește hiperplan.

Puteți gândi o mașină cu vectori de susținere ca creând “drumuri” într-un oraș, separând orașul în districte de o parte și de alta a drumului. Toate clădirile (punctele de date) care se află pe o parte a drumului aparțin unui district.

Scopul unei mașinile cu vectori de susținere nu este doar să deseneze hiperplane și să divizeze punctele de date, ci să deseneze hiperplanul care separă punctele de date cu cel mai mare margin, sau cu cel mai mult spațiu între linia de separare și orice punct de date. Revenind la metafora “drumurilor”, dacă un urbanist desenează planuri pentru o autostradă, el nu vrea ca autostrada să fie prea aproape de case sau de alte clădiri. Cu cât este mai mare acest spațiu, cu atât mai “sigur” poate fi clasificatorul despre predicțiile sale. În cazul clasificării binare, desenarea hiperplanului corect înseamnă alegerea unui hiperplan care este exact în mijlocul celor două clase. Dacă granița de decizie/hiperplanul este mai departe de o clasă, va fi mai aproape de cealaltă. Prin urmare, hiperplanul trebuie să echilibreze spațiul între cele două clase.

Calcularea Hiperplanului de Separare

Cum determină o mașină cu vectori de susținere cel mai bun hiperplan de separare/graniță de decizie? Acest lucru se realizează prin calcularea posibilelor hiperplane utilizând o formulă matematică. Nu vom acoperi formula pentru calcularea hiperplanurilor în detaliu, dar linia este calculată cu formula de pantă/linie faimoasă:

Y = ax + b

În timp ce liniile sunt alcătuite din puncte, ceea ce înseamnă că orice hiperplan poate fi descris ca: mulțimea de puncte care rulează paralel cu hiperplanul propus, așa cum este determinat de greutățile modelului înmulțite cu mulțimea de caracteristici modificate de o anumită offset/bias (“d”).

SVM-urile desenează multe hiperplane. De exemplu, linia de graniță este un hiperplan, dar punctele de date pe care clasificatorul le consideră sunt și pe hiperplane. Valorile pentru x sunt determinate pe baza caracteristicilor din setul de date. De exemplu, dacă ați avea un set de date cu înălțimile și greutățile multor oameni, caracteristicile “înălțime” și “greutate” ar fi caracteristicile utilizate pentru a calcula “X”. Spațiile dintre hiperplanul propus și diversele “vectori de susținere” (puncte de date) găsite pe ambele părți ale hiperplanului de separare sunt calculate cu următoarea formulă:

W * X – b

Deși puteți citi mai multe despre matematica din spatele SVM-urilor, dacă sunteți în căutarea unei înțelegeri mai intuitive a lor, știți doar că scopul este de a maximiza distanța dintre hiperplanul de separare propus și celelalte hiperplane care rulează paralel cu el (și pe care se află punctele de date).

Foto: ZackWeinberg via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

Clasificarea Multiclase

Procesul descris până acum se aplică sarcinilor de clasificare binară. Cu toate acestea, clasificatorii SVM pot fi utilizați și pentru sarcini de clasificare nebinară. Atunci când se efectuează clasificarea SVM pe un set de date cu trei sau mai multe clase, se utilizează mai multe linii de graniță. De exemplu, dacă o sarcină de clasificare are trei clase în loc de două, se vor utiliza două linii de separare pentru a diviza punctele de date în clase și regiunea care constituie o singură clasă va fi între două linii de separare, în loc de una. În loc de a calcula doar distanța dintre două clase și o graniță de decizie, clasificatorul trebuie să ia în considerare acum spațiile dintre granițele de decizie și multiplele clase din setul de date.

Separări Neliniare

Procesul descris mai sus se aplică cazurilor în care datele sunt liniar separabile. Notați că, în realitate, seturile de date sunt aproape niciodată complet liniar separabile, ceea ce înseamnă că atunci când se utilizează un clasificator SVM, veți avea adesea nevoie să utilizați două tehnici diferite: marjă moale și trucuri cu kernel. Luați în considerare o situație în care punctele de date din clase diferite sunt amestecate, cu unele instanțe care aparțin unei clase în “clusterul” altei clase. Cum ați putea face ca clasificatorul să gestioneze aceste instanțe?

O tactică care poate fi utilizată pentru a gestiona seturile de date neliniar separabile este aplicarea unui clasificator SVM cu “marjă moale”. Un clasificator cu marjă moale funcționează prin acceptarea unor puncte de date malclasificate. Va încerca să deseneze o linie care să separe cel mai bine clusterul de puncte de date una de cealaltă, deoarece conține majoritatea instanțelor care aparțin claselor respective. Clasificatorul cu marjă moale SVM încearcă să creeze o linie de separare care echilibrează cele două cerințe ale clasificatorului: acuratețea și marja. Va încerca să minimizeze malclasificarea, în timp ce maximizează marja.

Toleranța SVM la eroare poate fi ajustată prin manipularea unui hiperparametru numit “C”. Valoarea C controlează câte vectori de susținere ia în considerare clasificatorul atunci când desenează granițe de decizie. Valoarea C este o penalizare aplicată malclasificărilor, ceea ce înseamnă că cu cât valoarea C este mai mare, cu atât mai puțini vectori de susținere ia în considerare clasificatorul și cu atât mai îngustă este marja.

Trucul cu kernel transformă datele și le transformă într-un mod neliniar. Foto: Shiyu Ju via Wikmedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

Trucul cu kernel funcționează prin aplicarea unor transformări neliniare caracteristicilor din setul de date. Trucul cu kernel ia caracteristicile existente din setul de date și creează caracteristici noi prin aplicarea unor funcții matematice neliniare. Ceea ce rezultă din aplicarea acestor transformări neliniare este o graniță de decizie neliniară. Deoarece clasificatorul SVM nu mai este limitat la desenarea granițelor de decizie liniare, el poate începe să deseneze granițe de decizie curbate care să încorporeze mai bine distribuția reală a vectorilor de susținere și să minimizeze malclasificările. Două dintre cele mai populare kerneluri neliniare SVM sunt Radial Basis Function și Polynomial. Funcția polinomială creează combinații polinomiale ale tuturor caracteristicilor existente, în timp ce funcția Radial Basis generează caracteristici noi prin măsurarea distanței dintre un punct central/puncte și toate celelalte puncte.

Blogger și programator cu specializări în Machine Learning și Deep Learning subiecte. Daniel speră să ajute pe alții să folosească puterea inteligenței artificiale pentru binele social.