Sari la conținutul principal

Ajustarea hiperparametrilor: metode, bune practici și exemple

Un ghid practic despre ajustarea hiperparametrilor, care acoperă cum funcționează, principalele metode de căutare (grid, aleatorie, bayesiană), strategiile de evaluare și cum să o rulezi în Python și R.
Actualizat 28 iul. 2026  · 15 min. citire

Explorează cu AI

ChatGPTClaudePerplexity

Acuratețea modelului tău nu e slabă pentru că ai ales algoritmul greșit – ci pentru că nu l-ai ajustat niciodată.

Cei mai mulți antrenează un model cu setările implicite, văd cum acuratețea se stabilizează pe la 80% și concluzionează că algoritmul nu e potrivit pentru sarcina lor. Dar algoritmul nu e problema. Fiecare model ML are parametri care controlează cum învață, iar acești parametri sunt setați înainte să înceapă antrenarea. Dacă îi alegi corect, poți obține cu 10–20% mai multă acuratețe din același model pe aceleași date.

Acești parametri se numesc hiperparametri, iar alegerea lor inspirată face diferența între un model „merge și el” și unul care pare că nimerește mereu. Ajustarea hiperparametrilor este procesul de căutare a combinației care îți oferă cea mai bună performanță.

În acest articol, te ghidez prin ce înseamnă ajustarea hiperparametrilor, strategiile de căutare care funcționează cel mai bine, cum să evaluezi rezultatele fără să te păcălești și cum să rulezi totul în Python și R.

Dacă ești la început cu data science și machine learning, consultă cursul Machine Learning Fundamentals in Python înainte de a trece la subiecte mai avansate.

Ce este ajustarea hiperparametrilor?

Ajustarea hiperparametrilor este procesul de a găsi setările care fac un model să învețe cât mai bine.

Fiecare model ML are două tipuri de numere. Unele sunt învățate din date în timpul antrenării, precum greutățile dintr-o rețea neuronală sau punctele de împărțire dintr-un arbore de decizie. Altele sunt setate înainte ca antrenarea să înceapă – aceștia sunt hiperparametrii. Ei controlează cum învață modelul – cât de repede, cât de adânc, cât ar trebui să generalizeze sau să memoreze.

Hiperparametrii implicați există ca să îți permită să rulezi un model. Nu sunt concepuți să îți ofere cel mai bun model pentru setul tău de date. O rată de învățare implicită ce funcționează la clasificarea imaginilor logic nu va performa la fel de bine pe date tabelare. O adâncime de arbore implicită, potrivită pentru un set curat, va supraînvăța pe unul zgomotos. Ai prins ideea.

Procesul de ajustare caută prin diferite combinații de valori ale hiperparametrilor, antrenează un model pentru fiecare și îl păstrează pe cel care performează cel mai bine pe datele de validare. 

Ceea ce poți obține astfel e adesea mai bun decât trecerea la un algoritm „mai bun” dar neajustat.

Hiperparametri vs. parametri de model

Diferența ține de cine îi setează și când.

Parametrii modelului sunt învățați de algoritm în timpul antrenării. Nu îi setezi tu. Procesul de antrenare îi ajustează analizând datele și minimizând o funcție de pierdere. De exemplu:

  • Greutăți și biase într-o rețea neuronală
  • Coeficienți într-o regresie liniară
  • Praguri de împărțire într-un arbore de decizie
  • Vectori de suport într-un SVM

Hiperparametrii sunt aleși de tine înainte să înceapă antrenarea. Ei controlează cum funcționează procesul de învățare, iar algoritmul nu îi va ajusta în niciun fel. Dacă nu îi setezi, biblioteca folosește valorile implicite. De exemplu:

  • Rata de învățare în gradient descent
  • Numărul de arbori într-un random forest
  • Intensitatea regularizării în regresia logistică
  • Tipul de kernel într-un SVM

Iată o comparație, cot la cot:

  Parametri ai modelului Hiperparametri
Setați de Algoritmul de antrenare Tu
Când În timpul antrenării Înainte de antrenare
Învățați din date Da Nu
Exemple Greutăți, coeficienți, puncte de împărțire Rată de învățare, adâncimea arborelui, intensitatea regularizării
Se schimbă între rulări De fiecare dată când reantrenezi Doar dacă îi modifici

Parametrii modelului răspund la „ce a învățat modelul”. Hiperparametrii răspund la „cum a învățat”.

