0Pricing
Learn AI with Python · บทเรียน

การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna

optuna.create_study(), suggest_float/int/categorical การตัดทิ้ง และการแสดงผล

การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

ฉลาดกว่าการค้นหาแบบสุ่ม

การค้นหาแบบกริดและแบบสุ่มไม่สนใจผลลัพธ์ที่ผ่านมา การปรับให้เหมาะที่สุดแบบเบย์จะเรียนรู้จากการทดลองก่อนหน้า เพื่อเสนอไฮเปอร์พารามิเตอร์ที่มีแนวโน้มดีกว่าในครั้งถัดไป ทำให้ค้นหาค่าที่ดีได้ด้วยการประเมินจำนวนน้อยลง

Optuna ทำอะไรได้บ้าง

Optuna เป็นกรอบการทำงานยอดนิยมสำหรับการปรับไฮเปอร์พารามิเตอร์ให้เหมาะที่สุด คุณกำหนดฟังก์ชัน objective จากนั้น Optuna จะสุ่มตัวอย่างไฮเปอร์พารามิเตอร์อย่างชาญฉลาดและจดจำว่าวิธีใดได้ผล

การสร้างการศึกษา

การศึกษาใช้จัดการกระบวนการปรับให้เหมาะที่สุด ตั้งค่า direction เป็นโหมดเพิ่มค่าสูงสุดสำหรับความแม่นยำ/AUC หรือเป็นโหมดลดค่าสำหรับค่าการสูญเสีย/ข้อผิดพลาด

import optuna

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

ฟังก์ชัน Objective

ฟังก์ชัน objective จะรับออบเจ็กต์ trial เสนอไฮเปอร์พารามิเตอร์ ฝึกโมเดล และส่งคืนคะแนนที่จะนำไปปรับให้เหมาะที่สุด

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

def objective(trial):
    n = trial.suggest_int("n_estimators", 100, 500)
    d = trial.suggest_int("max_depth", 3, 20)
    clf = RandomForestClassifier(n_estimators=n, max_depth=d)
    return cross_val_score(clf, X, y, cv=3).mean()

การเสนอพารามิเตอร์จำนวนเต็ม

trial.suggest_int(name, low, high) จะเลือกจำนวนเต็มในช่วงที่กำหนด เพิ่ม step หรือ log=True เพื่อควบคุมการสุ่มตัวอย่าง

def objective(trial):
    n_estimators = trial.suggest_int("n_estimators", 100, 1000, step=50)
    return train_and_score(n_estimators)

การเสนอพารามิเตอร์จำนวนจริง

trial.suggest_float(name, low, high) จะเลือกจำนวนจริง ใช้ log=True กับพารามิเตอร์อย่างอัตราการเรียนรู้ ซึ่งมีช่วงค่าครอบคลุมหลายลำดับขนาด

def objective(trial):
    lr = trial.suggest_float("learning_rate", 1e-4, 0.3, log=True)
    subsample = trial.suggest_float("subsample", 0.5, 1.0)
    return train_and_score(lr, subsample)

การเสนอพารามิเตอร์แบบจัดหมวดหมู่

trial.suggest_categorical(name, choices) จะเลือกจากรายการที่กำหนดไว้ เหมาะอย่างยิ่งกับตัวเลือกอย่างประเภทเคอร์เนลหรือวิธีการเพิ่มประสิทธิภาพแบบต่อเนื่อง

def objective(trial):
    kernel = trial.suggest_categorical("kernel", ["linear", "rbf", "poly"])
    return train_svm(kernel)

การเรียกใช้การปรับให้เหมาะที่สุด

study.optimize(objective, n_trials=N) จะค้นหาเป็นจำนวน N ครั้ง การทดลองที่มากขึ้นจะสำรวจพื้นที่ได้มากขึ้น และเมื่อเวลาผ่านไป Optuna จะมุ่งเน้นไปยังบริเวณที่มีแนวโน้มดี

study.optimize(objective, n_trials=100)

การอ่านผลลัพธ์ที่ดีที่สุด

หลังจากปรับให้เหมาะที่สุดแล้ว study.best_params จะแสดงไฮเปอร์พารามิเตอร์ที่ดีที่สุด และ study.best_value จะแสดงคะแนน objective ที่ดีที่สุด

print("Best params:", study.best_params)
print("Best value:", study.best_value)

best = RandomForestClassifier(**study.best_params)
best.fit(X, y)

การตัดการทดลองที่ไม่น่าจะได้ผล

Optuna สามารถหยุดการทดลองที่ให้ผลไม่ดีได้ตั้งแต่เนิ่น ๆ ด้วยตัวตัดการทดลองเพื่อประหยัดทรัพยากรประมวลผล ให้รายงานค่าระหว่างการทำงาน และตรวจสอบ trial.should_prune() ภายในลูปการฝึก

import optuna

study = optuna.create_study(
    direction="maximize",
    pruner=optuna.pruners.MedianPruner(),
)

เหตุใด Optuna จึงรองรับการขยายขนาด

Optuna รองรับการทดลองแบบขนาน การจัดเก็บแบบถาวร และการแสดงภาพการค้นหา สำหรับโมเดลที่มีค่าใช้จ่ายสูง วิธีแบบเบย์ที่ใช้ตัวอย่างอย่างมีประสิทธิภาพจะค้นหาการตั้งค่าที่มีประสิทธิภาพได้ด้วยการทดลองน้อยกว่าการค้นหาแบบกริดหรือแบบสุ่มมาก

ตรวจสอบความเข้าใจ

ตรวจสอบความรู้เกี่ยวกับ Optuna ของคุณ

สรุป

สรุป: Optuna ใช้การปรับให้เหมาะที่สุดแบบเบย์เพื่อปรับไฮเปอร์พารามิเตอร์อย่างมีประสิทธิภาพ สร้างการศึกษาด้วย direction เขียน objective ที่ใช้ trial.suggest_int/float/categorical เรียกใช้ study.optimize(objective, n_trials=N) จากนั้นอ่านค่า study.best_params และ study.best_value ตัวตัดการทดลองจะหยุดการทดลองที่อ่อนแอเพื่อประหยัดทรัพยากรประมวลผล

คำถามที่พบบ่อย

บทเรียน “การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna”

optuna.create_study(), suggest_float/int/categorical การตัดทิ้ง และการแสดงผล คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กลยุทธ์การตรวจสอบไขว้
  2. เจาะลึกเมตริกการจำแนกประเภท
  3. การค้นหาแบบกริดและการค้นหาแบบสุ่ม
  4. การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna
← กลับไปที่ Learn AI with Python