กำหนดการปรับจูน ALS โมเดลให้กับ Spark
ต่อไปเราจะสร้าง ParamGrid เพื่อบอกให้ Spark รู้ว่าต้องการปรับจูนไฮเปอร์พารามิเตอร์ใดบ้าง และจะปรับอย่างไร จากนั้นสร้าง evaluator เพื่อให้ Spark สามารถวัดประสิทธิภาพของอัลกอริทึมได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Recommendation Engines ด้วย PySpark
คำแนะนำการฝึกหัด
- Import
RegressionEvaluatorจากpyspark.ml.evaluationและ ImportParamGridBuilderกับCrossValidatorจากpyspark.ml.tuning - สร้าง
ParamGridชื่อparam_gridโดยใช้ParamGridBuilderที่เตรียมไว้ เรียกเมธอด.addGrid()สำหรับแต่ละไฮเปอร์พารามิเตอร์ โดยระบุชื่อโมเดลและชื่อไฮเปอร์พารามิเตอร์นั้น (เช่น.addGrid(als.rank, [])) ทำแบบนี้สำหรับrank,maxIterและregParamพร้อมระบุรายการค่าที่ต้องการให้ Spark ทดลองตามที่กำหนดไว้ดังนี้:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- สร้าง
RegressionEvaluatorชื่อevaluatorกำหนดmetricNameเป็น"rmse", กำหนดlabelColเป็น"rating"และบอกให้ Spark ตั้งชื่อคอลัมน์ผลลัพธ์การทำนายว่าpredictionColเป็น"prediction" - รัน
len(param_grid)เพื่อยืนยันว่าสร้าง param_grid สำเร็จ และตรวจสอบว่าจำนวนชุดค่าผสมของไฮเปอร์พารามิเตอร์ถูกต้อง ซึ่งควรเท่ากับจำนวนค่า rank คูณจำนวนค่า maxIter คูณจำนวนค่า regParam ใน ParamGridBuilder
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the requisite items
from pyspark.ml.evaluation import ____
from pyspark.ml.____ import ____, ____
# Add hyperparameters and their respective values to param_grid
____ = ParamGridBuilder() \
.addGrid(als.rank, [____, ____, ____, ____]) \
.addGrid(als.____, [____, ____, ____, ____]) \
.addGrid(als.____, [____, ____, ____, ____]) \
.build()
# Define evaluator as RMSE and print length of evaluator
____ = RegressionEvaluator(metricName="____", labelCol="____", predictionCol="____")
print ("Num models to be tested: ", len(param_grid))