開始使用免費開始

告訴 Spark 要如何微調你的 ALS 模型

現在你需要建立一個 ParamGrid,告訴 Spark 要調哪些超參數、如何調,接著建立一個評估器,讓 Spark 能衡量演算法的效能。

本練習屬於課程

使用 PySpark 打造推薦引擎

檢視課程

練習說明

  • pyspark.ml.evaluation 匯入 RegressionEvaluator,並從 pyspark.ml.tuning 匯入 ParamGridBuilderCrossValidator
  • 使用提供的 ParamGridBuilder 建立名為 param_gridParamGrid。對每個超參數呼叫 .addGrid(),傳入模型的名稱與各超參數的名稱(例如:.addGrid(als.rank, []))。請針對 rankmaxIterregParam 這三個超參數都這麼做。並提供 Spark 應嘗試的超參數值清單,如下:
 rank: [10, 50, 100, 150]  
 maxIter: [5, 50, 100, 200]  
 regParam: [.01, .05, .1, .15]  
  • 建立名為 evaluatorRegressionEvaluator。將 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))
編輯並執行程式碼