Toate moduleleS14 · 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.
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.
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)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.
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")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.
- Nesupervizat = găsești structură fără etichete (grupuri, direcții de variație).
- K-Means cere să alegi k și date scalate; alegi k cu cotul sau silueta.
- DBSCAN găsește singur numărul de grupuri și outlierii, după densitate.
- PCA reduce dimensiunile păstrând varianța; bun și ca preprocesare.
- t-SNE și UMAP sunt doar pentru privit, distanțele din ele nu sunt de încredere.