Tutorial Optuna: Optimasi Hyperparameter Otomatis

# Tutorial Lengkap Optuna: Optimasi Hyperparameter Otomatis ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Instalasi dan Setup](#instalasi-dan-setup) 4. [Konsep Dasar: St...

By Ruby Abdullah · · tutorial
OptunaHyperparameterOptimizationAutoMLMachine LearningPython

Tutorial Lengkap Optuna: Optimasi Hyperparameter Otomatis

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Instalasi dan Setup
  • Konsep Dasar: Study dan Trial
  • Optimasi Dasar
  • Sampler dan Strategi Pencarian
  • Pruning untuk Early Stopping
  • Optimasi Multi-Objektif
  • Integrasi dengan Framework ML
  • Visualisasi dan Dashboard
  • Optimasi Terdistribusi
  • Best Practices
  • Kesimpulan
  • Pendahuluan

    Tuning hyperparameter adalah salah satu tugas yang paling memakan waktu dalam machine learning. Optuna adalah framework optimasi hyperparameter otomatis yang menggunakan algoritma pencarian efisien untuk menemukan konfigurasi optimal secara signifikan lebih cepat dibanding grid search atau random search.

    Dalam tutorial ini, Anda akan mempelajari cara menggunakan Optuna mulai dari optimasi dasar hingga tuning multi-objektif terdistribusi di berbagai framework ML.

    Prasyarat

    • Python 3.8+
    • Pemahaman dasar machine learning
    • Familiar dengan scikit-learn atau PyTorch

    Instalasi dan Setup

    pip install optuna optuna-dashboard plotly scikit-learn xgboost lightgbm torch
    
    

    Opsional: untuk optimasi terdistribusi

    pip install optuna[rdb] psycopg2-binary

    Konsep Dasar: Study dan Trial

    Optuna berpusat pada dua konsep utama:

    • Study: Sesi optimasi yang terdiri dari banyak trial
    • Trial: Satu evaluasi fungsi objektif dengan hyperparameter tertentu

    import optuna
    
    

    Definisikan fungsi objektif

    def fungsiobjektif(trial):

    # Sarankan hyperparameter

    x = trial.suggestfloat("x", -10, 10)

    y = trial.suggestfloat("y", -10, 10)

    # Kembalikan nilai untuk diminimalkan

    return (x - 2) 2 + (y + 3) 2

    Buat study dan optimasi

    study = optuna.createstudy(direction="minimize")

    study.optimize(fungsiobjektif, ntrials=100)

    print(f"Nilai terbaik: {study.bestvalue:.4f}")

    print(f"Parameter terbaik: {study.bestparams}")

    Metode Saran Parameter

    def fungsiobjektif(trial):
    

    # Parameter integer

    jumlahlayer = trial.suggestint("jumlahlayer", 1, 5)

    # Parameter float

    learningrate = trial.suggestfloat("lr", 1e-5, 1e-1, log=True)

    # Parameter kategorikal

    optimizer = trial.suggestcategorical("optimizer", ["adam", "sgd", "rmsprop"])

    # Float diskret

    dropout = trial.suggestfloat("dropout", 0.1, 0.5, step=0.1)

    # Parameter kondisional

    if optimizer == "sgd":

    momentum = trial.suggestfloat("momentum", 0.0, 0.99)

    return latihmodel(jumlahlayer, learningrate, optimizer, dropout)

    Optimasi Dasar dengan Scikit-Learn

    import optuna
    

    from sklearn.ensemble import RandomForestClassifier

    from sklearn.modelselection import crossvalscore

    from sklearn.datasets import loadbreastcancer

    X, y = loadbreastcancer(returnXy=True)

    def fungsiobjektif(trial):

    params = {

    "nestimators": trial.suggestint("nestimators", 50, 500),

    "maxdepth": trial.suggestint("maxdepth", 3, 20),

    "minsamplessplit": trial.suggestint("minsamplessplit", 2, 20),

    "minsamplesleaf": trial.suggestint("minsamplesleaf", 1, 10),

    "maxfeatures": trial.suggestcategorical("maxfeatures", ["sqrt", "log2", None]),

    "criterion": trial.suggestcategorical("criterion", ["gini", "entropy"]),

    }

    clf = RandomForestClassifier(params, randomstate=42, njobs=-1)

    skor = crossvalscore(clf, X, y, cv=5, scoring="accuracy")

    return skor.mean()

    study = optuna.createstudy(direction="maximize")

    study.optimize(fungsiobjektif, ntrials=200, showprogressbar=True)

    print(f"Akurasi terbaik: {study.bestvalue:.4f}")

    Artikel Terkait

    Tutorial SHAP: Explainable AI dan Interpretasi Model

    SHAP - Panduan Praktis Explainable AI dan Interpretabilitas Model Model machine learning makin sering dipakai untuk meng...

    Tutorial PyOD: Deteksi Anomali dan Outlier dengan Python

    Deteksi Anomali di Python dengan PyOD: Panduan Praktis Sebagian besar dataset di dunia nyata mengandung sebagian kecil d...

    Tutorial spaCy: NLP Berskala Industri dengan Python

    spaCy: NLP Kelas Industri di Python spaCy adalah pustaka open-source untuk pemrosesan bahasa alami (NLP) yang dirancang ...

    DSPy: Framework untuk Optimasi LLM Secara Programatik

    DSPy: Framework untuk Optimasi LLM Secara Programatik Prompt engineering secara manual adalah proses yang melelahkan dan...