Bagikan melalui


AutoML in Fabric (pratinjau)

AutoML (Automated Pembelajaran Mesin) adalah kumpulan metode dan alat yang mengotomatiskan pelatihan dan pengoptimalan model pembelajaran mesin dengan sedikit keterlibatan manusia. Tujuan AutoML adalah untuk menyederhanakan dan mempercepat proses memilih model pembelajaran mesin dan hiperparameter terbaik untuk himpunan data tertentu, yang biasanya menuntut banyak keterampilan dan daya komputasi.

Penting

Fitur ini dalam pratinjau.

Dalam Fabric, ilmuwan data dapat menggunakan flaml.AutoML untuk mengotomatiskan tugas pembelajaran mesin mereka.

AutoML dapat membantu profesional dan pengembang ML dari berbagai sektor untuk:

  • Membangun solusi ML dengan pengkodian minimal
  • Mengurangi waktu dan biaya
  • Menerapkan praktik terbaik ilmu data
  • Memecahkan masalah dengan cepat dan efisien

Alur kerja AutoML

flaml.AutoML adalah kelas untuk AutoML berdasarkan tugas. Ini dapat digunakan sebagai estimator gaya Scikit-learn dengan metode yang biasa cocok dan prediksi.

Untuk memulai uji coba AutoML, pengguna hanya perlu menyediakan data pelatihan dan jenis tugas. Dengan pengalaman MLflow terintegrasi di Fabric, pengguna juga dapat memeriksa berbagai eksekusi yang dicoba dalam uji coba untuk melihat bagaimana model akhir dipilih.

Data pelatihan

Di Fabric, pengguna dapat meneruskan jenis input berikut ke fungsi AutoML fit :

  • Numpy Array: Saat data input disimpan dalam array Numpy, data tersebut diteruskan sebagai fit() X_train dan y_train.

  • Dataframe Pandas: Saat data input disimpan dalam dataframe Pandas, dataframe tersebut diteruskan ke fit() baik sebagai X_train dan y_train, atau sebagai dataframe dan label.

  • Panda pada dataframe Spark: Ketika data input disimpan sebagai dataframe Spark, dataframe dapat dikonversi menjadi Pandas pada dataframe menggunakan to_pandas_on_spark() lalu diteruskan Spark ke fit() sebagai dataframe dan label.

    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)
    

Masalah pembelajaran mesin

Pengguna dapat menentukan tugas pembelajaran mesin menggunakan task argumen . Ada berbagai tugas pembelajaran mesin yang didukung, termasuk:

  • Klasifikasi: Tujuan utama model klasifikasi adalah untuk memprediksi kategori data baru mana yang termasuk dalam berdasarkan pembelajaran dari data pelatihannya. Contoh klasifikasi umum termasuk deteksi penipuan, pengenalan tulisan tangan, dan deteksi objek.
  • Regresi: Model regresi memprediksi nilai output numerik berdasarkan prediktor independen. Dalam regresi, tujuannya adalah untuk membantu membangun hubungan di antara variabel prediktor independen dengan memperkirakan bagaimana satu variabel berdampak pada yang lain. Misalnya, harga mobil berdasarkan fitur seperti, jarak tempuh gas, peringkat keamanan, dll.
  • Prakiraan Rangkaian Waktu: Ini digunakan untuk memprediksi nilai di masa mendatang berdasarkan titik data historis yang diurutkan menurut waktu. Dalam rangkaian waktu, data dikumpulkan dan dicatat secara berkala selama periode tertentu, seperti harian, mingguan, bulanan, atau tahunan. Tujuan prakiraan rangkaian waktu adalah untuk mengidentifikasi pola, tren, dan musiman dalam data lalu menggunakan informasi ini untuk membuat prediksi tentang nilai di masa mendatang.

Untuk mempelajari selengkapnya tentang tugas lain yang didukung di FLAML, Anda dapat mengunjungi dokumentasi tentang tugas AutoML di FLAML.

Input opsional

Berikan berbagai batasan dan input untuk mengonfigurasi uji coba AutoML Anda.

Kendala

Saat membuat uji coba AutoML, pengguna juga dapat mengonfigurasi batasan pada proses AutoML, argumen konstruktor dari estimator potensial, jenis model yang dicoba di AutoML, dan bahkan batasan pada metrik uji coba AutoML.

Misalnya, kode di bawah ini memungkinkan pengguna menentukan batasan metrik pada uji coba 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)

Untuk mempelajari selengkapnya tentang konfigurasi ini, Anda dapat mengunjungi dokumentasi tentang konfigurasi di FLAML.

Metrik pengoptimalan

