Cuprins
Lecția 10/Machine learning clasic/~1 săptămână

Nesupervizat și reducere dimensională

Clustering și proiecții. kNN, K-Means, DBSCAN, PCA, și ce e doar pentru vizualizare.

Toate lecțiileLecția 10 · Nesupervizat și reducere dimensională▾

Nu toate problemele au etichete. Uneori vrei doar să vezi structura din date: grupuri naturale, outlieri, o proiecție în două dimensiuni pe care s-o poți desena. Asta e învățarea nesupervizată: modelul găsește tipare fără să i se spună răspunsul corect. E utilă și de sine stătător, și ca pas de pregătire înainte de un model supervizat.

01

Supervizat vs nesupervizat

La supervizat aveai perechi (exemplu, etichetă) și învățai să prezici eticheta. La nesupervizat ai doar exemplele, fără răspuns. Modelul caută singur structură: care puncte seamănă între ele, pe ce direcții variază datele cel mai mult. Nu poți măsura corectitudinea la fel de simplu, pentru că nu ai cu ce compara.

02

K-Means: grupare pe centre

K-Means împarte datele în k grupuri, fiecare cu un centru. Fiecare punct e atribuit celui mai apropiat centru, apoi centrele se mută în media punctelor lor, și se repetă până se stabilizează. Simplu, rapid, dar trebuie să alegi tu k și e sensibil la scală.

Cum alegi k? Metoda cotului: rulezi pentru mai multe valori de k și desenezi cât de strânse sunt grupurile. Unde curba se îndoaie ca un cot, ai un k rezonabil. Scorul siluetă e o alternativă numerică, măsoară cât de bine se separă grupurile.

from sklearn.cluster import KMeans
km = KMeans(n_clusters=4, n_init=10, random_state=0)
labels = km.fit_predict(X_scalat)
03

DBSCAN și clustering ierarhic

DBSCAN grupează după densitate: unde punctele sunt înghesuite formează un grup, iar punctele izolate le marchează ca zgomot. Avantaje: nu trebuie să spui numărul de grupuri și găsește singur outlierii. Depinde de doi parametri, raza de vecinătate și câți vecini minim, pe care trebuie să-i reglezi.

Clustering-ul ierarhic construiește un arbore de grupuri, de la fiecare punct separat până la un singur grup mare. Îl desenezi ca dendrogramă și îl tai la nivelul care îți dă numărul de grupuri pe care îl vrei. Util când vrei să vezi structura la mai multe niveluri.

04

PCA: reducerea dimensionalității

Când ai zeci sau sute de coloane, e greu de vizualizat și modelele suferă (blestemul dimensionalității). PCA (analiza componentelor principale) găsește direcțiile pe care datele variază cel mai mult și le proiectează pe ele, păstrând cât mai multă informație în mai puține dimensiuni.

PCA îți spune cât din varianță păstrezi cu fiecare componentă. Poți reduce de la 100 de coloane la 10 care păstrează, să zicem, 95% din informație. E util și ca preprocesare înainte de un model, nu doar ca desen. Cere date scalate.

from sklearn.decomposition import PCA
p = PCA(n_components=0.95).fit(X_scalat)   # păstrează 95% din varianță
X_redus = p.transform(X_scalat)
print(X_redus.shape[1], "componente")
05

t-SNE și UMAP: doar pentru vizualizare

t-SNE și UMAP fac proiecții în 2D care arată frumos și scot în evidență grupuri. Sunt excelente ca să te uiți la structura datelor. Dar au o capcană importantă: distanțele și mărimile grupurilor din desen nu sunt de încredere. Două grupuri apropiate în desen nu sunt neapărat apropiate în realitate.

Probleme practice
  • Aplică K-Means și DBSCAN pe același set și compară grupurile găsite.
  • Redu la 2D cu PCA și cu UMAP și vezi ce diferă între ele.
  • Folosește metoda cotului ca să alegi k pe un set și justifică alegerea.
Dacă vrei mai mult