Machine Learning (ML) este ramura inteligenței artificiale care permite sistemelor să învețe din date și să îmbunătățească performanța fără a fi programate explicit pentru fiecare scenariu. În practică, acest lucru contează deoarece modelele pot identifica tipare complexe, face predicții și automatizează decizii la scară largă, transformând datele brute în valoare business tangibilă. Pentru un viitor profesionist, înțelegerea ML nu înseamnă doar teorie, ci capacitatea de a construi soluții care rezolvă probleme reale, de la recomandări de produse la detectarea fraudelor.
Concepte cheie
- Date de antrenament: Setul de informații utilizat pentru a „învăța” modelul, reprezentând baza de cunoștințe din care algoritmul extrage reguli.
- Feature Engineering: Procesul de selecție și transformare a variabilelor brute în formatul optim pe care modelul îl poate procesa eficient.
- Supervizat vs. Nesupervizat: În cel supervizat, datele au etichete cunoscute (clasificare/regresie), iar în cel nesupervizat, algoritmul caută structuri ascunse fără ghidaj.
- Overfitting: Situația în care modelul memorează zgomotul din datele de antrenament, reușind prea bine pe ele, dar eșuând la date noi necunoscute.
- Validare încrucișată (Cross-validation): O tehnică robustă de evaluare a performanței modelului, împărțind datele în mai multe subseturi pentru a testa generalizarea.
- Metrici de evaluare: Indicatori precum acuratețea (accuracy), precizia (precision) sau recall-ul, esențiali pentru a măsura cât de bine funcționează modelul în contextul specific.
- Pipeline ML: Fluxul de lucru care include colectarea datelor, curățarea, antrenarea, validarea și deploy-ul modelului în producție.
Exemplu practic
Să presupunem că vrem să prezicem prețul unei case în funcție de suprafață. Folosind Python și biblioteca scikit-learn, putem crea un model simplu de regresie liniară.
import numpy as np
from sklearn.linear_model import LinearRegression
# Date simulare: [suprafață] -> [preț]
X = np.array([[100], [150], [200], [250]])
y = np.array([100000, 150000, 200000, 250000])
# Inițializare și antrenare
model = LinearRegression()
model.fit(X, y)
# Predicție pentru o casă de 180 mp
prezicere = model.predict([[180]])
print(f"Prețul estimat: {prezicere[0]}")
Acest exemplu arată fluxul minim vital: pregătirea datelor, antrenarea (fit) și predicția (predict). În practică, datele vor fi mult mai complexe și vor necesita mai multă curățare.
Greșeli frecvente
- Ignorarea calității datelor: Un model antrenat pe date murdare sau biasuite va produce rezultate eronate („garbage in, garbage out”).
- Testarea pe aceleași date cu care s-a antrenat: Aceasta duce la o estimare artificială a performanței; întotdeauna separă datele de antrenare de cele de test.
- Supra-optimizarea hiperparametrilor: Tunarea excesivă a modelului pe datele de validare poate duce la overfitting, făcându-l inutil în producție.
- Neinterpretarea rezultatelor: A se concentra doar pe metrici numerice fără a înțelege implicațiile business ale greșelilor modelului.
Întrebări de interviu
1. Care este diferența dintre overfitting și underfitting? Underfitting apare când modelul este prea simplu pentru a capta tiparele datelor (performanță slabă pe antrenare și test). Overfitting apare când modelul este prea complex și memorează datele de antrenare (performanță bună pe antrenare, proastă pe test).
2. De ce este importantă împărțirea datelor în train/test split? Este crucială pentru a evalua capacitatea modelului de a generaliza pe date necunoscute, simulând scenariul real unde modelul va întâlnit date noi, nu pe cele cu care a fost instruit.
3. Ce facem dacă avem un dataset foarte dezechilibrat? Putem folosi tehnici de resampling (oversampling clasei minoritare sau undersampling clasei majoritare), asignarea de ponderi diferitelor clase sau utilizarea metricilor adecvate precum F1-score sau ROC-AUC.
Exercițiu
Alocă 45 de minute pentru a descărca datasetul „Iris” sau „Titanic” de pe Kaggle. Folosește pandas pentru a încărca datele și scikit-learn pentru a antrena un clasificator simplu (ex: Decision Tree sau Logistic Regression). Scopul este să obții o matrice de confuzie și să raportezi acuratețea modelului. Nu te preocupa de optimizare avansată; concentrează-te pe înțelegerea fluxului de date și a interpretării rezultatelor inițiale.