Selama pelatihan, fungsi AutoML membuat banyak uji coba, yang mencoba algoritma dan parameter yang berbeda. Alat AutoML melakukan iterasi melalui algoritma ML dan hiperparameter. Dalam proses ini, setiap iterasi membuat model dengan skor pelatihan. Semakin baik skor untuk metrik yang ingin Anda optimalkan, semakin baik model dianggap "sesuai" data Anda. Metrik pengoptimalan ditentukan melalui metric argumen . Ini dapat berupa string, yang mengacu pada metrik bawaan, atau fungsi yang ditentukan pengguna.

Metrik pengoptimalan AutoML

Penyetelan paralel

Dalam beberapa kasus, Anda mungkin ingin mempercepat uji coba AutoML Anda dengan menggunakan Apache Spark untuk menyejajarkan pelatihan Anda. Untuk kluster Spark, secara default, FLAML meluncurkan satu uji coba per eksekutor. Anda juga dapat menyesuaikan jumlah uji coba bersamaan dengan menggunakan n_concurrent_trials argumen .

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

Untuk mempelajari selengkapnya tentang cara menyejajarkan jejak AutoML, Anda dapat mengunjungi dokumentasi FLAML untuk pekerjaan Spark paralel.

Lacak dengan MLflow

Anda juga dapat menggunakan integrasi Fabric MLflow untuk menangkap metrik, parameter, dan metrik jejak yang dijelajahi.

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)

Model yang didukung

AutoML in Fabric mendukung model berikut:

Klasifikasi Regresi Prakiraan Rangkaian Waktu
(PySpark) Pengklasifikasi Pohon Yang Didorong Gradien (GBT) (PySpark) Regresi Kelangsungan Hidup Waktu Kegagalan Dipercepat (AFT) Arimax
(PySpark) SVM Linier (PySpark) Regresi Linier Umum AutoARIMA
(PySpark) Naive Bayes (PySpark) Regresi Pohon yang Ditingkatkan Gradien (GBT) Tengah
(Synapse) LightGBM (PySpark) Regresi Linier CatBoost
CatBoost (Synapse) LightGBM Pohon Keputusan
Pohon Keputusan CatBoost EksponensialSmoothing
Pohon yang Sangat Acak Pohon Keputusan Pohon yang Sangat Acak
Gradient Boosting Jaring Elastis PrakiraanTCN
K Nearest Neighbors Pohon yang Sangat Acak Gradient Boosting
Light GBM Gradient Boosting Holt-Winters Exponential Smoothing
Linear SVC K Nearest Neighbors K Nearest Neighbors
Regresi Logistik LARS Lasso LARS Lasso
Regresi Logistik dengan Regularisasi L1/L2 Light GBM Light GBM
Naive Bayes Regresi Logistik dengan Regularisasi L1/L2 Naive
Hutan Acak Hutan Acak Orbit
Hutan Acak di Spark Hutan Acak di Spark Prophet
Stochastic Gradient Descent (SGD) Stochastic Gradient Descent (SGD) Hutan Acak
Klasifikasi Vektor Dukungan (SVC) XGBoost SARIMAX
XGboost XGBoost dengan Kedalaman Terbatas Penyelamat Musiman
XGBoost dengan Kedalaman Terbatas MusimanNaif
Temporal Fusion Transformer
XGBoost
XGBoost untuk Time Series
XGBoost dengan Kedalaman Terbatas untuk Time Series
ElasticNet

Memvisualisasikan hasil

Modul ini flaml.visualization menyediakan fungsi utilitas untuk merencanakan proses pengoptimalan menggunakan Plotly. Dengan memanfaatkan Plotly, pengguna dapat secara interaktif menjelajahi hasil eksperimen AutoML mereka. Untuk menggunakan fungsi plot ini, berikan objek atau flaml.tune.tune.ExperimentAnalysis yang dioptimalkan flaml.AutoML sebagai input.

Anda bisa menggunakan fungsi berikut dalam buku catatan Anda:

  • plot_optimization_history: Plot riwayat pengoptimalan semua uji coba dalam eksperimen.
  • plot_feature_importance: Plot kepentingan untuk setiap fitur dalam himpunan data.
  • plot_parallel_coordinate: Memplot hubungan parameter dimensi tinggi dalam eksperimen.
  • plot_contour: Plot hubungan parameter sebagai plot kontur dalam eksperimen.
  • plot_edf: Plot nilai tujuan EDF (fungsi distribusi empiris) eksperimen.
  • plot_timeline: Plot garis waktu eksperimen.
  • plot_slice: Plot hubungan parameter sebagai plot ipotong dalam sebuah penelitian.
  • plot_param_importance: Plot kepentingan hyperparameter eksperimen.