訓練視覺效果 (預覽)
超參數試用或 AutoML 試用會搜尋機器學習模型的最佳參數。 每個試用都包含多個執行,其中每個執行都會評估特定的參數組合。 使用者可以在 Fabric 中使用 ML 實驗項目來監視這些執行。
flaml.visualization
模組提供函數來繪製及比較 FLAML 中的執行。 使用者可以使用 Plotly 與其 AutoML 實驗繪圖互動。 若要使用這些函數,使用者必須輸入其最佳化的 flaml.AutoML
或 flaml.tune.tune.ExperimentAnalysis
物件。
本文將教導您如何使用 flaml.visualization
模組來分析及探索 AutoML 試用結果。 您也可以針對超參數試用遵循相同的步驟。
重要
此功能處於預覽。
建立 AutoML 試用
AutoML 提供一套自動化程序,可識別資料集的最佳機器學習管線,讓整個模型化程序更加簡單且更精確。 本質上,它省去了手動調整不同模型和超參數的麻煩。
在下列程式碼資料格中,我們將:
- 載入 Iris 資料集。
- 將資料分割成訓練集和測試集。
- 啟動 AutoML 試用以適應訓練資料。
- 使用
flaml.visualization
的視覺效果探索 AutoML 試用結果。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from flaml import AutoML
# Load the Iris data and split it into train and test sets
x, y = load_iris(return_X_y=True, as_frame=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7654321)
# Create an AutoML instance and set the parameters
automl = AutoML()
automl_settings = {
"time_budget": 10, # Time limit in seconds
"task": "classification", # Type of machine learning task
"log_file_name": "aml_iris.log", # Name of the log file
"metric": "accuracy", # Evaluation metric
"log_type": "all", # Level of logging
}
# Fit the AutoML instance on the training data
automl.fit(X_train=x_train, y_train=y_train, **automl_settings)
將實驗結果可視化
執行 AutoML 試用版之後,需要將結果可視化,以分析模型的執行效果以及其行為方式。 在本文件的這個部分中,我們會說明如何針對此目的使用 FLAML 程式庫中的內建公用程式。
匯入可視化模組
若要存取這些可視化公用程式,我們執行下列匯入命令:
import flaml.visualization as fviz
最佳化歷程記錄
最佳化歷程記錄繪圖在 x 軸上通常顯示試用/迭代次數,在 y 軸上顯示效能計量 (例如精確度、RMSE 等)。 當試用次數增加時,您會看到一個線條或散佈圖,指出每個試用的效能。
fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()
以下是結果圖:
特徵重要度
特徵重要度繪圖是功能強大的可視化工具,可讓您了解不同輸入特徵在判斷模型預測方面的重要性。
fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()
以下是結果圖:
平行座標圖
平行座標圖是一種可視化工具,透過繪製與變數或超參數對應的多個垂直線 (軸) 來表示多維度資料,而資料點繪製為這些軸上的連接線。 在 AutoML 或微調實驗的背景中,它有助於可視化和分析不同超參數組合的效能。 透過追蹤高效能組態的路徑,可以辨別超參數選擇及其互動中的模式或趨勢。 此繪圖有助於了解哪些組合會導致最佳效能、找出潛在區域以進行進一步探索,以及識別不同超參數之間的任何權衡。
此公用程式接受下列其他參數:
learner
:指定您想要在實驗中學習的學習者。 此參數僅適用於 AutoML 實驗結果。 將它保留為空白,系統會在整個實驗中選擇最佳學習者。params
:指定要顯示的超參數清單。 將它保留為空白,系統會顯示所有可用的超參數。
fig = fviz.plot_parallel_coordinate(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "parallel_coordinate", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
以下是結果圖:
輪廓圖
輪廓圖會可視化兩個維度中的三維資料,其中 x 和 y 軸代表兩個超參數,而輪廓線或填滿的輪廓描繪效能計量層級 (例如精確度或損失)。 在 AutoML 或微調實驗情況中,輪廓圖有助於了解兩個超參數之間的關聯性,以及它們對模型效能的綜合影響。
透過檢查輪廓線的密度和位置,可以識別效能最佳化所在的超參數空間的區域,確定超參數之間的潛在權衡,並深入了解其互動。 此視覺效果可協助精簡搜尋空間和微調程序。
此公用程式接受下列引數:
learner
:指定您想要在實驗中學習的學習者。 此參數僅適用於 AutoML 實驗結果。 將它保留為空白,系統會在整個實驗中選擇最佳學習者。params
:指定要顯示的超參數清單。 將它保留為空白,系統會顯示所有可用的超參數。
fig = fviz.plot_contour(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "contour", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
以下是結果圖:
經驗分佈函數
經驗分佈函數 (EDF) 繪圖,通常可視化為階梯函數,代表資料點小於或等於特定值的累計概率。 在 AutoML 或微調實驗中,可以使用 EDF 繪圖來可視化不同超參數組態之間的模型效能分佈。
透過觀察各點曲線的陡峭度或平整度,可以分別了解良好或不良模型效能的集中程度。 此視覺效果可洞察微調程序的整體效果,強調大部分嘗試的組態是否產生令人滿意的結果,還是只有少數組態脫穎而出。
注意
針對 AutoML 實驗,將在訓練期間套用多個模型。 每個學習者的試用都表示為最佳化系列。 針對超參數微調實驗,只會評估單一學習者。 不過,您可以提供額外的微調實驗,以查看每個學習者的趨勢。
fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()
以下是結果圖:
時間軸繪圖
時間軸繪圖,通常表示為甘特圖或一系列長條圖,它會可視化一段時間內工作的開始、持續時間和完成。 在 AutoML 或微調實驗的情況中,時間軸繪圖可以展示各種模型評估的進度及其各自的持續時間,並隨時間進行繪製。 透過觀察此繪圖,使用者可以掌握搜尋程序的效率,找出任何潛在的瓶頸或閑置期間,並了解不同超參數評估的時間動態。
fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()
以下是結果圖:
切片圖
在研究中將參數關聯性繪製為切片圖。
此公用程式接受下列引數:
learner
:指定您想要在實驗中學習的學習者。 此參數僅適用於 AutoML 實驗結果。 將它保留為空白,系統會在整個實驗中選擇最佳學習者。params
:指定要顯示的超參數清單。 將它保留為空白,系統會顯示所有可用的超參數。
fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()
以下是結果圖:
超參數重要性
超參數重要性繪圖會根據其對 AutoML 或微調實驗中模型效能的影響,以可視化方式對超參數排名。 通常顯示為橫條圖,它會量化每個超參數對目標計量的影響。 透過檢查此繪圖,從業者可以辨別哪些超參數在判斷模型結果方面至關重要,哪些超參數具有最小影響。
此公用程式接受下列引數:
learner
:指定您想要在實驗中學習的學習者。 此參數僅適用於 AutoML 實驗結果。 將它保留為空白,系統會在整個實驗中選擇最佳學習者。params
:指定要顯示的超參數清單。 將它保留為空白,系統會顯示所有可用的超參數。
fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()
以下是結果圖: