วิธีการค้นหาแบบมีข้อมูล: Genetic Algorithms

การปรับ Hyperparameter ใน Python

Alex Scriven

Data Scientist

บทเรียนเรื่องพันธุศาสตร์

 

ในวิวัฒนาการทางพันธุกรรมในโลกความเป็นจริง กระบวนการมีดังนี้:

  1. มีสิ่งมีชีวิตจำนวนมาก ('ลูกหลาน')
  2. สิ่งมีชีวิตที่แข็งแกร่งที่สุดจะรอดและจับคู่กัน
  3. เกิด 'การแลกเปลี่ยนยีน' ขณะสร้างลูกหลาน
  4. ลูกหลานบางตัวมีการกลายพันธุ์แบบสุ่ม
    • การกลายพันธุ์บางครั้งช่วยให้ลูกหลานได้เปรียบ
  5. วนกลับไปที่ขั้นที่ (1)!
การปรับ Hyperparameter ใน Python

พันธุศาสตร์ใน Machine Learning

 

นำแนวคิดเดียวกันมาใช้กับการปรับแต่ง hyperparameter:

  1. สร้างโมเดลหลายตัว (พร้อมค่า hyperparameter)
  2. เลือกโมเดลที่ดีที่สุด (ตามฟังก์ชันคะแนน)
    • โมเดลเหล่านี้คือตัวที่ 'รอดชีวิต'
  3. สร้างโมเดลใหม่ที่คล้ายกับโมเดลที่ดีที่สุด
  4. เพิ่มความสุ่มเพื่อหลีกเลี่ยง local optimum
  5. ทำซ้ำจนพอใจ!
การปรับ Hyperparameter ใน Python

ทำไมวิธีนี้จึงได้ผลดี?

 

นี่คือการค้นหาแบบมีข้อมูลที่มีข้อดีหลายประการ:

  • เรียนรู้จากการวนซ้ำก่อนหน้า เช่นเดียวกับ Bayesian hyperparameter tuning
  • มีข้อได้เปรียบเพิ่มเติมคือความ สุ่ม
  • (ไลบรารีที่จะใช้) จัดการด้านที่น่าเบื่อหน่ายของ machine learning ให้โดยอัตโนมัติ
การปรับ Hyperparameter ใน Python

แนะนำ TPOT

 

ไลบรารีที่มีประโยชน์สำหรับ genetic hyperparameter tuning คือ TPOT:

ให้ TPOT เป็นผู้ช่วยด้าน Data Science ของคุณ TPOT คือเครื่องมือ Python Automated Machine Learning ที่ปรับ pipeline ของ machine learning ให้เหมาะสมโดยใช้ genetic programming

Pipeline ไม่ได้ครอบคลุมเพียงโมเดล (หรือหลายโมเดล) แต่ยังทำงานกับ feature และด้านอื่น ๆ ของกระบวนการด้วย นอกจากนี้ยังส่งคืนโค้ด Python ของ pipeline ให้ด้วย!

การปรับ Hyperparameter ใน Python

ส่วนประกอบของ TPOT

อาร์กิวเมนต์หลักของ TPOT classifier:

  • generations: จำนวนรอบการฝึก
  • population_size: จำนวนโมเดลที่เก็บไว้หลังแต่ละรอบ
  • offspring_size: จำนวนโมเดลที่สร้างในแต่ละรอบ
  • mutation_rate: สัดส่วน pipeline ที่ใช้ความสุ่ม
  • crossover_rate: สัดส่วน pipeline ที่ผสมพันธุ์ในแต่ละรอบ
  • scoring: ฟังก์ชันสำหรับตัดสินโมเดลที่ดีที่สุด
  • cv: กลยุทธ์ cross-validation ที่ใช้
การปรับ Hyperparameter ใน Python

ตัวอย่างง่าย ๆ

ตัวอย่างง่าย ๆ:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

จะใช้ค่าดีฟอลต์สำหรับ mutation_rate และ crossover_rate เนื่องจากควรปล่อยให้เป็นค่าดีฟอลต์หากไม่มีความรู้เชิงลึกด้าน genetic programming

สังเกตว่าไม่มี hyperparameter เฉพาะของอัลกอริทึม?

การปรับ Hyperparameter ใน Python

มาฝึกกันเถอะ!

การปรับ Hyperparameter ใน Python

Preparing Video For Download...