팁과 도움말¶
이 섹션에서는 Driverless AI 실행에 대한 Arno의 팁을 제공합니다.
파이프라인 팁¶
학습 데이터와 예측할 대상 열이 주어지면 H2O Driverless AI는 일반 분류 및 회귀 분석 작업을 위해 높은 예측 성능(및/또는 높은 해석력)으로 튜닝된 엔드 투 엔드 파이프라인을 만듭니다. 파이프라인의 유일한 목적은 행별로 테스트 세트를 사용해 그 특성 값을 예측 값으로 전환하는 것입니다.
일반적인 파이프라인은 사용자가 제공한 데이터 세트에서 수십 개 또는 수백 개의 파생된 특성을 생성합니다. 이러한 변환은 주로 미리 계산된 조회 테이블과 학습 중에 선택되고 최적화되는 매개변수화 수학 연산을 기반으로 합니다. 그런 다음 이 모든 파생 특성을 선형 모델, 딥 러닝 모델, 그래디언트 부스팅 모델(및 기타 파생 모델)과 같은 하나 이상의 기계학습 알고리즘에 제공합니다. 모델이 여러 개인 경우 출력을 후처리하여 최종 예측(확률 또는 목표값)을 구성합니다. 파이프라인은 방향성 비순환 그래프(directed acyclic graph)입니다.
특히, 더 나은 결과를 위해 학습 데이터 세트를 전체적으로 처리합니다(집계 통계 등). 단, 스코어링의 경우에는 실제 생산 시나리오를 모방하기 위해 테스트 데이터 세트의 모든 행을 독립적으로 처리해야 합니다.
다양한 생산 환경에 원활하게 배포하기 위해, 완료된 Driverless AI 실험에서 예측을 얻는 방법에는 GUI, R 또는 Python client API 또는 독립형 파이프라인 등 여러 가지가 있습니다.
GUI
다른 데이터 세트의 점수(Score on Another Dataset) - 간편함, 병렬화, 가져온 데이터에 이상적
예측 다운로드(Download Predictions) - 학습 중 테스트 세트가 제공된 경우 사용 가능
배포(Deploy) - Amazon Lambda 엔드포인트 생성(향후 더 많은 엔드포인트 공개)
진단(Diagnositcs) - 테스트 세트에 대상 열이 포함된 경우 유용함
클라이언트 API
Python client -
make_prediction_sync()
메서드 사용. 선택적 인수를 사용하여 행별 및 특성별 ‘Shapley’ 예측 기여를 얻을 수 있습니다(Passpred_contribs=True
).R 클라이언트 -
predict()
메서드 사용. 선택적 인수를 사용하여 행별 및 특성별 ‘Shapley’ 예측 기여를 얻을 수 있습니다(Passpred_contribs=True
).
Standalone Pipelines
Python - 모든 모델 및 트랜스포머를 지원하며, ‘Shapley’ 예측 기여 및 MLI 사유 코드를 지원합니다.
Java - 최대의 이식성, 짧은 지연 시간, 기본적으로 활성화된 모든 모델 및 트랜스포머 지원(TensorFlow NLP 트랜스포머 제외), 확장 시 Spark/H2O-3/SparklingWater에서 사용할 수 있습니다.
C++ - 높은 이식성, 짧은 지연 시간, 편리한 Python 및 R 래퍼가 있는 독립형 런타임
Time Series 팁¶
H2O Driverless AI는 time series 예측 문제를 즉시 처리합니다.
time series 실험을 시작하려면 특성이 포함된 일반 열 데이터 세트를 제공하기만 하면 됩니다. 그런 다음 대상 열을 선택하고 모든 레코드(행)에 대한 타임스탬프를 포함하는 지정된 열 《시간 열》도 선택합니다(《April 10 2019 09:13:41》 또는 《2019/04/10》 등). 각 레코드에 대해 예측하려는 테스트 세트가 있는 경우, 미래의 타임스탬프와 특성도 제공해야 합니다.
대부분의 경우 이렇게 간단합니다. 실험을 시작하면 Driverless AI가 나머지 작업을 수행할 수 있습니다. 매장 및 부서의 주간 매출과 같이 다양한 그룹의 동일한 데이터 세트에서 여러 time series를 자동 감지합니다(그룹화된 매장 및 부서를 식별하는 열을 검색함). Driverless AI는 또한 주말 동안의 잠재적 gap, forecast horizon, 학습 기간과 테스트 기간 사이의 잠재적 시간 gap(배포 지연 최적화의 목적)을 포함한 기간을 자동으로 감지하고, 공휴일 캘린더도 추적합니다. 올바른 검증을 위해 여러 개의 인과 관계 시간 기반 검증 분할(슬라이딩 시간 윈도우)을 자동으로 생성하고, 자동 대상 및 비대상 지연 특성 생성, 지연 간의 상호 작용, 1차 및 2차 도함수, 지수 평활 등 관련된 기타 그랜드 마스터 레시피를 통합합니다.
자동 지연 기반 time series 레시피가 해당 데이터 세트에 제대로 작동하지 않는 경우, 상세 설정에서 《time series 지연 기반 레시피》를 비활성화하여 지연 기반 특성 생성을 비활성화하는 것이 좋습니다. 이렇게 하면 일반 변수 가공이 되지만, 시간 기반 인과 관계 검증 분할을 사용하게 됩니다. 특히 작은 데이터 세트와 짧은 예측 기간에서 더 나은 결과를 얻을 수 있습니다.
대상 열이 테스트 세트에 있고 부분적 입력 정보(무결측치)가 포함된 경우, Driverless AI는 미래 목표값으로 모델을 자동 증강(Augmentation)하여 예측값을 개선합니다. 이를 통해 과거에 알려진 결과를 제공하여 재학습할 필요 없이 모델의 가용 수명 주기를 미래로 확장할 수 있습니다. test-time augmentation에 대한 자세한 내용을 원하시면 당사로 문의하시기 바랍니다.
현재로서는 학습 및 테스트 데이터 세트에 사용할 입력 특성이 동일해야 하므로, 생산 시간 동안 사용할 수 있는 예측 변수(입력 특성)를 결정하고 나머지는 삭제합니다(또는 학습 및 테스트 세트에 모두 사용할 수 있는 고유한 지연 특성을 생성합니다).
시간적으로 불안정한 데이터 세트의 경우, 시간상 데이터의 마지막 부분에서 테스트 세트를 생성하여 시간 기반 특성을 만듭니다. 이렇게 하면 해당 생산 시나리오에 모델을 최적화할 수 있습니다.
당사는 time series 레시피의 여러 측면을 더욱 개선하기 위해 노력하고 있습니다. 예를 들어 학습 세트에서만 사용할 수 있고 테스트 세트에서는 사용할 수 없는 특성(환경 또는 경제적 요인 등)에 대해서는 지연이 자동 생성되도록 지원을 보완할 것입니다. 또한 롤링 윈도우를 사용하여 백테스트 성능을 향상시킬 것입니다.
스코어러 팁¶
H2O Driverless AI의 핵심 기능은 지도 문제에 대해 자동 기계학습 모델링 파이프라인을 생성하는 것입니다. 사용자는 예측할 데이터와 대상 열 외에 스코어러를 선택할 수 있습니다. 스코어러는 데이터 세트의 실제 값과 예측 값을 사용해 숫자를 반환하는 함수입니다. 이 단일 숫자를 살펴보는 것은 데이터 세트에 대한 모델의 예측을 실제 값과 비교함으로써 표시되지 않는 데이터에 대한 예측 모델의 일반화 성능을 추정하는 가장 일반적인 방법입니다. 잔차 플롯(Driverless AI의 진단 페이지에서 사용)과 같이 기계학습 모델의 성능을 더 상세하게 추정하는 방법이 있지만, 여기서는 스코어러를 중점적으로 살펴봅니다.
스코어러가 주어지면 Driverless AI는 해당 스코어러에 대해 가능한 최고의 점수를 얻도록 파이프라인을 최적화합니다. 회귀 분석 문제의 기본 스코어러는 RMSE(Root Mean Squared Error)이며, 여기서 0은 가능한 최고의 값입니다. 예를 들어 4개의 행이 포함된 데이터 세트의 경우, 실제 목표 값은 [1, 1, 10, 0]이지만 예측 값이 [2, 3, 4, -1]이면 RMSE는 sqrt ((1+4+36+1)/4)이며 전체 점수는 예측 실패가 됩니다. Driverless AI는 세 번째 데이터 포인트에 대한 예측을 개선하는 데 집중할 것이며, 예측하기 어려운 outliers가 데이터에 있을 경우 이는 매우 어려울 수 있습니다. outliers가 크게 중요하지 않다면 MAE(Mean Absolute Error)와 같은 메트릭을 사용해 더 나은 결과를 얻을 수 있습니다. 이 경우, MAE는 (1+2+6+1)/4이며 최적화 프로세스는 모든 오류를 동일하게(선형적으로) 고려합니다. outliers에 대해 강건한 또 다른 스코어러는 RMSLE(Root Mean Square Logarithmic Error)로, RMSE와 비슷하지만 실제 값과 예측 값에 로그를 적용한 후 양수 값으로 제한됩니다. 가격 예측의 경우 MAPE(Mean Absolute Percentage Error) 또는 MER(Median Absolute Percentage Error)과 같은 스코어러가 유용하지만 0 또는 작은 양수 값일 때 문제가 있습니다. 이 문제를 개선한 것이 SMAPE(Symmetric Mean Absolute Percentage Error)입니다.
분류 문제의 경우 기본 스코어러는 불균형 문제에 대한 AUC(area under the receiver operating characteristic curve) 또는 LOGLOSS(logarithmic loss)입니다. LOGLOSS는 올바른 확률을 얻는 데 중점을 두는 반면(잘못된 확률에 강력한 벌점 부과), AUC는 순위 문제를 위한 스코어러입니다. Gini는 AUC와 유사하지만 회귀 분석 문제의 순위(불평등)의 품질을 측정합니다. 일반적인 불균형 분류 문제의 경우 AUCPR 및 MCC가 적절한 방법이며 F05, F1, F2는 재현율과 정밀도의 균형을 맞추도록 설계되었습니다.
다양한 스코어러를 사용해 실험하고 결과 모델에 미치는 영향을 연구하는 것이 좋습니다. Driverless AI의 진단 페이지에서는 학습 중에 사용한 스코어러에 관계없이 특정 모델에 대해 적용 가능한 모든 점수를 계산할 수 있습니다.
노브 설정 팁¶
H2O Driverless AI에서는 상세 설정을 통해 각각의 실험을 아주 세부적으로 설정할 수 있습니다. 그러나 가장 중요한 컨트롤은 정확도, 시간, 해석력을 제어하는 세 개의 노브입니다. 일반적으로 더 많은 데이터, 홀드아웃 세트 및 매개변수 튜닝과 고급 기술을 사용하여 정확도를 높이 설정할수록 모델 일반화 성능 추정이 향상됩니다. 시간을 높게 설정하면 실험을 최적의 솔루션으로 수렴하는 데 더 많은 시간을 확보할 수 있습니다. 높은 해석력 설정은 변수 가공을 줄이고 더 간단한 모델을 사용하여 모델의 복잡성을 줄입니다. 일반적으로 1/1/10으로 설정하면 가장 간단하고 가장 덜 정확한 모델링 파이프라인이 되고, 10/10/1로 설정하면 가장 복잡하고 시간이 많이 걸리는 실험이 됩니다. 대개 7/5/5 정도의 설정을 사용하면 충분하며, 기본 설정으로 시작하는 것이 좋습니다. 실험을 시작하기 전에 GUI 왼쪽에 있는 실험 미리보기를 검토하는 것이 좋습니다. 설정을 미세 조정하여 전체 시간을 절약할 수 있습니다.
‘Finish’를 클릭하여 배포 가능한 최종 파이프라인을 얻거나 ‘Abort’를 클릭하여 실험을 즉시 중단하는 등 언제든지 실험을 조기 종료할 수 있습니다. 두 경우 모두, 이후에 ‘Restart from last Checkpoint(마지막 체크 포인트에서 다시 시작)’ 또는 ‘ Retrain Final Pipeline(최종 파이프라인 다시 학습)’을 사용하여 실험을 이어서 계속할 수 있으며, 언제든지 노브를 돌려(또는 상세 설정을 수정하여) 요구 사항에 맞게 조정할 수 있습니다.
실험 실행 팁¶
H2O Driverless AI는 표 형식의 학습 데이터에서 매우 정확한 모델링 파이프라인을 생성하기 위한 자동 기계학습 플랫폼입니다. 파이프라인의 예측 성능은 학습 데이터와 파이프라인 매개변수(변수 가공 및 모델링의 세부 정보)의 함수입니다. 실험 중에 Driverless AI는 홀드아웃(《검증》) 데이터에 대한 후보 파이프라인을 스코어링하여 이러한 매개변수를 자동으로 튜닝합니다. 이 중요한 검증 데이터는 사용자(전문가)가 제공하거나 Driverless AI가 자동으로 생성(무작위, 시간 기반 또는 폴드 기반)합니다. 최종 파이프라인이 생성되면 일반화 성능을 추정하기 위한 또 다른 홀드아웃 데이터 세트(《테스트 데이터》)에 대해 파이프라인을 채점합니다. 학습, 검증, 테스트 데이터 세트(《검증 체계》)의 출처를 파악하는 것은 기계학습의 성공에 대단히 중요하며, 사용 사례에 적합한 검증 체계를 만들 수 있도록 사용자의 피드백과 제안을 환영합니다.
상세 설정 팁¶
H2O Driverless AI는 각 실험을 맞춤 설정할 수 있는 다양한 ‘상세 설정’을 제공합니다. 예를 들어 ‘ Feature engineering effort(특성 가공 작업)’ 또는 ‘’Max. feature interaction depth (최대 특성 상호작용 깊이)’의 값을 줄이거나 ‘Target Encoding(대상 인코딩)’을 비활성화하여 변수 가공의 양을 제한할 수 있습니다. 또한 가공된 변수에 대한 학습에 사용할 모델 유형을 선택할 수도 있습니다(XGBoost, LightGBM, GLM, TensorFlow, FTRL, RuleFit 등). 선택한 time_column에서 오류 메시지가 발생하는 시계열 문제의 경우(현재, 일반적이지 않은 시간 구조에서 이러한 문제가 발생할 수 있으며, 개선된 버전을 개발 중입니다), ‘시계열 지연 기반 레시피’를 비활성화할 수 있습니다. Driverless AI는 대신 시간 순서에 따라 학습/검증 분할을 생성하며, 시간 열이 중요한 경우에 모델의 성능을 높일 수 있습니다.
체크포인팅 팁¶
Driverless AI는 동일한 데이터 세트에 여러 실험을 실행할 때 변수 가공 및 모델 튜닝 속도를 높이기 위해 실험 체크포인팅 옵션을 제공합니다. 기본적으로 H2O Driverless AI는 이전의 모든 실험(중단된 실험 포함)을 자동으로 스캔하여 다시 시작할 최적의 체크포인트를 찾습니다. 실험 목록 페이지의 “Restart from Last Checkpoint(마지막 체크포인트에서 다시 시작)》를 사용하여 새 실험을 다시 시작할 특정한 이전 실험을 선택할 수 있습니다(오른쪽의 노란색 3줄 막대 클릭). 실험을 처음부터 시작하려면 상세 설정의 ‘Feature Brain Level’(또는 구성 파일의 feature_brain_level)을 0으로 설정하여 체크포인팅 기능을 비활성화할 수 있습니다.
텍스트 데이터 팁¶
텍스트(문자열) 열이 포함된 데이터 세트의 경우(각 값은 몇 단어, 단락 또는 전체 문서가 될 수 있음), Driverless AI는 단어 모음, tf-idf, 특이값 분해, out-of-fold 가능도 추정값을 기반으로 NLP 특성을 자동으로 생성합니다. 1.3 이상 버전에서, 상세 설정의 TensorFlow를 활성화하면 CNN(Convolutional Neural Net) 기반으로 한 학습된 word embeddings으로 예측 accuracy를 더욱 향상시킬 수 있습니다. 감정 분석, 문서 분류, 일반 텍스트 데이터 세트에 이 기능을 사용해 보십시오.