스파클링소다 모델 파라미터 적용하기

작성자 김아름 수정일 2022-11-15 11:23

#SparklingSoDA4.0, #스파클링소다4.0, #모델, #개발, #파라미터

아티클 관련 제품: SparklingSoDA4.0

들어가며

  • 스파클링소다에서 Model 에서 사용되는 Hyper Parameter, 환경 변수 등 개발에 사용되는 여러가지 변수를 관리하는 yaml 파일을 생성할 수 있습니다.

  • 모델마다 공통의 소스가 있지만, 다른 파라미터가 적용될 수 있습니다.

  • 이때, 노트북에서 모델 개발에 사용되는 yaml을 다르게 적용하는 방법을 알아보겠습니다.



모델별로 변수 관리 파일 생성하기

본 가이드에서는 ridge와 lasso 모델을 개발합니다.


  • ridge

ridge 모델 개발 시 train input 값으로 ridge_max_iter 와 ridge_alpha 를 받아옵니다.

    # 그리드서치(with 릿지) 객체 생성
    search_space = {"max_iter": cfg.train_inputs.ridge_max_iter,
                    "alpha": cfg.train_inputs.ridge_alpha}
    gridsearch_ridge_model = GridSearchCV(estimator=ridge_model,
                                          param_grid=search_space,
                                          scoring=rmsle_scorer,
                                          cv=cfg.cross_valid)


두 파라미터는 cgf에서 받아오게 되는데, cfs는 모델 개발에 사용되는 변수를 관리하는 yaml 파일 입니다.

rigde 모델 개발을 위한 변수 관리 파일을 train_config_ridge.yaml로 정의합니다.

train_inputs:
  ridge_max_iter: [3000]
  ridge_alpha: [0.1, 1, 2, 3, 4, 10, 30, 100, 200, 300, 400, 800, 900, 1000]
  cross_valid: 5


이후, ridge모델을 local trial로 실행하여 결과를 확인합니다.

이때 주의할 점은, ridge모델 개발을 위한 train_config_ridge.yaml을 적용하기 위해 아래와 같이 실행합니다.

python /notebooks/<project-name>/ridge_regression.py --config-name train_config_ridge
{'sodaflow': {'dataset_path': ['/datasets/bike-sharing-demand/'], 'start_model_path': None, 'eval_model_path': None}, 'train_inputs': {'ridge_max_iter': [3000], 'ridge_alpha': [0.1, 1, 2, 3, 4, 10, 30, 100, 200, 300, 400, 800, 900, 1000], 'eval_inputs': None}, 'model_save_dir': 'trained', 'train_valid_split': {'test_size': 0.1, 'random_state': 24}}

적용된 cfg의 내용을 출력해본 결과, 위와 같이 출력됩니다.



  • lasso

lasso 모델 개발 시, train input 값은 lasso_max_iter 와 lasso_alpha 를 받아옵니다.

    # 그리드서치(with 라쏘) 객체 생성
    search_space = {"max_iter": cfg.train_inputs.lasso_max_iter,
                    "alpha": 1/np.array(cfg.train_inputs.lasso_alpha)}
    gridsearch_lasso_model = GridSearchCV(estimator=lasso_model,
                                          param_grid=search_space,
                                          scoring=rmsle_scorer,
                                          cv=cfg.cross_valid)


마찬가지로 lasso 모델 개발 개발을 위한 변수 관리 파일인 train_config_lasso.yaml을 정의합니다.

train_inputs:
  lasso_max_iter: [3000]
  lasso_alpha: [1000, 900, 800, 400, 300, 200, 100, 30, 10, 4, 3, 2, 1, 0.1]
  cross_valid: 5


이후, lasso 모델을 local trial로 실행하여 결과를 확인합니다.

python /notebooks/<project-name>/lasso_regression.py --config-name train_config_lasso
{'sodaflow': {'dataset_path': ['/datasets/bike-sharing-demand/'], 'start_model_path': None, 'eval_model_path': None}, 'train_inputs': {'lasso_max_iter': [3000], 'lasso_alpha': [1000, 900, 800, 400, 300, 200, 100, 30, 10, 4, 3, 2, 1, 0.1], 'cross_valid': 5}, 'eval_inputs': None, 'model_save_dir': 'trained', 'train_valid_split': {'test_size': 0.1, 'random_state': 24}}

적용된 cfg의 내용을 출력해본 결과, 위와 같이 출력됩니다.



마무리

  • 모델마다 필요한 파라미터가 다를 수 있습니다.
  • 이때, 모델 별 파라미터 정의한 파일을 각각 적용하여 테스트 하는 방법을 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300