สร้าง Grid
ขั้นตอนต่อไปคือการสร้าง grid ของค่าต่าง ๆ เพื่อค้นหา hyperparameter ที่เหมาะสมที่สุด submodule pyspark.ml.tuning มีคลาสชื่อ ParamGridBuilder ที่ออกแบบมาเพื่องานนี้โดยเฉพาะ (คงเริ่มสังเกตเห็น pattern แล้วว่า PySpark มี submodule สำหรับแทบทุกอย่างเลยทีเดียว!)
ต้องใช้เมธอด .addGrid() และ .build() เพื่อสร้าง grid ที่จะนำไปใช้ใน cross validation เมธอด .addGrid() รับพารามิเตอร์ของโมเดล (attribute ของ Estimator ชื่อ lr ที่สร้างไว้ในแบบฝึกหัดก่อนหน้า) และรายการค่าที่ต้องการทดสอบ
ส่วนเมธอด .build() ไม่รับอาร์กิวเมนต์ใด ๆ แต่จะคืนค่า grid ที่พร้อมนำไปใช้งานในขั้นตอนถัดไป
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
พื้นฐาน PySpark
คำแนะนำการฝึกหัด
- Import submodule
pyspark.ml.tuningโดยกำหนด alias เป็นtune - เรียก class constructor
ParamGridBuilder()โดยไม่ส่งอาร์กิวเมนต์ใด ๆ แล้วบันทึกผลลัพธ์เป็นgrid - เรียกเมธอด
.addGrid()บนgridโดยส่งlr.regParamเป็นอาร์กิวเมนต์แรก และnp.arange(0, .1, .01)เป็นอาร์กิวเมนต์ที่สอง ซึ่งnp.arangeเป็นฟังก์ชันจากโมดูลnumpy(ที่ import มาas np) สำหรับสร้างรายการตัวเลขตั้งแต่ 0 ถึง .1 โดยเพิ่มทีละ .01 แล้วเขียนทับgridด้วยผลลัพธ์ที่ได้ - อัปเดต
gridอีกครั้งโดยเรียกเมธอด.addGrid()เป็นครั้งที่สอง เพื่อสร้าง grid สำหรับlr.elasticNetParamโดยกำหนดให้มีเฉพาะค่า[0, 1] - เรียกเมธอด
.build()บนgridแล้วเขียนทับด้วยผลลัพธ์ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the tuning submodule
import ____ as ____
# Create the parameter grid
grid = tune.____
# Add the hyperparameter
grid = grid.addGrid(____, np.arange(0, .1, .01))
grid = grid.addGrid(____, ____)
# Build the grid
grid = grid.build()