การตั้งค่าพารามิเตอร์สำหรับ GridSearch
ไฮเปอร์พารามิเตอร์ (hyperparameter) คือพารามิเตอร์ที่กำหนดภายในฟังก์ชัน เช่น max_depth และ min_samples_leaf คือไฮเปอร์พารามิเตอร์ของฟังก์ชัน DecisionTreeClassifier() การปรับแต่งไฮเปอร์พารามิเตอร์คือกระบวนการทดสอบค่าต่าง ๆ เพื่อหาค่าที่เหมาะสมที่สุด ซึ่งจะให้ผลการพยากรณ์ที่ดีที่สุดตามเป้าหมายที่ตั้งไว้ ใน sklearn สามารถใช้ GridSearch เพื่อทดสอบชุดค่าผสมของไฮเปอร์พารามิเตอร์ที่แตกต่างกัน และยังสามารถใช้ GridSearchCV() เพื่อทดสอบชุดค่าผสมเหล่านั้นพร้อมกับรัน cross-validation ได้ในฟังก์ชันเดียว!
ในแบบฝึกหัดนี้ จะเตรียมค่าต่าง ๆ ที่ต้องการทดสอบสำหรับ max_depth และ min_samples_leaf จากนั้นนำค่าเหล่านั้นใส่ใน dictionary เนื่องจาก GridSearchCV() ต้องการข้อมูลในรูปแบบนี้:
- key ของ dictionary จะเป็นชื่อไฮเปอร์พารามิเตอร์
- value ของ dictionary จะเป็นค่าต่าง ๆ (ค่าของไฮเปอร์พารามิเตอร์) ที่ต้องการทดสอบ
แทนที่จะพิมพ์ค่าทั้งหมดด้วยตนเอง จะใช้ฟังก์ชัน range() ซึ่งช่วยสร้างค่าแบบเพิ่มทีละขั้น ตัวอย่างเช่น range(1, 10, 2) จะสร้างลิสต์ที่มีค่าตั้งแต่ 1 (รวม) ถึง 10 (ไม่รวม) โดยเพิ่มทีละ 2 ผลลัพธ์ที่ได้คือ [1, 3, 5, 7, 9]
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
HR Analytics: การพยากรณ์การลาออกของพนักงานด้วย Python
คำแนะนำการฝึกหัด
- โดยอ้างอิงรูปแบบจากตัวอย่างข้างต้น ให้สร้างค่าสำหรับความลึกสูงสุดตั้งแต่ 5 ถึง 20 โดยเพิ่มทีละ 1
- ทำเช่นเดียวกันสำหรับขนาด sample ขั้นต่ำ โดยใช้ค่าตั้งแต่ 50 ถึง 450 และเพิ่มทีละ 50
- สร้าง dictionary โดยระบุค่าของ
max_depthและmin_samples_leafที่ต้องการทดสอบ โดยใช้ตัวแปรที่สร้างไว้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Generate values for maximum depth
depth = [i for i in ____(5,21,1)]
# Generate values for minimum sample size
samples = [i for i in range(____,500,____)]
# Create the dictionary with parameters to be checked
parameters = dict(max_depth=depth, min_samples_leaf=____)