告诉 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))