Fabric의 AutoML(미리 보기)
자동화된 Machine Learning(AutoML)은 사람의 개입이 거의 없는 기계 학습 모델 학습 및 최적화를 자동화하는 방법 및 도구 컬렉션입니다. AutoML의 목적은 일반적으로 많은 기술과 컴퓨팅 능력을 요구하는 지정된 데이터 세트에 가장 적합한 기계 학습 모델 및 하이퍼 매개 변수를 선택하는 프로세스를 단순화하고 가속화하는 것입니다.
Important
이 기능은 프리뷰로 제공됩니다.
Fabric에서 데이터 과학자는 flaml.AutoML
을(를) 기계 학습 작업을 자동화하는 데 사용할 수 있습니다.
AutoML은 다양한 섹터의 ML 전문가 및 개발자가 다음 사항을 수행할 수 있도록 지원합니다.
- 최소한의 코딩을 통한 ML 솔루션 빌드
- 시간 및 비용 절감
- 데이터 과학 모범 사례 적용
- 빠르고 효율적으로 문제 해결
AutoML 워크플로
flaml.AutoML
은(는) 작업을 기반으로 하는 AutoML의 클래스입니다. 일반적인 맞춤 및 예측 메서드를 사용하여 Scikit-learn 스타일 추정기로 사용할 수 있습니다.
AutoML 평가판을 시작하려면 사용자는 학습 데이터 및 작업 유형만 제공해야 합니다. Fabric의 통합 MLflow 환경을 통해 사용자는 평가판에서 시도한 다양한 실행을 검사하여 최종 모델이 선택된 방법을 확인할 수 있습니다.
학습 데이터
Fabric에서 사용자는 AutoML fit
함수에 다음 입력 형식을 전달할 수 있습니다.
Numpy 배열: 입력 데이터가 Numpy 배열에 저장되면 X_train 및 y_train으로
fit()
에 전달됩니다.Pandas 데이터 프레임: 입력 데이터가 Pandas 데이터 프레임에 저장되면
fit()
에 X_train 및 y_train 또는 데이터 프레임 및 레이블로 전달됩니다.Spark 데이터 프레임의 Pandas: 입력 데이터가 Spark 데이터 프레임으로 저장되면
Pandas
을(를) 사용하여Spark
을(를)to_pandas_on_spark()
데이터 프레임으로 변환한 다음 데이터 프레임과 레이블로fit()
에 전달할 수 있습니다.from flaml.automl.spark.utils import to_pandas_on_spark psdf = to_pandas_on_spark(sdf) automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
기계 학습 문제
사용자는 task
인수를 사용하여 기계 학습 작업을 지정할 수 있습니다. 다음과 같은 다양한 지원되는 기계 학습 작업이 있습니다.
- 분류: 분류 모델의 주요 목표는 학습 데이터로부터의 학습을 기반으로 하여 새 데이터가 분류될 범주를 예측하는 것입니다. 일반적인 분류 예로 사기 탐지, 필기 인식 및 개체 검색이 있습니다.
- 회귀: 회귀 모델은 독립 예측 변수를 기반으로 하여 숫자 출력 값을 예측합니다. 회귀 분석이 목표는 한 변수가 다른 변수에 미치는 영향을 추정하여 이러한 독립 예측 변수 간의 관계를 설정하는 데 도움을 주는 것입니다. 예를 들어 가스 연비, 안전 등급 등과 같은 기능을 기반으로 하는 자동차 가격이 있습니다.
- 시계열 예측: 시간별로 정렬된 기록 데이터 요소를 기반으로 미래 값을 예측하는 데 사용됩니다. 시계열에서 데이터는 매일, 매주, 매월 또는 매년과 같이 특정 기간 동안 정기적으로 수집되고 기록됩니다. 시계열 예측의 목적은 데이터의 패턴, 추세 및 계절성을 식별한 다음 이 정보를 사용하여 미래 가치에 대한 예측을 만드는 것입니다.
FLAML에서 지원되는 다른 작업에 대해 자세히 알아보려면 FLAML의 AutoML 작업에 대한 설명서를 참조하세요.
선택적 입력
다양한 제약 조건 및 입력을 제공하여 AutoML 평가판을 구성합니다.
제약 조건
AutoML 평가판을 만들 때 사용자는 AutoML 프로세스에 대한 제약 조건, 잠재적 추정기의 생성자 인수, AutoML에서 시도된 모델 유형 및 AutoML 평가판의 메트릭에 대한 제약 조건도 구성할 수 있습니다.
예를 들어 아래 코드를 사용하면 사용자가 AutoML 평가판에서 메트릭 제약 조건을 지정할 수 있습니다.
metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)
이러한 구성에 대해 자세히 알아보려면 FLAML의 구성에 대한 설명서를 참조하세요.
최적화 메트릭
학습 중에 AutoML 함수는 다양한 알고리즘과 매개 변수를 시도하는 많은 평가판을 만듭니다. AutoML 도구는 ML 알고리즘 및 하이퍼 매개 변수를 반복합니다. 이 프로세스에서 각 반복은 학습 점수가 있는 모델을 만듭니다. 최적화할 메트릭의 점수가 높을수록 모델이 데이터에 더 "적합한" 것으로 간주됩니다. metric
최적화 메트릭은 인수를 통해 지정됩니다. 기본 제공 메트릭을 참조하는 문자열 또는 사용자 정의 함수일 수 있습니다.
병렬 튜닝
경우에 따라 Apache Spark를 사용하여 학습을 병렬화하여 AutoML 평가판을 신속하게 수행할 수 있습니다. Spark 클러스터의 경우 기본적으로 FLAML은 실행기당 하나의 평가판을 시작합니다. n_concurrent_trials
인수를 사용하여 동시 평가판 수를 사용자 지정할 수도 있습니다.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
AutoML 내역을 병렬화하는 방법에 대한 자세한 내용은 병렬 Spark 작업에 대한 FLAML 설명서를 참조하세요.
MLflow를 통한 추적
패브릭 MLflow 통합을 사용하여 탐색된 트레일의 메트릭, 매개 변수 및 메트릭을 캡처할 수도 있습니다.
import mlflow
mlflow.autolog()
with mlflow.start_run(nested=True):
automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")
# You can also provide a run_name pre-fix for the child runs
automl_experiment = flaml.AutoML()
automl_settings = {
"metric": "r2",
"task": "regression",
"use_spark": True,
"mlflow_exp_name": "test_doc",
"estimator_list": [
"lgbm",
"rf",
"xgboost",
"extra_tree",
"xgb_limitdepth",
], # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)
지원되는 모델
Fabric의 AutoML은 다음 모델을 지원합니다.
분류 | 재발 | 시계열 예측 |
---|---|---|
(PySpark) 경사 부스팅 트리(GBT) 분류자 | (PySpark) 가속 실패 시간(AFT) 존속 회귀 | Arimax |
(PySpark) 선형 SVM | (PySpark) 일반화된 선형 회귀 | AutoARIMA |
(PySpark) Naive Bayes | (PySpark) 경사 부스팅 트리(GBT) 회귀 | 평균 |
(Synapse) LightGBM | (PySpark) 선형 회귀 | CatBoost |
CatBoost | (Synapse) LightGBM | 의사 결정 트리 |
의사 결정 트리 | CatBoost | ExponentialSmoothing |
Extremely Randomized Trees | 의사 결정 트리 | Extremely Randomized Trees |
경사 부스팅 | Elastic Net | ForecastTCN |
K Nearest Neighbors | Extremely Randomized Trees | 경사 부스팅 |
Light GBM | 경사 부스팅 | 홀트-윈터 지수 스무딩 |
Linear SVC | K Nearest Neighbors | K Nearest Neighbors |
로지스틱 회귀 | LARS Lasso | LARS Lasso |
L1/L2 정규화를 사용하는 로지스틱 회귀 분석 | Light GBM | Light GBM |
Naive Bayes | L1/L2 정규화를 사용하는 로지스틱 회귀 분석 | Naive |
임의 포리스트 | Random Forest | 궤도 |
Spark의 임의 포리스트 | Spark의 임의 포리스트 | Prophet |
SGD(Stochastic Gradient Descent) | SGD(Stochastic Gradient Descent) | Random Forest |
SVC(Support Vector Classification) | XGBoost | SARIMAX |
XGboost | 깊이가 제한된 XGBoost | SeasonalAverage |
깊이가 제한된 XGBoost | SeasonalNaive | |
Temporal Fusion 변환기 | ||
XGBoost | ||
시계열용 XGBoost | ||
시계열에 대한 깊이가 제한된 XGBoost | ||
ElasticNet |
결과 시각화
flaml.visualization
모듈은 Plotly를 사용하여 최적화 프로세스를 그리기 위한 유틸리티 함수를 제공합니다. Plotly를 활용하여 사용자는 AutoML 실험 결과를 대화형으로 탐색할 수 있습니다. 이러한 그리기 함수를 사용하려면 최적화된 flaml.AutoML
또는 flaml.tune.tune.ExperimentAnalysis
개체를 입력으로 제공합니다.
Notebook 내에서 다음 함수를 사용할 수 있습니다.
plot_optimization_history
: 실험의 모든 평가판에 대한 최적화 기록을 플롯합니다.plot_feature_importance
: 데이터 세트의 각 기능에 대한 중요도를 플롯합니다.plot_parallel_coordinate
: 실험에서 고차원 매개 변수 관계를 플롯합니다.plot_contour
: 매개 변수 관계를 실험의 윤곽선 플롯으로 플롯합니다.plot_edf
: 실험의 목표값 EDF(경험적 분포 함수)를 플롯합니다.plot_timeline
: 실험의 타임라인을 플롯합니다.plot_slice
: 연구에서 매개 변수 관계를 슬라이스 플롯으로 표시합니다.plot_param_importance
: 실험의 하이퍼 매개 변수 중요도를 표시합니다.