다음을 통해 공유


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 최적화 메트릭은 인수를 통해 지정됩니다. 기본 제공 메트릭을 참조하는 문자열 또는 사용자 정의 함수일 수 있습니다.

AutoML 최적화 메트릭

병렬 튜닝

경우에 따라 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: 실험의 하이퍼 매개 변수 중요도를 표시합니다.