告訴 Spark 要如何微調你的 ALS 模型
現在你需要建立一個 ParamGrid,告訴 Spark 要調哪些超參數、如何調,接著建立一個評估器,讓 Spark 能衡量演算法的效能。
本練習屬於課程
使用 PySpark 打造推薦引擎
練習說明
- 從
pyspark.ml.evaluation匯入RegressionEvaluator,並從pyspark.ml.tuning匯入ParamGridBuilder與CrossValidator。 - 使用提供的
ParamGridBuilder建立名為param_grid的ParamGrid。對每個超參數呼叫.addGrid(),傳入模型的名稱與各超參數的名稱(例如:.addGrid(als.rank, []))。請針對rank、maxIter和regParam這三個超參數都這麼做。並提供 Spark 應嘗試的超參數值清單,如下:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- 建立名為
evaluator的RegressionEvaluator。將metricName設為"rmse",labelCol設為"rating",並告訴 Spark 產生預測時將predictionCol命名為"prediction"。 - 執行
len(param_grid)以確認param_grid已建立,並確認會測試的超參數組合數量是否正確。它應等於 ParamGridBuilder 中 rank 值的數量 × maxIter 值的數量 × regParam 值的數量。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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))