Cum funcționează ajustarea hiperparametrilor

Ajustarea este o buclă.

Începi prin a alege hiperparametrii pe care vrei să îi cauți și a defini un interval de valori pentru fiecare. Apoi antrenezi un model cu o combinație, măsori performanța pe datele de validare și folosești rezultatul pentru a decide ce încerci mai departe.

Bucla arată așa:

  1. Selectează hiperparametrii pe care să-i ajustezi și alege un interval de valori pentru fiecare.
  2. Antrenează modelul cu o combinație specifică de valori.
  3. Evaluează performanța pe un set de validare folosind o metrică adecvată sarcinii tale.
  4. Actualizează hiperparametrii pe baza a ceea ce ai învățat – fie treci la următoarea combinație dintr-o listă predefinită, fie folosești ultimul rezultat pentru a ghida următoarea alegere.
  5. Repetă până când performanța nu mai crește sau rămâi fără buget de calcul.

Modul în care actualizezi între iterații diferențiază metodele de căutare. Ajustarea manuală merge pe intuiție. Grid search parcurge o listă predefinită. Metodele bayesiene construiesc un model al combinațiilor cu șanse bune.

Hai să intrăm în detalii.

Metode de căutare a hiperparametrilor

Metoda de căutare aleasă îți dictează cât calcul consumi și cât de probabil e să găsești hiperparametri buni.

Căutare manuală

Căutarea manuală e cea mai simplă metodă. Alegi o combinație de hiperparametri, antrenezi modelul, te uiți la rezultat și ajustezi pe baza a ceea ce ai observat.

Funcționează când ai un model mic, câțiva hiperparametri și experiență cu algoritmul. Dacă știi deja că XGBoost preferă de obicei o rată de învățare în jur de 0,05 și adâncime a arborelui de 6, poți începe de acolo și ajusta după ce observi.

Căutarea manuală nu mai merge când spațiul de căutare crește. Trei hiperparametri cu câte cinci valori rezonabile fiecare îți dau deja 125 de combinații, iar nimeni nu ajustează manual 125 de modele.

Grid search

Grid search verifică fiecare combinație dintr-o listă predefinită de valori.

Definiți o grilă – de exemplu, rate de învățare [0.01, 0.05, 0.1] și adâncimi ale arborelui [3, 5, 7] – iar grid search antrenează un model pentru fiecare din cele nouă combinații. E exhaustiv și reproductibil.

Problema este costul de calcul. 

Adăugarea unui hiperparametru cu cinci valori îți înmulțește rulările de antrenare cu cinci. Grid search mai și irosește efort pe valori care nu contează – dacă adâncimea abia îți afectează scorul, tot va antrena un model pentru fiecare adâncime listată.

Grid search e un implicit bun pentru spații mici cu doi-trei hiperparametri.

Random search

Random search eșantionează combinații aleatorii dintr-un interval în loc să parcurgă o grilă fixă.

Definiți o distribuție pentru fiecare hiperparametru, iar random search extrage combinații din aceste distribuții. E mai eficient decât grid search pentru că nu irosește rulări pe valori neimportante – dacă doar unul din trei hiperparametri influențează performanța, random search tot va explora acel important pe multe valori diferite.

Grid search versus random search

Grid search versus random search

Random search este implicitul mai bun pentru orice cu mai mult de doi hiperparametri.

Optimizare bayesiană

Optimizarea bayesiană folosește rezultatele încercărilor anterioare ca să decidă ce să încerce în continuare.

Construiește un model probabilistic al modului în care combinațiile de hiperparametri se leagă de performanță, apoi alege următoarea combinație care are fie scorul așteptat cel mai mare, fie cea mai mare incertitudine. Aceasta e balanța explorare–exploatare: ori explorezi regiuni noi promițătoare, ori exploatezi regiuni deja bune.

Metodele bayesiene găsesc hiperparametri buni în mult mai puține încercări decât random sau grid search. Compromisul este că fiecare încercare durează puțin mai mult, deoarece algoritmul își potrivește modelul intern înainte de a alege următorul punct. Biblioteci precum Optuna și Hyperopt fac asta pentru tine.

Folosește optimizarea bayesiană când antrenarea e costisitoare și îți permiți doar un număr mic de rulări.

Successive halving și Hyperband

Successive halving și Hyperband reduc timpul de calcul oprind devreme rulările slabe.

