开始使用免费开始使用

告诉 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))
编辑并运行代码