การหาค่าเหมาะที่สุดแบบเบย์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- กลยุทธ์การตรวจสอบไขว้
- เจาะลึกเมตริกการจำแนกประเภท
- การค้นหาแบบกริดและการค้นหาแบบสุ่ม
- การหาค่าเหมาะที่สุดแบบเบย์ด้วย Optuna