最適なハイパーパラメータの組み合わせを賭けるために、Amazon Sagemaker を使用して xgboost モデルを実行しています。gridsearch よりも高速に実行されるかどうかをテストするには、ノートブックの代替ではなく、sagemaker の実装を使用する必要があります。私の問題は、これをループで機能させる方法です。何か案は?私の理解では、さまざまな組み合わせで多数のジョブをコーディングする必要があります。テストとしてこれを試しました:
for i in range (1,3):
for j in range (13,15):
job_name = 'regression' + '-'+str(i) +"-"+str(j)+"-" +strftime("%Y-%m-%d-%H-%M-%S", gmtime())
job_name_params = copy.deepcopy(parameters_xgboost)
job_name_params['TrainingJobName'] = job_name
job_name_params['OutputDataConfig']['S3OutputPath']= "....."
job_name_params['HyperParameters']['objective'] = "reg:linear"
job_name_params['HyperParameters']['silent'] = "0"
job_name_params['HyperParameters']['max_depth'] = str(i)
job_name_params['HyperParameters']['min_child_weight'] = str(j)
job_name_params['HyperParameters']['eta'] = "0.01"
job_name_params['HyperParameters']['num_round'] = "1000"
job_name_params['HyperParameters']['subsample'] = "0.5"
job_name_params['HyperParameters']['colsample_bytree'] = "0.5"
sm = boto3.Session().client('.....')
sm.create_training_job(**job_name_params)
sm.get_waiter('training_job_completed_or_stopped').wait(TrainingJobName=job_name)
status = sm.describe_training_job(TrainingJobName=job_name)['TrainingJobStatus']
print("Training job ended with status: " + status)
parameters_xgboost は、Sagemaker が基本情報とハイパーパラメーターのリストを読み取る方法です。
良いことは、それが機能することです。悪い点は、モデルを一度に 1 つずつトレーニングすることです。これらの組み合わせをすべて同時に実行したいと思います。どうやってやるの?