Successive halving pornește multe combinații de hiperparametri cu un buget mic de antrenare, elimină jumătatea cea mai slabă, dublează bugetul pentru supraviețuitori și repetă. 

Hyperband este un înveliș peste successive halving care îl rulează de mai multe ori cu împărțiri diferite ale bugetului, astfel încât nu trebuie să ghicești configurația inițială corectă.

Ambele metode sunt utile când antrenarea e lentă și ai un spațiu mare de căutare. Funcționează cel mai bine când performanța timpurie este un semnal decent pentru performanța finală, ceea ce e de obicei adevărat pentru rețele neuronale și boosting gradient.

Iată cum se compară metodele:

  Cost de calcul Eficiența căutării Cel mai potrivit pentru
Căutare manuală Scăzut Scăzut Modele mici, experiență anterioară
Grid search Ridicat Scăzut 2–3 hiperparametri, intervale mici
Random search Mediu Mediu 4+ hiperparametri, importanță necunoscută
Optimizare bayesiană Mediu Ridicată Antrenare costisitoare, buget mic
Successive halving / Hyperband Scăzut spre mediu Ridicată Spații de căutare mari, antrenare lentă

Evaluarea performanței hiperparametrilor

Ajustarea nu te va duce departe dacă nu alegi un interval corect de valori.

Dacă evaluarea e greșită, vei alege hiperparametrii nepotriviți. Sunt patru lucruri de făcut corect – cum împarți datele, cum măsori performanța, ce metrică optimizezi și cum păstrezi setul de test „curat”.

Împărțiri train, validation și test

Împarte datele în trei părți înainte de ajustare.

Setul de antrenare este cel din care învață modelul. Setul de validare este cel folosit pentru a puncta fiecare combinație de hiperparametri în timpul ajustării. Setul de test este folosit o singură dată, la final, pentru a măsura cum performează modelul final pe date nevăzute.

Dacă ajustezi folosind setul de test, vei obține un număr de acuratețe care arată grozav și un model care subperformează în producție. Fiecare decizie de ajustare luată pe baza setului de test scurge informație despre el în modelul tău.

O împărțire comună este 60/20/20 pentru seturi de date medii sau 80/10/10 pentru cele mari.

Cross-validation

Cross-validation este o modalitate mai bună de a puncta hiperparametrii când setul de validare e mic.

Împarți datele de antrenare în k fold-uri – de obicei 5 sau 10. Pentru fiecare combinație de hiperparametri, antrenezi pe k-1 fold-uri și validezi pe cel rămas, apoi rotești. Scorul final este media tuturor fold-urilor.

Cross-validation îți oferă o estimare mai stabilă a cât de bine generalizează o combinație de hiperparametri, pentru că nu te bazezi pe o singură împărțire de validare norocoasă sau ghinionistă. Costul este că antrenezi k modele per combinație în loc de unul.

Folosește cross-validation când setul de date e suficient de mic încât o singură împărțire de validare nu e de încredere și când îți permiți costul suplimentar de antrenare.

Selectarea metricilor de evaluare

Metrica pe care o optimizezi ar trebui să reflecte ce te interesează de fapt.

Acuratețea e ok pentru clasificare echilibrată, dar nu are sens pentru probleme dezechilibrate. De exemplu, un model de detectare a fraudei care prezice „nu e fraudă” pentru toate poate obține 99% acuratețe, ratând fiecare caz. Pentru clasificare dezechilibrată, folosește precizie, recall, F1 sau ROC-AUC. Pentru regresie, folosește RMSE, MAE sau R pătrat în funcție de cât contează valorile extreme.

Alege doar o metrică principală înainte să începi ajustarea și rămâi la ea.

Evitarea scurgerii de date

Scurgerea de date apare când informații din setul de validare sau test ajung în antrenare.

Iată câteva moduri comune în care apare:

  • Scalarea sau normalizarea întregului set înainte de împărțire, astfel încât statisticile de validare se scurg în antrenare
  • Feature engineering care folosește valorile țintă din întregul set
  • Ajustare pe setul de test în loc de un set de validare separat
  • Folosirea datelor de tip serie temporală fără a respecta ordinea temporală la împărțire

Potrivește toate pașii de preprocesare doar pe setul de antrenare, apoi aplică-i pe validare și test. În scikit-learn, pentru asta este Pipeline – înfășoară preprocesarea și modelarea într-un singur obiect care respectă împărțirile.

