始める無料で始める

ALS モデルのチューニング方法を Spark に指示しましょう

次は、どのハイパーパラメータをどのようにチューニングするかを Spark に伝えるために ParamGrid を作成し、さらに Spark がアルゴリズムの性能を評価できるように evaluator を用意します。

この演習はコースの一部です

PySpark で作る Recommendation Engines

コースを見る

演習の手順

  • pyspark.ml.evaluation から RegressionEvaluator を、pyspark.ml.tuning から ParamGridBuilderCrossValidator をインポートします。
  • 提供された ParamGridBuilder を使って、param_grid という名前の ParamGrid を作成します。各ハイパーパラメータに対して、モデル名とハイパーパラメータ名を指定して .addGrid() メソッドを呼び出します(例: .addGrid(als.rank, []))。対象は rankmaxIterregParam の各ハイパーパラメータです。あわせて、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))
コードを編集して実行