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 domeniu este esențial pentru automatizarea deciziilor complexe, precum recomandarea de produse, detectarea fraudelor sau predicția cererii pieței. Pentru cei care doresc să lucreze în IT, stăpânirea ML nu înseamnă doar teorie, ci capacitatea de a transforma date brute în valoare business tangibilă.
Concepte cheie
- Supervizat vs. Nesupervizat: În învățarea supervizată, modelul învață din date etichetate (input-output cunoscut), iar în cea nesupervizată, descoperă structuri ascunse în date neetichetate.
- Overfitting și Underfitting: Overfitting apare când modelul se potrivește prea bine cu zgomotul din datele de antrenament, pierzând capacitatea de generalizare, în timp ce underfitting indică un model prea simplu pentru a captura tendințele.
- Feature Engineering: Procesul de selecție și transformare a variabilelor brute în caracteristici relevante este adesea mai important decât alegerea algoritmului însuși pentru acuratețea finală.
- Metrici de evaluare: Precizia (accuracy), recall-ul și scorul F1 sunt cruciale pentru a măsura corect performanța, mai ales în cazuri de date dezechilibrate.
- Cross-validation: Tehnica de împărțire a datelor în mai multe fold-uri asigură că modelul este robust și nu depinde de o singură partiție a dataset-ului.
- Bias-Variance Tradeoff: Există un echilibru delicat între eroarea cauzată de presupunerile greșite ale modelului (bias) și sensibilitatea la fluctuațiile din datele de antrenament (variance).
Exemplu practic
Să presupunem că vrem să clasificăm emailurile ca spam sau non-spam folosind Python și biblioteca scikit-learn. Mai întâi, încărcăm datele și le împărțim în seturi de antrenament și test. Apoi, convertim textul în vectori numerici folosind CountVectorizer sau TfidfVectorizer, deoarece algoritmii nu pot procesa text brut direct.
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# Date simulare
emails = ["Cumpără acum!", "Salut, cum ești?", "Ofertă limitată!"]
labels = [1, 0, 1] # 1=spam, 0=non-spam
# Transformare text în numere
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(emails)
# Antrenare model
model = MultinomialNB()
model.fit(X, labels)
# Predicție
print(model.predict(vectorizer.transform(["Ofertă specială"])))
Acest exemplu simplu ilustrează fluxul standard: curățare date, inginerie de feature-uri, antrenament și predicție.
Greșeli frecvente
- Ignorarea calității datelor: Un model antrenat pe date murdare, incomplete sau bias-uite va produce rezultate inutile („garbage in, garbage out”).
- Data leakage: Folosirea informațiilor din setul de testare în timpul fazei de antrenament sau preprocesare duce la metrici optimiste, dar nerealiste.
- Neglijarea explorării datelor (EDA): Sări direct la modelare fără a înțelege distribuția variabilelor și relațiile dintre ele este o capcană comună pentru începători.
Întrebări de interviu
1. Care este diferența dintre regresie și clasificare? Regresia prezice valori continue (ex: prețul unei case), în timp ce clasificarea prezice clase discrete (ex: spam/non-spam).
2. Ce faci dacă ai un dataset foarte dezechilibrat? Poți folosi tehnici de resampling (oversampling clasa minoritară sau undersampling cea majoritară), ajustarea ponderilor claselor sau utilizarea metricilor adecvate precum F1-score sau AUC-ROC.
3. De ce este importanta normalizarea datelor? Multe algoritme (ex: KNN, SVM, Rețele Neurale) sunt sensibile la scara datelor; normalizarea asigură că variabilele cu valori mari nu domină cele cu valori mici.
Exercițiu
Alocă 45 de minute pentru a descărca dataset-ul „Iris” sau „Titanic” de pe Kaggle. Folosește pandas pentru a încărca datele și matplotlib pentru a vizualiza distribuția variabilei țintă. Identifică valorile lipsă și tratează-le (ștergere sau umplere cu media/mediană). În final, antrenează un model simplu de regresie logistică și raportează acuratețea pe setul de test. Scopul este să te obișnuiești cu fluxul de lucru, nu cu complexitatea modelului.