Implementarea ajustării hiperparametrilor

Majoritatea bibliotecilor ML includ instrumente care fac căutarea și cross-validation, astfel încât nu trebuie să implementezi de la zero.

Ajustarea hiperparametrilor în Python

Scikit-learn vine cu două clase de ajustare care acoperă majoritatea cazurilor – GridSearchCV pentru grid search și RandomizedSearchCV pentru random search. Ambele înfășoară orice estimator scikit-learn, rulează cross-validation pentru fiecare combinație și îți oferă la final cel mai bun model.

GridSearchCV primește un estimator, un dicționar cu valori de hiperparametri și numărul de fold-uri pentru cross-validation. Antrenează un model pentru fiecare combinație și îl păstrează pe cel cu cel mai bun scor.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, random_state=42)

param_grid = {
    "n_estimators": [100, 200, 500],
    "max_depth": [5, 10, 20],
    "min_samples_leaf": [1, 5, 10],
}

grid = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=5)
grid.fit(X, y)

print(grid.best_params_)
print(grid.best_score_)

Rezultatele GridSearchCV în Python

Rezultatele GridSearchCV în Python

RandomizedSearchCV folosește aceeași interfață, dar eșantionează din distribuții în loc să parcurgă o listă fixă. Astfel poți acoperi un interval mai larg cu un număr fix de încercări.

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

param_dist = {
    "n_estimators": randint(100, 500),
    "max_depth": randint(3, 20),
    "min_samples_leaf": randint(1, 10),
}

random_search = RandomizedSearchCV(
    RandomForestClassifier(random_state=42),
    param_dist,
    n_iter=30,
    cv=5,
    random_state=42,
)
random_search.fit(X, y)

print(random_search.best_params_)

Rezultatele RandomizedSearchCV în Python

Rezultatele RandomizedSearchCV în Python

Pentru optimizare bayesiană, Optuna este alegerea standard. Alege următoarea combinație pe baza rezultatelor anterioare, deci converge mai repede decât random search când antrenarea e costisitoare.

import optuna
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

def objective(trial):
    params = {
        "n_estimators": trial.suggest_int("n_estimators", 100, 500),
        "max_depth": trial.suggest_int("max_depth", 3, 20),
        "min_samples_leaf": trial.suggest_int("min_samples_leaf", 1, 10),
    }
    model = RandomForestClassifier(**params, random_state=42)
    return cross_val_score(model, X, y, cv=5).mean()

study = optuna.create_study(direction="maximize")
study.optimize(objective, n_trials=30)

print(study.best_params)

Rezultatele Optuna în Python

Rezultatele Optuna în Python

Metodele trial.suggest_* definesc spațiul de căutare, iar Optuna decide ce combinație să încerce în continuare pe baza scorurilor văzute până acum.

Ajustarea hiperparametrilor în R

R are două opțiuni excelente – caret și tidymodels. Ambele fac același lucru – definesc o grilă, rulează cross-validation, returnează cel mai bun model – dar tidymodels este implicitul modern.

Cu caret, pasezi o grilă de ajustare funcției train() și specifici metoda de resincronizare.

library(caret)

data <- iris
ctrl <- trainControl(method = "cv", number = 5)

grid <- expand.grid(
  mtry = c(2, 3, 4)
)

model <- train(
  Species ~ .,
  data = data,
  method = "rf",
  trControl = ctrl,
  tuneGrid = grid
)

print(model$bestTune)

Rezultatele Caret în R

Rezultatele Caret în R

tidymodels împarte fluxul de lucru în pași clari – o specificație de model, o rețetă de preprocesare și o grilă de ajustare. E mai verbose, dar în practică e mai scalabil.

library(tidymodels)

data <- iris
split <- initial_split(data, prop = 0.8)
train_data <- training(split)

rf_spec <- rand_forest(
  mtry = tune(),
  trees = tune(),
  min_n = tune()
) |>
  set_engine("ranger") |>
  set_mode("classification")

grid <- grid_regular(
  mtry(range = c(2, 4)),
  trees(range = c(100, 500)),
  min_n(range = c(1, 10)),
  levels = 3
)

folds <- vfold_cv(train_data, v = 5)

results <- tune_grid(
  rf_spec,
  Species ~ .,
  resamples = folds,
  grid = grid
)

show_best(results, metric = "accuracy")

Rezultatele Tidymodels în R

Rezultatele Tidymodels în R

