2017-01-28 1 views
0

스파크 (PySpark) ALS 모델의 하이퍼 파라미터를 TrainValidationSplit으로 조정하려고합니다.pyspark.ml.tuning.TrainValidationSplit로 튜닝 한 후 가장 좋은 매개 변수를 얻는 방법?

잘 작동하지만 하이퍼 매개 변수 조합이 최상인지 알고 싶습니다. 평가 후 최상의 매개 변수를 얻는 방법?

from pyspark.ml.recommendation import ALS 
from pyspark.ml.tuning import TrainValidationSplit, ParamGridBuilder 
from pyspark.ml.evaluation import RegressionEvaluator 

df = sqlCtx.createDataFrame(
    [(0, 0, 4.0), (0, 1, 2.0), (1, 1, 3.0), (1, 2, 4.0), (2, 1, 1.0), (2, 2, 5.0)], 
    ["user", "item", "rating"], 
) 

df_test = sqlCtx.createDataFrame(
    [(0, 0), (0, 1), (1, 1), (1, 2), (2, 1), (2, 2)], 
    ["user", "item"], 
) 

als = ALS() 

param_grid = ParamGridBuilder().addGrid(
    als.rank, 
    [10, 15], 
).addGrid(
    als.maxIter, 
    [10, 15], 
).build() 

evaluator = RegressionEvaluator(
    metricName="rmse", 
    labelCol="rating", 
) 
tvs = TrainValidationSplit(
    estimator=als, 
    estimatorParamMaps=param_grid, 
    evaluator=evaluator, 
) 


model = tvs.fit(df) 

질문 : 최고 등급 및 최고 등급을 얻는 방법?

답변

3

당신은 TrainValidationSplitModelbestModel 속성을 사용하여 최적의 모델에 액세스 할 수 있습니다

best_model.rank 
10 

은 반복의 최대 수를 얻기 :

best_model = model.bestModel 

순위가 직접 ALSModelrank 속성을 사용하여 액세스 할 수 있습니다 조금 더 속임수가 필요합니다.

10 
관련 문제