Fabric 中的 AutoML (預覽)
AutoML (自動化 機器學習) 是一組方法與工具,可將機器學習模型定型和優化自動化,幾乎沒有人為參與。 AutoML 的目標是簡化和加快為給定數據集選擇最佳機器學習模型和超參數的程式,這通常需要大量的技能和運算能力。
在 Fabric 中,數據科學家可用來 flaml.AutoML
將其機器學習工作自動化。
AutoML 可協助來自不同部門的 ML 專業人員和開發人員:
- 使用最少程式代碼建置 ML 解決方案
- 縮短時間和成本
- 套用數據科學最佳做法
- 快速且有效率地解決問題
AutoML 工作流程
flaml.AutoML
是以工作為基礎的 AutoML 類別。 其可作為 Scikit-learn 樣式估算器,搭配一般大小和預測方法使用。
若要啟動 AutoML 試用版,使用者只需要提供定型數據和工作類型。 透過 Fabric 中的整合式 MLflow 體驗,使用者也可以檢查試用版中嘗試的不同執行,以查看最終模型的選擇方式。
訓練資料
在 Fabric 中,使用者可以將下列輸入類型傳遞至 AutoML fit
函式:
Numpy Array:當輸入資料儲存在 Numpy 陣列中時,它會以X_train和y_train的形式傳遞至
fit()
。Pandas 數據框架:當輸入數據儲存在 Pandas 數據框架中時,它會傳遞至
fit()
X_train 和 y_train,或做為數據框架和標籤。Spark 資料框架上的 Pandas:當輸入資料儲存為 Spark 資料框架時,可以使用 將它轉換成 Spark 資料框架
to_pandas_on_spark()
上的 Pandas,然後以數據框架和標籤的形式傳遞至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)貝氏機率 | (PySpark)漸層提升樹狀結構 (GBT) 回歸 | 平均 |
(Synapse)LightGBM | (PySpark)線性回歸 | CatBoost |
CatBoost | (Synapse)LightGBM | 決策樹 |
決策樹 | CatBoost | ExponentialSmoothing |
極度隨機樹狀結構 | 決策樹 | 極度隨機樹狀結構 |
漸層停駐提升 | 彈性網路 | ForecastTCN |
K 最近鄰演算法 | 極度隨機樹狀結構 | 漸層停駐提升 |
Light GBM | 漸層停駐提升 | Holt-Winters 指數平滑 |
線性 SVC | K 最近鄰演算法 | K 最近鄰演算法 |
羅吉斯迴歸 | LARS Lasso | LARS Lasso |
使用 L1/L2 正規化進行羅吉斯回歸 | Light GBM | Light GBM |
貝氏機率分類 | 使用 L1/L2 正規化進行羅吉斯回歸 | Naive |
隨機樹系 | 隨機樹系 | 軌跡 |
Spark 上的隨機樹系 | Spark 上的隨機樹系 | Prophet |
隨機梯度下降 (SGD) | 隨機梯度下降 (SGD) | 隨機樹系 |
支援向量分類 (SVC) | XGBoost | SARIMAX |
XGboost | 具有有限深度的 XGBoost | SeasonalAverage |
具有有限深度的 XGBoost | SeasonalNaive | |
時態融合轉換器 | ||
XGBoost | ||
時間序列的 XGBoost | ||
具有時間序列有限深度的 XGBoost | ||
ElasticNet |
將結果可視化
模組 flaml.visualization
提供公用程式函式,以使用 Plotly 繪製優化程式。 藉由利用 Plotly,用戶可以以互動方式探索其 AutoML 實驗結果。 若要使用這些繪圖函式,只要提供優化 flaml.AutoML
或 flaml.tune.tune.ExperimentAnalysis
物件做為輸入即可。
您可以在筆記本內使用下列函式:
plot_optimization_history
:繪製實驗中所有試驗的優化歷程記錄。plot_feature_importance
:為數據集中的每個功能繪製重要性。plot_parallel_coordinate
:在實驗中繪製高維度參數關聯性。plot_contour
:將參數關聯性繪製為實驗中的輪廓圖。plot_edf
:繪製實驗的目標值EDF(經驗分佈函數)。plot_timeline
:繪製實驗的時間軸。plot_slice
:將參數關聯性繪製為研究中的配量圖。plot_param_importance
:繪製實驗的超參數重要性。
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應