Fluxul de lucru este exact același ca în Python – definești ce să cauți, definești cum să punctezi și lași biblioteca să ruleze bucla.

Ce hiperparametri ar trebui să ajustezi?

Nu fiecare hiperparametru merită ajustat, pentru că de obicei doar câțiva controlează cea mai mare parte din performanță. Iată pe cei care contează de obicei la început, pe familii de modele.

Arbori de decizie și random forests

Ar trebui să ajustezi mereu aceste trei:

  • Adâncimea maximă controlează până unde poate crește fiecare arbore. Arborii superficiali subînvață, cei adânci supraînvață. De obicei acesta e primul parametru de ajustat.
  • Numărul minim de mostre pe frunză stabilește câte puncte de antrenare are nevoie un nod frunză. Valori mai mari forțează generalizarea în locul memorării rândurilor individuale.
  • Numărul de arbori într-un random forest. Mai mulți arbori oferă un model mai stabil, dar cu randamente descrescătoare după câteva sute. Ajustează asta la final.

Modele de gradient boosting

Gradient boosting (XGBoost, LightGBM, CatBoost) este mai sensibil la hiperparametri decât random forests. Acordă atenție la:

  • Rata de învățare controlează cât de mult corectează fiecare arbore nou pe cei anteriori. Ratele mici sunt mai precise dar au nevoie de mai mulți arbori. Este cel mai important hiperparametru de ajustat.
  • Numărul de estimatori reprezintă numărul de runde de boosting. Leagă-l de rata de învățare – dacă reduci una, crește-o pe cealaltă.
  • Adâncimea arborelui controlează cât de complex este fiecare arbore individual. Boosting preferă de obicei arbori mai superficiali decât random forests, tipic 3–8.

Mașini cu vectori de suport

La SVM-uri, alegerea hiperparametrilor contează mult, poate mai mult decât la alte modele:

  • C controlează balanța dintre o marjă largă și clasificarea corectă a punctelor de antrenare. C mai mare înseamnă regularizare mai slabă.
  • Gamma controlează cât de departe ajunge influența unui singur punct de antrenare. Gamma mic înseamnă departe, gamma mare înseamnă aproape.
  • Kernel determină forma frontierei de decizie pe care o poate învăța SVM. Pornește cu rbf pentru probleme neliniare și linear pentru date sparse, de înaltă dimensiune.

Rețele neuronale

Rețelele neuronale au cel mai mare spațiu de căutare dintre familiile obișnuite de modele. Ajustează întâi acestea:

  • Rata de învățare este cel mai important hiperparametru în deep learning. Prea mare și antrenarea diverge, prea mică și nu converge niciodată. Încearcă valori pe ordine de mărime precum 1e-4, 1e-3, 1e-2.
  • Dimensiunea batch-ului afectează atât viteza de antrenare, cât și acuratețea finală. Batch-urile mai mari antrenează mai rapid per epocă, dar adesea generalizează mai slab.
  • Optimizatorul ales (Adam, SGD cu momentum, AdamW) schimbă modul în care rețeaua își actualizează greutățile. Adam e un implicit bun.
  • Epoci reprezintă de câte ori modelul vede setul complet de antrenare. Folosește oprire timpurie în loc să ajustezi asta manual.

Provocări comune în ajustarea hiperparametrilor

Ajustarea e costisitoare, mai ales când vrei să testezi mai multe valori per parametru și ai mulți parametri de reglat. Iată câteva provocări comune.

Costul de calcul este constrângerea principală. Fiecare combinație înseamnă antrenarea unui model complet, iar cross-validation înmulțește asta cu numărul de fold-uri. O grilă cu 100 de combinații și CV în 5 fold-uri înseamnă 500 de fit-uri. Dacă fiecare fit durează 10 minute, asta depășește trei zile.

Spații mari de căutare cresc multiplicativ. Cinci hiperparametri cu câte cinci valori fiecare înseamnă 3.125 de combinații. Aici grid search nu mai e o opțiune și e înlocuit cu random search sau metode bayesiene.

Randamente descrescătoare apar mai devreme decât se așteaptă majoritatea. Primele câteva rulări de ajustare îți aduc de obicei cele mai mari câștiguri. Următoarele 50 ar putea mai scoate încă un procent. La un moment dat, calculul în plus e mai bine cheltuit pe mai multe date sau pe îmbunătățirea caracteristicilor.

