ALS モデルのチューニング方法を Spark に指示しましょう
次は、どのハイパーパラメータをどのようにチューニングするかを Spark に伝えるために ParamGrid を作成し、さらに Spark がアルゴリズムの性能を評価できるように evaluator を用意します。
この演習はコースの一部です
PySpark で作る Recommendation Engines
演習の手順
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"に設定し、予測を生成する際の列名として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))