Compromisul acuratețe–timp contează mai mult în producție decât în dezvoltare. Un model care punctează cu 0,5% mai mare dar durează dublu să se antreneze s-ar putea să nu merite dacă reantrenezi zilnic. Ar trebui să decizi din start câtă acuratețe merită cât calcul.

Bune practici pentru ajustarea hiperparametrilor

Iată câteva obiceiuri bune când ajustezi hiperparametrii unui model de machine learning:

  • Ajustează mai întâi hiperparametrii cei mai influenți: Rata de învățare pentru boosting și rețele neuronale. Adâncimea maximă pentru arbori. C și gamma pentru SVM. Aduce-i în intervalul corect înainte de orice altceva.
  • Începe cu random search pentru spații mari: Grid search irosește calcul pe hiperparametri neimportanți. Random search acoperă mai bine spațiul și e alegerea potrivită pentru orice cu mai mult de doi-trei hiperparametri.
  • Folosește cross-validation: O singură împărțire de validare poate fi norocoasă sau ghinionistă. Cinci fold-uri îți dau o estimare mult mai onestă a generalizării.
  • Definește intervale realiste de căutare: Dacă intervalul ratei de învățare este [0.001, 100], vei irosi timp pe valori care nu funcționează niciodată. Începe cu intervale recunoscute drept rezonabile pentru algoritmul tău, apoi îngustează-le pe baza a ceea ce vezi.
  • Urmărește-ți experimentele: Loghează valorile hiperparametrilor, scorul și seed-ul pentru fiecare rulare. Instrumente precum MLflow, Weights & Biases sau chiar un fișier CSV funcționează. Fără asta, nu îți poți reproduce rezultatele.
  • Stabilește un buget de calcul: Decide de câte încercări îți permiți înainte să începi, nu după. Asta te obligă să alegi o metodă de căutare care se potrivește și te oprește din a ajusta mai mult decât e cazul.

Greșeli frecvente în ajustarea hiperparametrilor

Cele mai multe eșecuri de ajustare se datorează unor greșeli ușor de evitat. Iată câteva:

  • Confundarea hiperparametrilor cu parametrii modelului. Greutățile și coeficienții sunt învățați în timpul antrenării. Nu îi setezi manual și nu îi ajustezi. Dacă încerci să reglezi ceva ce algoritmul ar trebui să învețe, ai amestecat cele două.
  • Ajustarea pe setul de test. Fiecare decizie luată pe baza scorului de test scurge informație despre el în model. Numărul final va fi prea optimist, iar modelul din producție va subperformă. Folosește un set de validare separat sau cross-validation.
  • Căutarea inutil de mare a grilelor de parametri. O grilă cu șapte hiperparametri și zece valori fiecare are zece milioane de combinații. Nu poți căuta asta. Redu înainte de a porni, alegând doi-trei hiperparametri care contează cel mai mult și dă-le intervale realiste.
  • Optimizarea metricii greșite. Acuratețea pe un set dezechilibrat îți va da un model care prezice mereu clasa majoritară. Alege o metrică ce reflectă ce îți pasă cu adevărat și alege-o înainte să începi ajustarea.
  • Schimbarea prea multor hiperparametri deodată în ajustarea manuală. Dacă ajustezi rata de învățare și mărimea batch-ului în același pas, nu vei ști care a cauzat schimbarea. Modifică unul câte unul când reglezi manual.

Ajustarea hiperparametrilor vs. feature engineering

Ambele îmbunătățesc modelul, dar acționează pe părți diferite ale problemei.

Feature engineering îmbunătățește datele de intrare. Creezi caracteristici noi din cele existente, codezi variabile categorice, gestionezi valori lipsă și elimini zgomotul. Caracteristici mai bune dau modelului semnale mai utile din care să învețe.

Ajustarea hiperparametrilor îmbunătățește modul în care modelul învață din caracteristicile pe care i le dai. Schimbă comportamentul algoritmului pe date, nu datele.

Cele două sunt complementare. Feature engineering îți dă de obicei cele mai mari câștiguri la începutul unui proiect, când datele sunt încă brute, iar modelul ratează semnale evidente. Ajustarea hiperparametrilor îți aduce câștiguri mai mici dar constante odată ce caracteristicile sunt suficient de bune.

Dacă modelul e blocat și nu știi cu ce să începi, uită-te la erori. Dacă modelul ratează tipare evidente din date, ai o problemă de caracteristici. Dacă supraînvață sau subînvață, ai o problemă de ajustare.

De ce contează ajustarea hiperparametrilor în machine learning

Ajustarea este un pas standard în orice flux ML.

Aduce adesea câștiguri mai mari decât schimbarea algoritmului. De exemplu, un random forest bine ajustat va depăși adesea un model de gradient boosting prost ajustat pe aceleași date, chiar dacă boostingul e algoritmul mai sofisticat. 

Ajustarea ajută și la generalizare. Hiperparametri precum adâncimea maximă și rata de dropout controlează direct cât de mult poate supraînvața modelul. Să le nimerești corect face diferența între un model care memorizează setul de antrenare și unul care performează bine pe date noi.

În producție, ajustarea transformă un proof-of-concept într-un sistem fiabil. 

Setările implicite te pun în mișcare, dar nu sunt cele care vor menține modelul competitiv la reantrenare și cerințe de business. Fiecare echipă ML serioasă tratează ajustarea ca parte din proces.

Concluzie

Ajustarea hiperparametrilor este o buclă iterativă de căutare, evaluare și concentrare pe ce funcționează pentru datele tale.

Cele mai bune rezultate vin din combinarea a trei lucruri – o metodă de căutare care se potrivește bugetului tău de calcul, o validare care îți oferă un scor relevant și o urmărire a experimentelor care îți permite să revezi ce ai încercat.

Începe cu random search sau grid search. Trece la optimizarea bayesiană când antrenarea devine suficient de costisitoare încât numărul de încercări chiar contează. Oricum ar fi, ajustează hiperparametrii relevanți pentru modelul tău, păstrează setul de test curat și loghează fiecare rulare.

Dacă iei în calcul o carieră în machine learning, înscrie-te în traseul Machine Learning Engineer ca să fii pregătit pentru job în 2026.

Întrebări frecvente

Ce este ajustarea hiperparametrilor în machine learning?

Ajustarea hiperparametrilor este procesul de a găsi setările care fac un model să învețe cât mai bine pe datele tale. Hiperparametrii sunt valori pe care le setezi înainte de antrenare, precum rata de învățare sau adâncimea arborelui, și controlează cum învață modelul, nu ce învață. Ajustarea caută diferite combinații ale acestor valori și o alege pe cea care oferă cea mai bună performanță pe un set de validare.

De ce contează ajustarea hiperparametrilor?

Hiperparametrii implicați îți oferă un model care rulează, nu unul optimizat pentru problema ta specifică. Ajustarea îți aduce adesea câștiguri de acuratețe mai mari decât trecerea la un algoritm mai complex și controlează direct cât de bine generalizează modelul la date noi.

Care e diferența dintre hiperparametri și parametrii modelului?

Parametrii modelului sunt învățați de algoritm în timpul antrenării – lucruri precum greutățile dintr-o rețea neuronală sau punctele de împărțire dintr-un arbore de decizie. Hiperparametrii sunt setați de tine înainte de antrenare și controlează cum are loc învățarea, precum rata de învățare sau numărul de arbori. Nu ajustezi niciodată manual parametrii modelului, iar algoritmul nu îți atinge hiperparametrii.

Să folosesc grid search sau random search?

Grid search este potrivit pentru spații mici, cu doi-trei hiperparametri și câteva valori fiecare. Când ai mai mulți hiperparametri, random search acoperă mai bine spațiul cu același buget de calcul, pentru că nu irosește rulări pe valori neimportante. Ca regulă, folosește grid search când știi bine ce valori să încerci și random search când nu știi.

Când să folosesc optimizarea bayesiană în loc de random search?

Optimizarea bayesiană merită efortul suplimentar când antrenarea e costisitoare și fiecare încercare te costă timp sau bani reali. Folosește rezultatele rulărilor anterioare pentru a decide ce să încerce în continuare, deci găsește hiperparametri buni în mult mai puține încercări decât random search. Dacă îți permiți sute de rulări rapide, random search e mai simplu și de obicei suficient. Apelează la metode bayesiene când numărul de încercări e limitat la zeci.

Subiecte
Machine Learning

Învață cu DataCamp

course

Ajustarea hiperparametrilor în Python

4 oră
25.3K
Învață tehnici de ajustare automată a hiperparametrilor în Python, inclusiv Grid, Random și Informed Search.
Vezi detaliiRight Arrow
Începeți Cursul
Vezi mai multRight Arrow